LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1522|回复: 1

请教fgets(buf,stdin)读入fputs写入文件中问题

[复制链接]
发表于 2008-3-7 17:27:12 | 显示全部楼层 |阅读模式
程序本来的意图是从shell读取输入的内容,然后写入文件中
但并未实现功能。请各位兄弟指点一下
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main(void)
  5. {
  6.     FILE * fp;
  7.     char buf[1024];
  8.     if ((fp = fopen("aa", "a+")) == NULL) {
  9.                 printf("fopen error !\n");
  10.                 exit(-1);
  11.         }
  12.         while (fgets(buf, 1024, stdin) != NULL){
  13.                 printf("%s", buf);
  14.                 if (fputs(buf, fp) == EOF) {
  15.                         printf("fputs fp error!\n");
  16.                         exit(-1);
  17.                 }
  18.         }
  19.         fclose(fp);
  20.         exit(0);
  21. }
复制代码
 楼主| 发表于 2008-3-14 12:02:42 | 显示全部楼层
问题的关键是没有更新缓冲区
使用 int fflush(FILE* stream) 更新
正确代码如下


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. int main(void)
  5. {
  6.     FILE * fp;
  7.     char buf[1024];

  8.     if ((fp = fopen("aa", "a+")) == NULL) {
  9.                 printf("fopen error !\n");
  10.                 exit(-1);
  11.         }

  12.         while (fgets(buf, 1024, stdin) != NULL){
  13.                 printf("%s", buf);
  14.                 if (fputs(buf, fp) == EOF) {
  15.                         printf("fputs fp error!\n");
  16.                         exit(-1);
  17.                 }
  18.                 fflush(fp);
  19.         }

  20.         fclose(fp);

  21.         exit(0);
  22. }



复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表