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));
谁能告诉我如何解决分段错误?我仍处于 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));