#include "stdio.h"
int main(){
char str[20];
while(scanf("%19[^\n]",str)==1){
printf("%s",str);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译使用:
$ gcc file.c -o file
$ file < input.txt
Run Code Online (Sandbox Code Playgroud)
该程序仅读取文件的第一行input.txt:
hello this is
a test that
should make it
happen
Run Code Online (Sandbox Code Playgroud)
我想让程序读取完整的文件,请帮忙
添加一个空格:
while(scanf(" %19[^\n]",str)==1){
^
Run Code Online (Sandbox Code Playgroud)
空格(不直观地)消耗了所有空白,包括\n,否则您不会处理这些空白。
当然,通常使用egfgets()和sscanf()比scanf()解析输入更好。
这会稍微改变您的代码逻辑,但也许可以更好地捕捉您的意图。任何尝试仅跳过而\n不是全部空白的尝试,如下所示:
while(scanf("%19[^\n]\n",str)==1){
Run Code Online (Sandbox Code Playgroud)
会失败,因为这里第二个\n与空格完全相同。