所以我正在尝试编写一个 c 程序,它可以读取通过命令行传递给它的文件的每一行并打印出每一行。我的代码如下所示:
#include <stdio.h>
#include <stdlib.h>
int main(void){
char num[20];
for (;;){
if((scanf("%[^\n]s", num)) != 1){
break;
}
printf("%s\n", num);
}
}
unix命令行是:./printeachline < num.txt
num.txt 包括这些行:
01 0111111119 111122222228 123400000000 1234kk444k44 oooo11111111 o dk39754i2oo 002711111116 124145245 246623 0027111111167 888888888888 100900000011
我希望打印的是 num.txt 中的每一行,但是当我输入命令时只打印第一行,即 01 0111111119。我该如何解决这个问题????
最佳答案
您的问题的答案不是如何使用 scanf()
来解决您的问题,而是使用 fgets()
来代替。 scanf()
已知容易出错,可能导致缓冲区溢出等。fgets()
是设计用于处理每一行的函数:
while (fgets(num, sizeof num, fp) != NULL)
{
printf("%s", num);
}
fp
是 num.txt
的 FILE *
指针。
关于c - 如何使用scanf读取带空格的文件的每一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704814/