Дублирующая запись из файла ввода [дубликата]

0

У меня проблема. Когда я использую функцию ниже, я получил дубликат последней записи в моей повестке дня (массив записей, "контакт"). Как я могу решить эту проблему? Извините, если я попросил ответить на вопрос Q

void load(agenda a,int& r){
    r=0;
    contact c;
    fstream f;

    f.open("agenda.txt",ios::in);
    if(!f)
        cout<<"\nError!";
    else
        while(!f.eof()){
            f>>c.name;
            f>>c.number;
            strcpy(a[r].name,c.name);
            strcpy(a[r].number,c.number);
            r++;
        }
    f.close();
}
Теги:
arrays
file
eof
records

1 ответ

0
Лучший ответ

Файл должен достигнуть EOF для eof() return true.

Если после последнего значения есть пробел, вы не достигнете EOF до следующей попытки чтения.

вы можете проверить, выполнено ли каждое чтение следующим образом:

if(!f>>value) break;

или итерации до >> оператор не будет работать следующим образом:

while(f>>c.name>>c.number){
   ...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню