使用c程序从文件中读取行

Fur*_*med 2 c

#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)

我想让程序读取完整的文件,请帮忙

Jos*_*sey 5

添加一个空格:

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与空格完全相同