c中的分段错误。谁能告诉我如何解决?

segmentation fault in c. Can anyone tell me how to solve it?

谁能告诉我如何解决分段错误?我仍处于 class 的早期阶段。我知道分段错误与我的数组和变量“storedplain”有关。我的目的是创建一个 int 类型的数组,然后在接下来的步骤中将用户键入的所有 char 变量存储为我的代码。

    string plaintext = get_string(" plaintext: ");    
    int storedplain[] = {0};

    for(int i = 0; i < strlen(plaintext); i++)
        {
            char conversion2 = plaintext[i];
            storedplain[i] = conversion2;
        }

int storedplain[] = {0}; 等同于 int storedplain[1] = {0};.

这意味着 storedplain[i] = conversion2 将写入超过 storedplain 的末尾,因为 i < strlen(plaintext) 将导致 i 的值大于 0。

一个解决方案应该是 int storedplain[MAX_STRING] = {0}; 的路线。这只有在您知道可以返回的最大字符串大小时才有效。

最好的解决办法是使用malloc():
int * storedplain = malloc(strlen(plaintext) * sizeof(int));