fputs()在c中的换行行为

fputs()在c中的换行行为,c,C,理解程序有困难(如下)。 我对语句fputs(“\n”,fp) 让我键入: 你的内心是什么并不重要 你所做的决定了你 如果我没有提到fputs(“\n”,fp)字符串将显示在一行中。但在代码中,它被保存为键入的 现在的问题是如何将\n插入所需的位置,因为通常\n应该附加在文本的末尾 任何帮助都将不胜感激 int main() { FILE *fp; char s[80]; fp=fopen("abc.txt","w"); if(fp==NULL) {

理解程序有困难(如下)。
我对语句
fputs(“\n”,fp)
让我键入:

你的内心是什么并不重要
你所做的决定了你

如果我没有提到
fputs(“\n”,fp)
字符串将显示在一行中。但在代码中,它被保存为键入的

现在的问题是如何将
\n
插入所需的位置,因为通常
\n
应该附加在文本的末尾

任何帮助都将不胜感激

int main()

{
    FILE *fp;

    char s[80];
    fp=fopen("abc.txt","w");
    if(fp==NULL)
    { 
            puts("Cannot open file");
            exit(1);
    }
    printf("\nEnter a few lines of text:\n");
    while(strlen(gets(s))>0)
    {
          fputs(s,fp);
          fputs("\n",fp);
    }
    fclose(fp);
    return 0;
}

fputs
不会自动向输出中添加换行符(与
put
相反,后者会自动添加换行符)

gets
(不应使用,并且实际上已从最新的C标准中删除)不会将
\n
保存在其缓冲区中(而
fgets
会保存)


fputs
,不同于
put
,fputs不会自动在写入的字符串末尾插入一个。因此,通过添加一个
fputs(“\n”,fp)
(或
fputc('\n',fp)
)输出每个键入的行后,在文件中插入缺少的换行符。

fputs写入您给定的字符串,它不会向该字符串追加任何字符。另一方面,put确实附加了一个换行符。这是一个不一致的api。考虑到这一点,gets()和fgets()之间的差异是相同的(除了fgets()允许缓冲区大小)。如果您看到错误
类型“char”与参数类型“const char*”
,请确保使用双引号
“\n”