如何使用fgets从用户读取多行输入并使用C中的fput将其写入文件?

时间:2011-11-16 06:01:20

标签: c file fgets fputs

我想读取用户的输入(多行)并使用fputs()将其写入文件。

这是我的代码

#include<stdio.h>
#include<stdlib.h>
int main()
{
 FILE *fp;
 char s[25];
 fp=fopen("myname","w");
 if(fp==NULL)
 {
  perror("Error opening file\n");
  exit(1);
 }

 while(fgets(s,25,stdin)!=NULL)
  fputs(s,fp);
 fclose(fp);
 return 0;
}

从用户那里获得输入后,我使用Ctrl + C来关闭程序的输入提示(我正在使用linux)。然后,如果我打开文件,它什么都没有。我怎么能解决这个问题?

使用fputs()&amp;有什么问题吗?与fgets()?

1 个答案:

答案 0 :(得分:3)

由于C-C可能会杀死进程,因为缓冲,行不会到达文件(除非它们有很多并填充缓冲区)。

您应该使用C-D(Unix)或C-Z(Dos)结束输出,而不是C-C

作为旁注:fgets不会删除换行符,而fputs会添加自己的换行符。但我想你会注意到: - )