我的下面的函数必须在文件中增加一个数字,这在开头不存在。第一个“if”是文件为空时,第二个是在我的文件中生成“id ++”并返回它,但是这个增量不起作用,如果我调用4次函数,则返回“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
答案 0 :(得分:3)
我认为你想要的是这样的:
#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,......等。