从C中的文件中读取整数

时间:2012-10-17 23:06:15

标签: c file scanf

我一直在努力解决这个问题很长一段时间试图解决这个问题,我猜这是一个非常愚蠢的菜鸟错误,但我无法弄明白。

所以我试图读取一个文件中的整数,然后在其中执行一些操作,为了解决这个问题,我只是想在这里输出它:

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)

感谢您提供的任何帮助

编辑:我忘了提及,它作为一个字符串工作,它读取正确的数字,但我不能对它进行任何操作,如果我将数字类型设置为双倍它工作但输出一些随机数数百万......

4 个答案:

答案 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
}

查看这些手册以了解更多信息:

Linux Programmer's Manual

C library function - fscanf()