#include "stdio.h"
int main(){
char str[20];
while(scanf("%19[^\n]",str)==1){
printf("%s",str);
}
return 0;
}
使用编译:
$ gcc file.c -o file
$ file < input.txt
该程序只读取文件input.txt
的第一行:
hello this is
a test that
should make it
happen
我希望程序读取完整的文件,请帮助
答案 0 :(得分:4)
添加空格:
while(scanf(" %19[^\n]",str)==1){
^
空格(不直观地)消耗任何空白区域,包括\n
,否则您将无法处理。
当然,通常使用例如更好<{1}}和fgets()
而不是sscanf()
来解析输入。
这会稍微改变您的代码逻辑,但可能会更好地捕获您的意图。任何仅尝试仅跳过scanf()
而不是所有空格的尝试,如:
\n
将失败,因为此处第二个while(scanf("%19[^\n]\n",str)==1){
与空格\n
完全相同。
答案 1 :(得分:0)
查找修改后的代码
#include <stdio.h>
int main()
{
char str[20];
while(gets(str)!=NULL)
{
printf("%s",str);
}
return 0;
}