【发布时间】:2017-10-14 09:25:33
【问题描述】:
我编写了一个简单的 C 程序来从 .txt 文件中读取数据并将其打印到屏幕上。
FILE *fp = fopen("words.txt", "r");
char buffer[3];
while (fscanf(fp, "%s", buffer) != EOF)
printf(" %s\n ", buffer);
printf("\n");
word.txt 里面只写了 123。现在,我运行程序时得到的输出是
123
Segmentation fault
为什么会出现分段错误,这意味着什么?
【问题讨论】:
-
char buffer[3];-->char buffer[4];,fscanf(fp, "%s", buffer)-->fscanf(fp, "%3s", buffer) -
您忘记了字符串的“\0”,word.txt 内容将在您的程序中转换为“123\0”。将缓冲区[3]更改为缓冲区[4];
-
将缓冲区 [3] 更改为缓冲区 [256] 并停止 bean 计数,(除非您在某些 RAM 受限的嵌入式系统上)。
标签: c arrays file segmentation-fault