在文本文件中增加一个数字,语言 c

increment a number in text file, language c

我下面的函数必须递增文件中的一个数字,该数字在开始时不存在。第一个 "if" 是当文件为空时,第二个是在我的文件中制作 "id++" 和 return 它,但是如果我调用 4 次,这个增量不起作用函数,它 return “0101”。感谢您的帮助。

int genererId(){
int id=0;
FILE * fichier = fopen("id.txt","w");
fclose(fichier);
fichier = fopen("id.txt","r");
if (fichier != NULL){

    if(fscanf(fichier,"%d",&id)!=EOF){
        fclose(fichier);
        FILE * fichier = fopen("id.txt","w");
        fprintf(fichier, "%d", 1);
        return 1;
    }else{
        printf("%d",id);
        fclose(fichier);
        FILE * fichier = fopen("id.txt","w");
        id++;
        fprintf(fichier, "%d",id);
        fclose(fichier);
        return id;
    }
}

return -1;
}


int main(){
    printf("%d",genererId());
    printf("%d",genererId());
    printf("%d",genererId());
    printf("%d",genererId());
    printf("%d",genererId());
    printf("%d",genererId());
    printf("%d",genererId());
}

当前输出:01010101010101 预期输出:1234567

我想你想要的是这样的:

#include <stdio.h>

int genID()
{
    int val ;
    FILE * fp = fopen("file.txt", "r") ;
    if (!fp) {
        fp = fopen("file.txt", "w") ;
        if (!fp) return -1 ; // fail
        fprintf(fp, "%d", 1) ;
        fclose(fp) ;
        return 1;
    }
    fscanf(fp, "%d", &val) ;
    val++;

    fclose(fp); // close file for read
    fp = fopen("file.txt", "w") ; // reopen for write
    fprintf(fp, "%d", val) ;
    fclose(fp) ;
    return val ;
}

int main() {
    printf("%d", genID()); // 1
    printf("%d", genID()); // 2
    printf("%d", genID()); // 3
    return 0 ;
}

下一个 运行 将得到 4、5、6 等