我如何只保存一个或多个与我的varunummer搜索相匹配的项目?此功能有效,但如果我的数组有限并保存文件,之前保存的项目将消失,只保存搜索的项目。另外如何使用匹配的nr项增加unique_ptr
? PS:nrOfGoods
跟踪数组中的项目数。这是我到目前为止所得到的:
nrOfGoods
答案 0 :(得分:0)
您不应该在第二个循环中编写项目。只需写下匹配的项目。
您还需要在循环之前打开文件。当您以w
模式打开文件时,它会先清空文件,因此每次循环都会删除上一次迭代。
并且你不应该在循环中打印Varunnummer not found
,因为在你完成整个阵列之前,你无法判断是否找不到该项目。使用您在找到匹配项时设置的变量;如果你找不到任何东西,它将不会被更新,你可以在最后打印一条消息。见Searching array reports "not found" even though it's found
struct varor{
int varunummer;
char namn[WORDLENGTH];
int lagersaldo;
};
void saveProduct(struct varor reg[], int nrOfGoods){
FILE * fp;
char nameFile[WORDLENGTH];
int i, j, varunummer;
int found = 0;
printf("Enter varunummer: ");
scanf("%d", &varunummer);
printf("Enter file name to save (end with .txt): ");
scanf("%s", nameFile);
fp = fopen (nameFile, "w");
for(i=0; i<nrOfGoods; i++){
if ( reg[i].varunummer == varunummer){
fprintf(fp,"%d\n", reg[i].varunummer);
fprintf(fp,"%s\n", reg[i].namn);
fprintf(fp,"%d\n", reg[i].lagersaldo);
found = 1;
}
}
fclose(fp);
if (!found) {
printf("\nVarunummer not found!\n");
}
}