读取从文件中的整数C [复制](Reading integers from a file in C

2019-09-24 06:22发布

这个问题已经在这里有一个答案:

  • 什么时候应该使用符号与scanf()的 3个回答

我一直在挣扎与此了很长的时间,试图弄明白,我猜这是一个非常愚蠢的错误,小白,但我无法弄清楚。

所以我想从一个文件中的一个整数读取,然后在里面做一些操作,对这个问题,我只是想在这里将它输出的缘故:

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)

感谢您的任何和所有帮助

编辑:我忘了提,它可以作为一个字符串,它读取正确的号码,但我不能做任何操作就可以了,另外,如果我设置的号码类型,以加倍工作,但在输出数以百万计的一些随机数。 ..

Answer 1:

你需要通过int变量的地址FSCANF

fscanf(pFile, "%d", &number);


Answer 2:

你忘了传递的fscanf数的地址,而不是数字的值。 所以更换

fscanf(pFile, "%d", number); 

fscanf(pFile, "%d", &number);

有必要通过它的/地址的指针数,因为否则就不能修改号的内容。



Answer 3:

尤尔需要有一个指针数

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;
}


Answer 4:

永远不要忘记,对于输入(从键盘/文件),你需要提及变量的地址。 所以,你必须把&变量之前。

你的情况:

fscanf(pFile, "%d", &number);

此外,你最好检查一下,如果你达到了档案结尾与否:

while(fscanf(pFile, "%d", &number) != EOF){
    //do the logic
}

检查这些手册更多:

Linux的程序员手册

C库函数-的fscanf()



文章来源: Reading integers from a file in C [duplicate]
标签: c file scanf