【发布时间】:2018-01-18 19:38:55
【问题描述】:
我下面的函数必须在文件中增加一个数字,该数字在开始时不存在。第一个“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
【问题讨论】:
-
理想情况下,您应该在读取该文件之前测试
if (fichier != NULL)。 未定义的行为 招手。您还应该测试来自fscanf的返回值,这是为了您的利益而提供的。if (fscanf(...) != ...) { /* evasive action */ } -
您的问题不清楚。 “增量文件”是什么意思?显示输入和所需输出的示例对。
-
请不要更正发布的代码中的错误,除非它不是您的实际代码。回滚。
-
我希望只是一个输出,在我的文件中有类似 1 的数字,调用后,返回 2 并将我的文件中的 1 替换为 2 @Yunnosch
-
如果您在问题中显示输入、预期输出和实际输出,将会有所帮助。通过正式的例子,而不是通过叙述。