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

时间:2014-03-18 15:19:52

标签: c

#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

我希望程序读取完整的文件,请帮助

2 个答案:

答案 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;
}