Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用C语言从文件中读取整数_C_File_Scanf - Fatal编程技术网

用C语言从文件中读取整数

用C语言从文件中读取整数,c,file,scanf,C,File,Scanf,我已经挣扎了很长一段时间,试图找出它,我猜这是一个非常愚蠢的noob错误,但我无法找出它 所以我试图从一个文件中读入一个整数,然后在其中执行一些操作,为了解决这个问题,我只是想在这里输出它: FILE * pFile; int number; pFile = fopen ("myfile.txt","r"); if (pFile!=NULL) { fscanf(pFile, "%d", number); fclose (pFile); } printf("number: %i", number)

我已经挣扎了很长一段时间,试图找出它,我猜这是一个非常愚蠢的noob错误,但我无法找出它

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

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

您需要将int变量的地址传递给fscanf

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

您忘记传递fscanf数字的地址,而不是数字的值。因此,替换

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


必须向它传递指向数字的指针的地址,否则它无法修改数字的内容。

您忘记传递数字的地址而不是数字的值。因此,替换

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


必须向它传递指向数字的指针的地址,否则它无法修改数字的内容。

您需要一个指向数字的指针

i、 e

检查
fscanf

你可能还需要冲一冲

i、 e.在printf之后添加行

fflush(stdout);
此外,如果无法打开文件,您需要初始化
编号
,或者执行
返回操作

总之,代码应该是这样的

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

你需要一个指向数字的指针

i、 e

检查
fscanf

你可能还需要冲一冲

i、 e.在printf之后添加行

fflush(stdout);
此外,如果无法打开文件,您需要初始化
编号
,或者执行
返回操作

总之,代码应该是这样的

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
}
查看这些手册了解更多信息:


永远不要忘记,对于输入(来自键盘/文件),您需要提到变量的地址。因此,必须将
放在变量前面

就你而言:

fscanf(pFile, "%d", &number);
此外,您最好检查是否已到达文件末尾:

while(fscanf(pFile, "%d", &number) != EOF){
    //do the logic
}
查看这些手册了解更多信息:


我觉得自己像个白痴。。。thanks@user1469988你应该接受穆萨的回答。我觉得自己像个白痴。。。thanks@user1469988您应该接受Musa的答案。它作为字符串工作,因为字符串是指针(char*),fscanf()需要存储输入的位置的地址。它作为字符串工作,因为字符串是指针(char*),fscanf()需要存储输入的位置的地址。!=EOF不是一个足够的检查EOF不是一个充分的检查。