Чтение из файла - последняя запись выводится два раза - C (СИ)

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

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

Очень нужна помощь в написании функции на С++ У меня есть написанная функция
Bus *Read_file(char *fname)
{
    FILE *inf;//указатель на структуру FILE
    Bus x;
    Bus *buses=0;//если было что-то введено очищаем
    if ((inf=fopen(fname,"r"))==NULL) cout<<"Not file "<<fname<<endl;
    fseek(inf,0,0);//задаем текущее положение курсора в начале
    while (!feof(inf))
    {
        fscanf(inf," %s ",&x.fio);//s-строковый тип
        fscanf(inf," %d ",&x.mnomer);//d-десятичный вид
        fscanf(inf," %s ",&x.nombus);
        fscanf(inf," %s ",&x.depo);
        buses=add(buses,x);
    }
    fclose(inf);//закрывает поток ввода/вывода
    return buses;
}
Но хотелось бы тоже самое на С++, через
ifstream inf(fname, ios_base::in);
Помогите, кто чем может

Решение задачи: «Чтение из файла - последняя запись выводится два раза»

textual
Листинг программы
Bus *Read_file(char *fname)
{
    ifstream fin(fname, ios_base::in);
    Bus x;
    Bus *buses=0;//если было что-то введено очищаем
    if (!fin)
    {
     cout<<"Not file "<<fname;
     return 0;
     }
    while (!fin.eof())
    {
    fin >> x.fio >> x.mnomer >> x.nombus >> x.depo;
    buses=add(buses,x);
    }
    fin.close();
    return buses;
   }

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

  1. Входные данные:
    • fname - имя файла, из которого необходимо считать данные.
  2. Создание пустого списка для автобусов:
    • buses - указатель на голову списка автобусов.
  3. Открытие файла:
    • fin - объект типа ifstream, который открывает файл для чтения.
  4. Проверка наличия файла:
    • Если файл не может быть открыт, выводится сообщение об ошибке и возвращается 0.
  5. Чтение данных из файла:
    • В цикле while считываются данные из файла до тех пор, пока не достигнут конец файла.
    • Считываются данные о каждом автобусе: номер фио, номер маршрута, номер автобуса и номер депо.
    • Каждый автобус добавляется в список.
  6. Закрытие файла:
    • После окончания чтения файла он закрывается.
  7. Возврат списка автобусов:
    • Возвращается указатель на голову списка автобусов.
  8. Если файл пуст, то возвращается 0.
  9. Если файл не пуст, то возвращается 1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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