我的档案看起来像:
123456789
我的代码给我分段错误:
#include <stdio.h>
int main(){
FILE *f;
char ch[5];
f = open("a.txt", "r");
fgets( ch, 4, f);
ch[4] = NULL;
printf("%s", ch); //Fixed
return 0;
}
我是绝对的初学者。我究竟做错了什么。我的目标是使用
fgets
读取文件的前4个字符。 最佳答案
你想做
printf("%s", ch);
对于
%
格式,参数是指向字符的指针;通过按值传递单个字符,您就是要告诉printf
将该字符的ASCII值解释为指针,这会让您大吃一惊;即,如果字符是1
(即ASCII 49),则它将在内存中的字节49处查找字符串-并且向下看通常为verboten。但是,第二,我看到您正在呼叫
open()
而不是fopen()
。您必须使用fopen()
,否则将无法获得期望的FILE*
。两者都可能会导致段错误-您需要同时修复它们。
关于c - 读取文件时出现段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9124198/