fputs()c中的换行符行为

时间:2013-11-20 14:04:49

标签: c

无法理解程序(如下) 我对这句话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;
}

2 个答案:

答案 0 :(得分:7)

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

fputs不同,puts不会在其写入的字符串末尾自动插入一个。因此,在输出每个键入的行后添加fputs("\n", fp);(或fputc('\n', fp)),可以在文件中插入缺少的换行符。

答案 1 :(得分:3)

fputs不会自动为输出添加换行符(与puts相反)。