【发布时间】:2020-07-03 07:11:45
【问题描述】:
我想使用 fscanf() 从文件中读取整行(包括空格)。 该文件如下所示:
//data.txt
lek yuen
3
wo che
5
wo che
8
wo che
5
wo che
7
sha kok
0
hin keng
9
lung hang
8
sha kok
2
sha kok
4
lung hang
8
当我使用buffer 存储它并使用printf() 显示它时,结果lek yuen 只弹出不到1 秒,整个cmd 窗口就消失了。在编译器中,它显示:Process finished with exit code 0 .
以下是我的代码:
int main() {
FILE *fp=fopen("data.txt","r");
char buffer[255];
if(fp==NULL){
perror("File not exist!\n");
exit(1);
}
fscanf(fp,"%[^\n]s",&buffer);
printf("%s",buffer);
fclose(fp);
return 0;
}
有谁知道发生了什么?非常感谢!
【问题讨论】:
-
命令窗口可能会消失,因为您从某个 IDE 运行程序并且程序刚刚完成。您只需阅读一行并打印它。如果你想阅读多行,循环会派上用场。
-
可能你在windows下,所以在执行结束时windows是关闭的,只需要在最后读取一个char/line来阻塞你的程序
-
顺便说一句:对于
fscanf,您应该使用buffer而不是&buffer。它已经具有正确的地址类型。 -
@bruno Weelll,如果您不能信任用户输入,它可能会更安全。小鲍比桌...
-
@bruno 所以不要告诉人们将用户输入用作格式字符串;-)。