C++在结构上使用指针并将其保存在文件中
C++ Using pointers on structure and saving them on files
Soo我有一个问题,我目前在结构上使用指针,并将值保存在文件上
struct compracli{
char nomeartigo[50];
char codigo[50];
char nomecli[50];
char data[50];
};
int compra(int l){
compracli *ptr, d;
FILE *arquivo;
ptr = &d;
if((arquivo = fopen("compras.dat", "rb+")) !=NULL){
//Colocar apontadores dentro dos arquivos
system("CLS");
cout<<"Adicinar um pedido de compra!"<<endl;
cin.sync();
cout<<"Adicione o nome do artigo: ";
cin >> (*ptr).nomeartigo;
fwrite(ptr->nomeartigo, sizeof(ptr->nomeartigo), 1, arquivo);
cin.sync();
cout<<"Adicione o codigo do artigo: ";
cin >> (*ptr).codigo;
fwrite(ptr->codigo, sizeof(ptr->codigo), 2, arquivo);
cin.sync();
cout<<"Adicione o nome do cliente: ";
cin >> (*ptr).nomecli;
fwrite(ptr->nomecli, sizeof(ptr->nomecli), 3, arquivo);
cin.sync();
cout<<"Adicione a data de encomenda: ";
cin >> (*ptr).data;
fwrite(ptr->data, sizeof(ptr->data), 4, arquivo);
cin.sync();
}else{
cout<<"Erro na base de dados, de momento nao poderá aceder, tente mais tarde"<<endl;
}
fclose(arquivo);
return 0;
问题是,它只保存了第一个值,这意味着(*ptr).nomartigo。起初我认为这是因为缓冲区的原因,也许它已经满了,所以我试图使用cin.sync()清理它;但还是没有成功。我认为使用"行"可能有问题,例如"fwrite(ptr->data,sizeof(ptr-->data),4,arquivo);"那个"4",我认为他们保存在同一行,这就是为什么它会引起问题。但是仍然没有成功!我没有主意,有人知道怎么做吗?
cin >> (*ptr).nomeartigo;
fwrite(ptr->nomeartigo, sizeof(ptr->nomeartigo), 1, arquivo);
CCD_ 1是CCD_。这将写入数组中的所有字节,包括operator>>
放入其中的尾随