c - 为什么我的输出在 fgets 中自动格式化,即 '\n'?

标签 c fgets

这是我的代码

#include<stdio.h>
int main()
{
FILE* fp;
int i;
fp=fopen("newfile","r");
if(fp==NULL)
{
   printf("hhaha");
   return 0;
}
char str[20];
for(i=0;i<2;i++)
{
    fgets(str,20,fp);
    printf("%s",str);
} 
return 0;
}

现在如果我的新文件有文本

my name
is xyz

那怎么当我打印时两行打印在两个换行符中? 换行符从哪里来?

最佳答案

fgets 将指针设置为 char * 代表文件的行,包括行尾的 \n。 (与大多数字符串一样,它也将以 '\0' 终止)

一个文件:

This
is
my
file

将从 fgets 获得:

This\n\0,is\n\0,my\n\0,file\n\0 1


1最终值可能不包含\n。这将取决于它是否是 \n 终止文件。

关于c - 为什么我的输出在 fgets 中自动格式化,即 '\n'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664950/

相关文章:

c - C 编程中的 fseek 和 fgets 在这里没有正确使用?

c - "scanf with printf"与 "fgets with printf"

这段代码可以包含缓冲区溢出吗?

c - 在树中查找函数

将 32 位网络命令转换为 C 中的主机

c - HID 报告在更改长度时不起作用

c - Turbo C - 停止代码重新运行

c - 从文件中读取行不返回全部

c - 如何确定 fgets 是否在读取所有字母之前停止?

c++ - 使用 MapViewOfFile 发送结构并读取未知值