首页 > 解决方案 > 为什么我在函数结束时出错?

问题描述

我在写我的 C 教程。

我有这个功能:

void sortString(char c[][5], int size) {
    char temp[] = "";

    for (int i = 0; i < size - 1; i++)
    {
        for (int j = 0; j < size - 1; j++)
        {
            if (strcmp(c[j],c[j+1]) > 0) //arr + j
            {
                strcpy(temp, c[j]);// only strcpy, assignment not works
                strcpy(c[j], c[j + 1]);
                strcpy(c[j + 1], temp);
            }
        }
    }
}

外循环结束后和函数结束时出现此错误:

Run-Time Check Failure #2 - Stack around the variable 'temp' was corrupted. 

知道为什么我在上面得到错误吗?

标签: c

解决方案


从您提到的代码中几乎没有观察到。首先,这里

char temp[] = "";

temp尺寸太小无法容纳c[j]。让它足够大,以便它可以容纳c[j]。例如

char temp[5] = "";

其次,冒泡排序内for循环迭代不正确。而不是j < size - 1使用j < size - i-1.


推荐阅读