我正在尝试制作一种数据库程序,并遇到一些问题,从C中的文本文件中读取整数。
我有以下代码:
#include <stdio.h>
int main(){
int index;
FILE * fp;
if((fp = fopen("read_file.txt","r+")) == NULL){
perror("Cannot open file");
printf("\nCreating new file...");
if((fp = fopen("read_file.txt","w+")) == NULL){
perror("\nCannot create file.. Terminating..");
return -1;
}
}
fputs("INDEX = 3",fp);
fscanf(fp, "INDEX = %d",&index);
printf("index = %d\n",index);
fclose(fp);
return 0;
}
当我尝试运行程序时输出“index = 16”,我尝试使用fgets和sscanf,但同样的事情发生了。但是对于字符串,它决定打印出一堆没有意义的字符。
答案 0 :(得分:2)
您在未定义的行为中看到的是因为您在文件中写了一个字符串并尝试扫描文件中没有的INDEX = %d
,因为文件指针指向INDEX = 3
扫描前需要rewind(fp)
。
fputs("INDEX = 3",fp);
rewind(fp);
if( fscanf(fp, "INDEX = %d",&index) != 1)
printf("Scanning failes\n");
else
printf("INDEX = %d\n",index);