0

我尝试使用 freopen() 从文件中读取 int。文件in.txt只是有一个数字:1,但我在输出中得到的是 -858993460。我的代码如下所示:

#include <cstdio>
#pragma warning(disable:4996)
using namespace std;

int main()
{
    freopen("in.txt", "r", stdin);
    int t;
    scanf("%d", &t);
    printf("%d\n", t);
    return 0;
}

为什么 scanf() 不能正确地从in.txt中读取?

4

1 回答 1

0

规则 #1,如果你有文件 io 然后检查返回值

int main()
{
    FILE * ret = freopen("in.txt", "r", stdin);
    if(ret == NULL){
       printf("failed to open file");
       return -1;
    }
    int t;
    scanf("%d", &t);
    printf("%d\n", t);
    return 0;
}

一旦我将它指向一个真实文件,你的代码对我来说运行良好

还要检查 scanf 的返回

 int count = scanf("%d", &t); 
 if(count != 1){
     printf("bad number");
     return -1;
 } 
于 2022-03-02T02:18:56.540 回答