如何只保存一个项目到.txt文件?功能

时间:2017-10-24 18:57:56

标签: c

我如何只保存一个或多个与我的varunummer搜索相匹配的项目?此功能有效,但如果我的数组有限并保存文件,之前保存的项目将消失,只保存搜索的项目。另外如何使用匹配的nr项增加unique_ptr? PS:nrOfGoods跟踪数组中的项目数。这是我到目前为止所得到的:

nrOfGoods

1 个答案:

答案 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");
    }
}