用C语言从文件中读取整数
我已经挣扎了很长一段时间,试图找出它,我猜这是一个非常愚蠢的noob错误,但我无法找出它 所以我试图从一个文件中读入一个整数,然后在其中执行一些操作,为了解决这个问题,我只是想在这里输出它:用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)
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不是一个充分的检查。