首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么fprintf在将数据写入文件时打印新行?

为什么fprintf在将数据写入文件时打印新行?
EN

Stack Overflow用户
提问于 2021-06-06 21:18:55
回答 2查看 67关注 0票数 0

我有一个简单的c代码来读写文件。一切工作正常,没有任何错误。但是我不能理解这里发生了什么。我已经添加了下面的代码。

代码语言:javascript
复制
  int width=3;
  int height=3;
  char v1[3 * width];       
  int j = 0, k = 0; 
  int i = 0;
  k = height;

  FILE *fp = fopen ("file2.txt", "w");
  while (i < height)
  {
      FILE *fval = fopen ("file1.txt", "r");
      j = 0;

      while (j < k)
     {
       fgets (v1, sizeof (v1), fval);
       j++;
     }
     fprintf (fp, "%s", v1);
     k--;
     i++;
     fclose (fval);
  }
  fclose (fp);

我在file1.txt中有以下内容

代码语言:javascript
复制
101
111
010

我预计file2.txt的内容应该是

代码语言:javascript
复制
010
111
101

但是在运行代码之后,当我查看file2.txt时,我得到了如下结果

代码语言:javascript
复制
010111
101

这是怎么回事?为什么在fprintf (fp, "%s", v1);中没有新的行格式说明符的情况下,fprintf还要打印新行?有人能帮我理解这一点吗?

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2021-06-06 21:46:34

很可能您的输入文件的末尾没有新的行标记。然后,不使用\n读取最后一行,因此将其打印到输出文件。

票数 3
EN

Stack Overflow用户

发布于 2021-06-17 04:12:58

您的输入文件在前两行之后有换行符。fgets将在读取中包含这些换行符。

因此,当您打印这些行时,它们将有换行符。

最后一行没有换行符,因此在它之后打印的任何内容都将被粘贴到它上面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67859576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档