2014-12-27 47 views
-2

新的数组我有以下文件(Customers.txt移动):读取文件内容,存储在阵列中,多个内容添加到阵列中,然后存储在文件C++

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

我不知道在哪里的问题是,无论是在加()或保存(),但是,运行该程序后,这些内容:

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

为什么这是否发生?我如何解决它以存储用户?

回答

2

每次在add()例程中添加一个用户时,numC都需要递增。

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