Работа с файлами в С - 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)
Объяснение кода листинга программы
- В данном коде используется функция scanf для ввода данных с клавиатуры в переменные программы.
- Форматный спецификатор
%d
означает, что будет введено целочисленное значение, которое будет сохранено в переменнойnamber
. - Форматный спецификатор
%s
означает, что будет введено строковое значение, которое будет сохранено в переменнойname
. - Форматный спецификатор
%f
означает, что будет введено числовое значение с плавающей точкой, которое будет сохранено в переменнойbalance
. - Дополнительный символ
%*[^\n]
означает, что будет пропущено до конца строки, пока не будет введен символ новой строки. - Дополнительный символ
%*c
означает, что будет пропущено до конца строки, пока не будет введен символ новой строки, и за ним будет прочитано и игнорировано любое количество символов до следующего символа новой строки. - Ввод данных осуществляется с помощью стандартного ввода (клавиатуры).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д