在调用 fgets 大约 20 次后,我遇到了段错误。我正在打开一个文件(不返回 null)。它的格式为:
num1: value1
num2: value2
num3: value3
然后从文件中读取行,将值存储到数组中,使用 nums 作为位置。这是段错误的代码:
编辑:声明 myArray 和行:
char myArray[3000];
char * line;
char * word;
line = (char *) malloc(100);
word = (char *) malloc(16);
while(fgets(line, 99, file)) {
printf("%s\n", line);
word = strtok(line, " :");
name = (int) strtol(word, NULL, 16);
word = strtok(NULL, " \n");
myArray[name] = word;
}
你会注意到我得到它后立即打印出来。该文件有 26 行,但它只打印 23 行,然后是 seg 错误。现在,是我对 fgets 不完全了解,还是我得到了一些不正确的合成器?我尝试为行分配更多内存,或者为单词分配更多内存。每次调用 strtok 后,我也尝试过 malloc 更多内存,但似乎没有任何东西可以解决段错误。