使用freopen函数重定向输入流

    xiaoxiao2025-04-14  7

    有那么一阵子,调试程序的时候经常遇到大量输入数据的情况,如果从控制台输入,将是非常耗时且容易出错,幸好有freopen函数,可以将输入重定向到文件中。也就是说,将输入数据放到文件中,调用freopen函数将输入流从控制台重定向为文件,那么后续从控制台读取输入数据的操作,将自动变为从文件中读取,不需要手动从控制台输入了。

    用一个简单的例子,记录下freopen的用法:

    int main(int argc, char **argv) { char name[16]; unsigned int number; unsigned int score; if (!freopen("input.txt", "r", stdin)) //将标准输入重定向到input.txt文件(只读模式) return -1; scanf("%u %s %u", &number, &name[0], &score); //这里将从input.txt文件中读取数据,而不是从标准输入读取 fclose(stdin); return 0; }

    当然,freopen也可以重定向输出流,如果想将printf的输出结果放到output.txt文件中,那么可以通过下面的语句来实现:

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

    以下是freopen函数简介:

    函数声明:

    FILE *freopen(const char *filename, const char *mode, FILE *stream);

    参数说明:

    filename: 需要重定向到的文件名(比如上述input.txt)

    mode: 文件访问模式,"r"-只读,"w"-只写,"a"-追加写入

    stream: 需要被重定向的文件流(如上述stdin)

    返回值:

    重定向成功,则返回指向该重定向流的指针,失败返回NULL

    转载请注明原文地址: https://ju.6miu.com/read-1298067.html
    最新回复(0)