我有一个简单的c代码来读写文件。一切工作正常,没有任何错误。但是我不能理解这里发生了什么。我已经添加了下面的代码。
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中有以下内容
101
111
010我预计file2.txt的内容应该是
010
111
101但是在运行代码之后,当我查看file2.txt时,我得到了如下结果
010111
101这是怎么回事?为什么在fprintf (fp, "%s", v1);中没有新的行格式说明符的情况下,fprintf还要打印新行?有人能帮我理解这一点吗?
谢谢,
发布于 2021-06-06 21:46:34
很可能您的输入文件的末尾没有新的行标记。然后,不使用\n读取最后一行,因此将其打印到输出文件。
发布于 2021-06-17 04:12:58
您的输入文件在前两行之后有换行符。fgets将在读取中包含这些换行符。
因此,当您打印这些行时,它们将有换行符。
最后一行没有换行符,因此在它之后打印的任何内容都将被粘贴到它上面。
https://stackoverflow.com/questions/67859576
复制相似问题