我是stackoverflow
的新用户。我用c写了这段代码,我没有问题,输出也是正确的。如何使用fscanf读取c中的文件(分段错误)?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str[10];
FILE * fp;
fp = fopen ("file.txt", "w+");
fputs("We\nare\nin\n2016", fp);
rewind(fp);
fscanf(fp, "%s", str[0]);
fscanf(fp, "%s", str[1]);
printf("Read String1 |%s|\n", str[0]);
printf("Read String2 |%s|\n", str[1]);
fclose(fp);
return(0);
}
但是当我使用char * str [15]而不是char * str [10]时,结果是分段错误。哪里不对?
“str”数组中的每个指针在哪里?仅仅因为具有*未定义行为的程序似乎可行,并不意味着它是正确的。 –
为什么这是正确的str [10]?我也初始化了str [15],但没有开始工作 –
它不适用于例如'char * str [10]',这似乎是纯粹的运气似乎工作(好运或坏运气是一个观点问题)。它似乎*工作,你仍然会看似随机覆盖一些内存。请记住,不确定行为的一个可能症状是它实际上可行,不幸的是。 –