C-fscanf无法从文本文件中正确读取数字

C-fscanf无法从文本文件中正确读取数字,c,pointers,reference,scanf,C,Pointers,Reference,Scanf,我是C新手,我正在努力使我的int a等于4。4是从一个文本文件中读取的,但是当我打印出一个文件时,它会打印出32767 #include <cstdlib> #include <stdio.h> #include <stdlib.h> #include "Component.h" using namespace std; int main(int argc, char** argv) { FILE *fp; fp=fopen("text.

我是C新手,我正在努力使我的int a等于4。4是从一个文本文件中读取的,但是当我打印出一个文件时,它会打印出32767

#include <cstdlib>
#include <stdio.h>
#include <stdlib.h>
#include "Component.h"
using namespace std;


int main(int argc, char** argv) {
    FILE *fp;
    fp=fopen("text.txt","r");
    int a;

    fscanf(fp,"%d",&a);
    if(fp == NULL) {
        printf("cannot open");
    }

    printf("%d",a);
}
#包括
#包括
#包括
#包括“组件h”
使用名称空间std;
int main(int argc,字符**argv){
文件*fp;
fp=fopen(“text.txt”,“r”);
INTA;
fscanf(fp、%d、&a);
如果(fp==NULL){
printf(“无法打开”);
}
printf(“%d”,a);
}

您的代码看起来不错,只是您应该测试
fopen
是否在
fscanf
之前工作过。顺便说一下,您得到的数字是
int
您的文件可能有问题:

  • 无阅读权限
  • 文件不存在
  • 不包含正确的值

也,如果你只使用C函数,为什么使用C++?< /P>你没有检查文件是否打开。code>if(fp==NULL){/*错误报告*/}fscanf()也返回一个值。不检查库/系统调用的结果似乎在PasstTime上很流行,所以:(这是你的整个程序吗?如果不是,请发布一个。这就是为什么指南要求MCVE,这样我们就不会有一个愚蠢的对话框来说明程序包含了什么或没有包含什么。你能从你正在阅读的文件中添加一个十六进制转储吗?