Работа с файлами в С - 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означает, что будет пропущено до конца строки, пока не будет введен символ новой строки, и за ним будет прочитано и игнорировано любое количество символов до следующего символа новой строки. - Ввод данных осуществляется с помощью стандартного ввода (клавиатуры).