C编程:从文件读取和打印到控制台

时间:2017-02-06 03:46:20

标签: c file io console fgets

晚上好,

我知道有类似的问题,我一直在筛选,但这个特殊问题似乎是独一无二的。

我试图找出如何简单地将文本文件读入字符串,然后将字符串写入标准输出。我尝试了这段代码,但是当我调用puts()时,控制台中什么也没发生。 file.txt使用" hello"正确生成写的,但最后的if语句由于某些原因似乎不起作用,因为它没有达到我的测试条件。我怎样才能使这个功能化?

这是许多很多在线示例给出的代码,只是略有修改:

#include <stdio.h>

int main()
{
    FILE *fp;
    char str[60];

    fp = fopen("file.txt","w+");
    fprintf(fp,"%s","hello");
    if(fp==NULL){
        perror("Error opening file");
        return(-1);
    }
    if (fgets (str, 60, fp)!=NULL)
        puts(str);
        printf("%s","test");
    fclose(fp);
return 0;
}

3 个答案:

答案 0 :(得分:0)

编写完文件后,您必须fclose() fp并重新fopen()该文件才能阅读。

答案 1 :(得分:0)

当您调用fgets()时,文件指针已经在文件末尾。在rewind(fp)之前添加对fgets()的电话。

哦,当您打开文件时,请在致电fp==NULL之前检查fprintf()

答案 2 :(得分:0)

最简单的方法是从文件读取并在控制台上打印。使用freopen()函数打开文件并使用基本STD I / O读取它。

我按自己的方式重写了你的解决方案。

 #include <stdio.h>

 int main()
 {
    char str[60];
    FILE* x = freopen("file.txt","r",stdin);
    if(x==NULL){
        printf("Error opening file");
        return(-1);
    }
    while(fgets (str, 60,stdin)){
        puts(str);
    }
    return 0;
}