读取文件内容,存储在数组中,向数组中添加更多内容,然后将新数组存储在文件C ++中

时间:2014-12-27 20:10:44

标签: c++ string file save add

我有以下文件(customers.txt):

 1  esra    doha    017987  
 2  abdulla wakra   023456

问题:从用户处获取新的客户信息并将其存储在文件中,而不删除旧记录。

我需要阅读之前的内容并将它们存储在相应的数组中,我使用这种方法进行了操作:

void readFile()
{
ifstream infile;
infile.open("D:\\customers.txt");

for(int i = 0; infile; i++)
{
    infile >> ID[i] >> names[i] >> addresses[i]>>tn[i];
    infile.peek();
    numC++;
}

infile.close();
}

(numC是客户数量,最初设为0)

然后,我需要添加一个新客户。我这样做了:

void add()
{
for(int i=numC; i<100;i++)
{
    cout<<"Enter your ID (or -1 to quit)"<<endl;
    cin>>ID[i];
    if(ID[i]!=-1)
    {
        cout<<"enter your name"<<endl;
        cin>>names[i];
        cout<<"enter your address"<<endl;
        cin>>addresses[i];
        cout<<"enter your telephone number"<<endl;
        cin>>tn[i];
    }
    else
        break;
}
saveFile();
}

saveFile()用于在添加新用户后将数组存储在文件中。这是:

 void saveFile()
 {
ofstream outfile;
outfile.open("D:\\customers.txt");

for(int i=0; i<numC; i++)
    outfile << ID[i] << "\t" << names[i]<< "\t"<<addresses[i]<< "\t"<<tn[i]<<endl;

outfile.close();
}

我不确定问题出在哪里,无论是在add()还是save()中,尽管如此,在运行程序之后,这些都是内容:

 1  esra    doha    017987  
 2  abdulla wakra   023456
 0  0       0       0

为什么会这样?如何修复它以存储用户?

1 个答案:

答案 0 :(得分:1)

每次在add()例程中添加用户时,

numC都需要递增。

另外,你可能在新文件的末尾得到零,因为原始文件在第二行之后有一个返回行,所以你的读取函数试图读取第三行,即使它是空白的。