Запись пользовательского ввода в файл в C программировании - PullRequest
1 голос
/ 14 ноября 2011

Я работаю над программой, чтобы записать пользовательский ввод в файл, а затем найти определенную запись в файле и вывести ее на экран.

Я пытался использовать 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 ]

2 голосов
/ 14 ноября 2011

Использование:

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

Но, что еще лучше, используйте scanf, как упоминалось выше. Это связано с тем, что функция scanf () предназначена для чтения ответа пользователя с экрана, а функция fscanf () предназначена для сканирования любых входных потоков (обычно это файлы).

И оператор должен читать с экрана (stdin), а не из файла (который был открыт только для записи).

0 голосов
/ 14 ноября 2011

Используйте 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...