在文本文件中增加一个数字,语言 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 等
我下面的函数必须递增文件中的一个数字,该数字在开始时不存在。第一个 "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 等