从文本文件中读取 您所在的位置:网站首页 fscanf读取空格吗 从文本文件中读取

从文本文件中读取

#从文本文件中读取| 来源: 网络整理| 查看: 265

问题描述

我正在尝试从输入文本文件中读取并打印出来.我可以的这通过阅读每个字符,但我想在更多中实现它有效的方式.所以我认为我的程序应该一次读取一行并打印出来.我怎样才能做到这一点?我写了下面的代码,但它是不正确,因为 fscanf 读取一个单词(以空格结尾或换行符)一次,而不是读取整行.

#include 无效的主要(无效){char str[120];

文件 *fp = fopen("test.txt", "r");

而 (!feof(fp)){fscanf(fp, "%s\n", str);printf("%s", str);}}

所以我得到一个像"Thisisatest.Itisnotworking."这样的输出,当输入文件包含:这是一个测试.它不工作.

任何建议表示赞赏.谢谢.

推荐答案googler 写道: 我正在尝试从输入文本文件中读取并打印出来.我可以通过阅读每个字符来做到这一点,但我想以更有效的方式实现它.所以我认为我的程序应该一次读取一行并打印出来.我怎样才能做到这一点?我写了下面的代码,但它是不正确的,因为 fscanf 一次读取一个单词(以空格结尾 或换行符),而不是读取整行.任何建议表示赞赏.谢谢.

fgets.

S.

Skarmander 写道: googler 写道: 我正在尝试从输入文本中读取文件并打印出来.我可以通过阅读每个字符来做到这一点,但我想以更有效的方式实现它.所以我认为我的程序应该一次读取一行并打印出来.我怎样才能做到这一点?我写了下面的代码,但它不正确,因为 fscanf 一次读取一个单词(以空格结尾 或换行符),而不是读取整行. 任何建议表示赞赏.谢谢.

fgets.

S.

抱歉,我应该使用 fgets .. 我的错.

还有一个问题.我的代码如下:而 (!feof(fp)){fgets(str, 120, fp);printf("%s", str);}

这会将最后一行打印两次.我不明白为什么.什么时候打印第一次写最后一行,应该就知道结束了文件已经到达,所以下一个条件检查while循环应该失败了.为什么还是进入while循环和再次打印最后一行?

谢谢.

不要使用 feof.您可以随时使用 fgets 来检查它是否到达末尾

例如,而( fgets(str, 120,fp) ){printfr("%s", str);}

干杯

本文地址:https://www.itbaoku.cn/post/1028391.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有