【问题标题】:Writing user input to a file in C将用户输入写入 C 中的文件
【发布时间】:2011-11-13 22:21:44
【问题描述】:

我正在开发一个程序,将用户输入写入文件,然后在文件中搜索特定记录并将其输出到屏幕。 我尝试使用 fgets 和 fputs 但没有成功

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main ()
  {
FILE *fileptr;
char id [30];
char name [47];
char amt[50];
int i;

fileptr=fopen("C:\\Users\\Andrea\\Documents\\Tester.txt","w");
 if (fileptr == NULL) {
     printf("File couldn't be opened\n\a\a");
     fclose(fileptr);
     exit(0);
  }

  printf("Enter name: \n");
  fscanf(fileptr,"%c",name);
  fputs(name,fileptr);
  fclose(fileptr);
  printf("File write was successful\n"); 
  return 0;
  }

【问题讨论】:

  • 发帖过程中似乎出了点问题。请点击edit 发布您的程序(并可能描述什么是“效果不佳”)。
  • 你能告诉我们你试过的代码吗?
  • 没有附加代码。请改进您的信息。
  • 对不起,我已经添加了代码
  • 如果是null,你为什么要关闭fileptr

标签: c


【解决方案1】:

有几个问题。

  1. 您正在尝试从fileptr 读取。
  2. 您只读取了一个字符,但将name 数组视为正确读取。

开始是:

  [...]
  printf("Enter name: \n");
  if (fgets(name, sizeof name, stdin)) {
    fputs(name,fileptr);
    fclose(fileptr);
    printf("File write was successful\n");
  } else {
    printf("Read error.\n");
  }

但这还不是全部:您忘记了进行错误检查。例如,如果您不检查至少fputs() 的返回值,您怎么知道您的"File write was successful\n"

【讨论】:

  • 这需要完成才能获得 10 条记录,for 循环可以工作吗?
  • 1.不,那是行不通的。你为什么要阅读你为"w"riting 打开的fileptr?我想你想从stdin 阅读? 2. for 循环确实可以工作。但在我们将片段组合在一起之前,您可能需要准确定义您尝试实现的目标,以便我们“作为一个整体”提供帮助。
猜你喜欢
  • 2017-04-01
  • 1970-01-01
  • 2021-08-17
  • 2021-03-02
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多