Телефонный справочник: повторно добавляется последняя введенная фамилия - C (СИ)
Формулировка задачи:
Задача:написать программу, которая записывает в файл имя, фамилию и номер телефона.За один сеанс работы
в файл можно добавить информацию о нескольких людях.
Код написала, проблема в том, что повторно добавляется последняя введенная фамилия. Данные правильно записывает в файл и только косяк с повтором фамилии.Как можно переделать код?
#include <stdio.h>
#include <iostream>
#define N 100
void main()
{
setlocale(0,"Russian");
FILE*f;
char surname[N];
char name[N];
int a;
if((f=fopen("K:\\hellome.txt","w"))==NULL)
printf("Файл не найден\n");
else
{
printf("Добавление информации в телефонный справочник\n");
printf("Фамилия->");
scanf("%s",surname);
fprintf(f,"%s ",surname);
while(!feof(stdin))
{
printf("Имя->");
scanf("%s",name);
printf("Номер->");
scanf("%d",&a);
fprintf(f," %s %d \n",name,a);
puts("\nИнформация добавлена\n");
printf("Фамилия->");
scanf("%s",surname);
fprintf(f,"%s ",surname);
}
}
fclose(f);
}Решение задачи: «Телефонный справочник: повторно добавляется последняя введенная фамилия»
textual
Листинг программы
#include <stdio.h>
#include <iostream>
#define N 100
void main()
{
setlocale(0,"Russian");
FILE*f;
char surname[N];
char name[N];
int a;
if((f=fopen("K:\\hellome.txt","w"))==NULL)
printf("Файл не найден\n");
else
{
printf("Добавление информации в телефонный справочник\n");
while(!feof(stdin))
{
printf("Фамилия->");
scanf("%s",surname);
fprintf(f,"%s ",surname);
printf("Имя->");
scanf("%s",name);
printf("Номер->");
scanf("%d",&a);
fprintf(f," %s %d \n",name,a);
puts("\nИнформация добавлена\n");
}
}
fclose(f);
}
Объяснение кода листинга программы
Вывод информации в справочник на экран и запись в файл «hello.txt»:
- Фамилия->
- Имя->
- Номер->
- Информация добавлена
- Фамилия->
- Имя->
- Номер->
- Информация добавлена
- Фамилия->
- Имя->
- Номер->
- Информация добавлена
- Фамилия->
- Имя->
- Номер->
- Информация добавлена
- Фамилия->
- Имя->
- Номер->
- Информация добавлена