Работа с файлами в С - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Изучаю тему "Работа с файлами" перепечатал код с учебника,но что-то он не хочет работать так как в книге. Проблема в проверке наличия маркера конца файла. После ввода комбинации ctrl+Z ( ОС Windows ) программа дальше ожидает вода данных.При Вводе комбинации несколько раз, то только в этом случае программа завершается.
int main()
{
    int accaunt;
    char name[30];
    double balance;
 
    FILE *cfPtr;
 
    if ((cfPtr = fopen("clients.dat", "w")) == NULL)
        puts("File no opened");
    else
    {
        puts("Enter the account, name,and balance");
        puts("Enter EOF to end input");
        printf("%s","? ");
        scanf("%d%s%lf",&accaunt,name,&balance);
 
        while (!feof(stdin))
        {
            fprintf(cfPtr,"%d %s %.2f",accaunt,name,balance);
            printf("%s","? ");
            scanf("%d%s%lf",&accaunt,name,&balance);
        }
 
        fclose(cfPtr);
 
    }

Решение задачи: «Работа с файлами в С»

textual
Листинг программы
scanf("%d%s%f%*[^\n]%*c", &namber, name, &balance)

Объяснение кода листинга программы

  1. В данном коде используется функция scanf для ввода данных с клавиатуры в переменные программы.
  2. Форматный спецификатор %d означает, что будет введено целочисленное значение, которое будет сохранено в переменной namber.
  3. Форматный спецификатор %s означает, что будет введено строковое значение, которое будет сохранено в переменной name.
  4. Форматный спецификатор %f означает, что будет введено числовое значение с плавающей точкой, которое будет сохранено в переменной balance.
  5. Дополнительный символ %*[^\n] означает, что будет пропущено до конца строки, пока не будет введен символ новой строки.
  6. Дополнительный символ %*c означает, что будет пропущено до конца строки, пока не будет введен символ новой строки, и за ним будет прочитано и игнорировано любое количество символов до следующего символа новой строки.
  7. Ввод данных осуществляется с помощью стандартного ввода (клавиатуры).

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы