我一直在挣扎与此了很长的时间,试图弄明白,我猜这是一个非常愚蠢的错误,小白,但我无法弄清楚。
所以我想从一个文件中的一个整数读取,然后在里面做一些操作,对这个问题,我只是想在这里将它输出的缘故:
FILE * pFile;
int number;
pFile = fopen ("myfile.txt","r");
if (pFile!=NULL) {
fscanf(pFile, "%d", number);
fclose (pFile);
}
printf("number: %i", number);
return 0;
myfile.txt的内容:
123
但是当我运行它,它不读任何东西代替它说
RUN FAILED (exit value 1, total time: 32ms)
感谢您的任何和所有帮助
编辑:我忘了提,它可以作为一个字符串,它读取正确的号码,但我不能做任何操作就可以了,另外,如果我设置的号码类型,以加倍工作,但在输出数以百万计的一些随机数。 ..
你需要通过int变量的地址FSCANF
fscanf(pFile, "%d", &number);
你忘了传递的fscanf数的地址,而不是数字的值。 所以更换
fscanf(pFile, "%d", number);
同
fscanf(pFile, "%d", &number);
有必要通过它的/地址的指针数,因为否则就不能修改号的内容。
尤尔需要有一个指针数
即
fscanf(pFile, "%d", &number);
它是检查从返回的值是一个好主意fscanf
您还可能需要进行刷新。
即之后的printf添加行
fflush(stdout);
另外你要么需要初始化number
或者做一个return
,如果你是无法打开该文件。
因此,在总结的代码应该是这样的
FILE * pFile;
int number;
pFile = fopen ("myfile.txt","r");
if (NULL == pFile && 1 == fscanf(pFile, "%d", &number))
{
printf("Number: %i", number);
fflush(stdout);
return 0;
}
else
{
return -1;
}
永远不要忘记,对于输入(从键盘/文件),你需要提及变量的地址。 所以,你必须把&
变量之前。
你的情况:
fscanf(pFile, "%d", &number);
此外,你最好检查一下,如果你达到了档案结尾与否:
while(fscanf(pFile, "%d", &number) != EOF){
//do the logic
}
检查这些手册更多:
Linux的程序员手册
C库函数-的fscanf()