溫馨提示×

c++的freopen函數(shù)如何使用

c++
小億
157
2023-09-29 07:16:29
欄目: 編程語言

freopen函數(shù)可以用于重定向標(biāo)準(zhǔn)輸入輸出流。

其原型為:

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

filename參數(shù)是要被打開的文件名。

mode參數(shù)是打開文件的模式,可以是以下幾種模式之一:

  • “r”:讀取模式,打開一個(gè)已有的文本文件進(jìn)行讀取。

  • “w”:寫入模式,打開一個(gè)文本文件進(jìn)行寫入,如果文件不存在則創(chuàng)建,如果文件存在則清空文件內(nèi)容。

  • “a”:追加模式,打開一個(gè)文本文件進(jìn)行寫入,如果文件不存在則創(chuàng)建。

  • “rb”:讀取二進(jìn)制模式,打開一個(gè)已有的二進(jìn)制文件進(jìn)行讀取。

  • “wb”:寫入二進(jìn)制模式,打開一個(gè)二進(jìn)制文件進(jìn)行寫入,如果文件不存在則創(chuàng)建,如果文件存在則清空文件內(nèi)容。

  • “ab”:追加二進(jìn)制模式,打開一個(gè)二進(jìn)制文件進(jìn)行寫入,如果文件不存在則創(chuàng)建。

stream參數(shù)是已經(jīng)打開的文件流指針,可以是stdin、stdout、stderr或者通過fopen函數(shù)打開的文件流指針。

下面是一個(gè)示例,將標(biāo)準(zhǔn)輸入流重定向到一個(gè)文件,然后從該文件中讀取數(shù)據(jù):

#include <iostream>
#include <cstdio>
int main() {
freopen("input.txt", "r", stdin); // 將標(biāo)準(zhǔn)輸入流重定向到文件input.txt
int num;
std::cin >> num; // 從文件中讀取數(shù)據(jù)
std::cout << "Number: " << num << std::endl;
return 0;
}

在運(yùn)行該程序時(shí),輸入的數(shù)據(jù)將從input.txt文件中讀取。

注意:在使用freopen函數(shù)時(shí),需要小心文件的打開和關(guān)閉操作,以免出現(xiàn)資源泄漏或者文件操作錯(cuò)誤的情況。

0