ฉันพยายามอ่าน int จากไฟล์โดยใช้ freopen() ไฟล์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ไม่ถูกต้อง

ตอบ

กฎ # 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;
 }