文件输入中的重复记录

时间:2014-12-28 11:46:40

标签: c++ arrays file eof records

那边我遇到了问题。当我使用下面的功能时,我得到了我议程中最后一个条目的副本(记录数组,"联系人" s)。我该如何解决这个问题?对不起,如果我问过之前回答的问题

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();
}

1 个答案:

答案 0 :(得分:0)

文件需要EOF eof()才能返回true。

如果在最后一个值之后有一个空格,您将无法到达EOF,直到下一次尝试。

你可以检查每次读取是否成功:

if(!f>>value) break;

或迭代直到>>运算符将失败,如下所示:

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