在C编程中将用户输入写入文件

时间:2011-11-14 00:20:54

标签: c file

我正在开发一个程序,用于将用户输入写入文件,然后在文件中搜索特定记录并将其输出到屏幕。

我尝试过使用fgets和fputs,但我还没有成功。这是我到目前为止所拥有的。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main ()
{
    FILE *fileptr;
    char id [30];
    char name [47];
    char amt[50];

    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;
}

2 个答案:

答案 0 :(得分:2)

使用:

fscanf(stdin, "%s", name);

但更好的是,使用scanf代替,正如kol所说。这是因为scanf()用于从屏幕读取用户响应,而fscanf()用于从任何输入流(通常是文件)进行扫描。

该语句应该是从屏幕(stdin)读取,而不是从文件(仅作为“写入”打开)读取。

答案 1 :(得分:0)

使用scanf读取用户输入,使用fprintf将其写入文件。然后使用fscanf从文件中读取,并printf显示您已阅读的内容。有关详细信息和示例代码,请参阅cplusplus.com

修改

以下是一个示例(请从命令行运行可执行文件):

#include <stdio.h>
#include <string.h>

int main()
{
  FILE *file;
  int i;
  char firstName[32];
  char lastName[32];
  int found = 0;

  // Open the file for writing
  file = fopen("records.txt", "wt");
  if (!file)
  {
    printf("File could not be opened\n\a\a");
    getchar();
    return -1;
  }

  // Read and save data
  for (i = 0; i < 3; ++i)
  {
    // Read data
    printf("Record #%d\n", i + 1);
    printf("Enter first name: "); scanf("%s", firstName);
    printf("Enter last name:  "); scanf("%s", lastName);
    printf("\n");

    // Save data
    fprintf(file, "%s\t%s\n", firstName, lastName);
  }

  // Close the file
  fclose(file);

  // Open the file for reading
  file = fopen("records.txt", "rt");
  if (!file)
  {
    printf("File could not be opened\n\a\a");
    return -1;
  }

  // Load and display data
  i = 0;
  while(!feof(file) && !found)
  {
    ++i;
    fscanf(file, "%s\t%s", firstName, lastName);
    if (strcmp(firstName, "John") == 0 && strcmp(lastName, "Doe") == 0)
    {
      printf("Record found (#%d): %s %s\n", i, firstName, lastName);
      found = 1;
    }
  }
  if (!found)
    printf("Record could not be found");

  // Close the file
  fclose(file);

  return 0;
}