我一直在努力解决这个问题很长一段时间试图解决这个问题,我猜这是一个非常愚蠢的菜鸟错误,但我无法弄明白。
所以我试图读取一个文件中的整数,然后在其中执行一些操作,为了解决这个问题,我只是想在这里输出它:
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)
感谢您提供的任何帮助
编辑:我忘了提及,它作为一个字符串工作,它读取正确的数字,但我不能对它进行任何操作,如果我将数字类型设置为双倍它工作但输出一些随机数数百万......答案 0 :(得分:3)
您需要将int变量的地址传递给fscanf
fscanf(pFile, "%d", &number);
答案 1 :(得分:0)
您忘记传递fscanf数字地址而不是数字值。所以替换
fscanf(pFile, "%d", number);
带
fscanf(pFile, "%d", &number);
有必要将/指针的地址传递给number,否则无法修改数字的内容。
答案 2 :(得分:0)
你需要一个指向数字
的指针即
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;
}
答案 3 :(得分:-1)
永远不要忘记,对于输入(来自键盘/文件),您需要提及变量的地址。因此,您必须将&
放在变量之前。
在您的情况下:
fscanf(pFile, "%d", &number);
另外,您最好检查是否到达文件末尾:
while(fscanf(pFile, "%d", &number) != EOF){
//do the logic
}
查看这些手册以了解更多信息: