debugging C++ -我的程序停止运行'freopen'函数< cstdio>

waxmsbnn  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(137)

在我的main.cpp中:

#include <cstdio>
#include "hashtable.h"

int main() {
    printf("1hello");
    freopen("2.txt", "w", stdout);
    printf("2hello");
    freopen("1.txt", "r", stdin);
    printf("3hello");
    int type;
    char buffer[1000];int data;
    hashtable table(10000, new naive_hashing(), new linear_probe());
    while (true) {
        scanf("%d", &type);
        if (type == 0) {
            scanf("%s", buffer);scanf("%d", &data);
            table.insert(hash_entry(buffer, data));
        }
        else if (type == 1) {
            scanf("%s", buffer);
            printf("%d\n", table.query(buffer));
        }
        else break;
    }
    return 0;
}

1.txt

0 dhu_try 3039
0 shirin 3024
0 SiamakDeCode 2647
0 huanghansheng 233
1 dhu
1 dhu_try
1 shirin
1 siamakdecode0
1 huanghansheng
2

output

1hello

正如你所看到的,程序在进入第一个freopen函数后暂停了。我已经检查了文档,但仍然找不到它停止运行的原因。有人能帮助我吗?:pleasing_face:

sq1bmfud

sq1bmfud1#

您将stdout的所有输出重定向到文件2.txt

freopen("2.txt", "w", stdout);

这就是为什么在freopen之后没有printf输出显示在控制台上的原因。查看文件2.txt,你很可能会在那里看到输出-如果freopen成功的话。总是检查那些可能失败的函数是否成功了。

相关问题