❤C++中文件操作
一、如何正确使用 freopen 进行文件的输入和输出重定向:
#include <iostream>
#include <cstdio>
int main() {
// 将输入重定向到 input.txt
freopen("input.txt", "r", stdin);
// 将输出重定向到 output.txt
freopen("output.txt", "w", stdout);
// 读取输入数据,并进行处理
int a, b;
std::cin >> a >> b;
int sum = a + b;
// 输出结果
std::cout << "Sum: " << sum << std::endl;
return 0;
}使用了 freopen 函数来实现输入和输出的重定向。在示例代码中,freopen("input.txt", "r", stdin) 将输入重定向到名为 "input.txt" 的文件,freopen("output.txt", "w", stdout) 将输出重定向到名为 "output.txt" 的文件。
这样,程序就会从 "input.txt" 文件中读取输入数据,并将输出结果写入到 "output.txt" 文件中。
对于文件的打开模式和关闭操作,这里使用了标准输入流 std::cin 和标准输出流 std::cout,它们会自动与重定向的文件关联起来,所以不需要显式地使用 FILE* 指针和 fclose 函数来进行操作。
二、用 fopen 打开后用fscanf 和 fpintf 举例
当使用 fopen 打开文件后,可以使用 fscanf 函数来读取文件中的数据,使用 fprintf 函数将数据写入文件。下面是一个示例代码,演示了如何使用 fopen、fscanf 和 fprintf 进行文件的读取和写入操作:
#include <iostream>
#include <cstdio>
int main() {
// 打开输入文件和输出文件
FILE* inputFile = fopen("input.txt", "r");
FILE* outputFile = fopen("output.txt", "w");
if (inputFile == NULL || outputFile == NULL) {
std::cerr << "Failed to open files!" << std::endl;
return 1;
}
// 读取输入数据
int a, b;
fscanf(inputFile, "%d %d", &a, &b);
// 计算和
int sum = a + b;
// 将结果写入输出文件
fprintf(outputFile, "Sum: %d\\n", sum);
// 关闭文件
fclose(inputFile);
fclose(outputFile);
return 0;
}在这个示例中,我们使用 fopen 分别打开了输入文件 "input.txt" 和输出文件 "output.txt"。
使用 fscanf(inputFile, "%d %d", &a, &b) 从输入文件中读取两个整数,这里假设文件中的数据是以空格分隔的整数。
然后,我们计算这两个整数的和,将结果存储在 sum 变量中。
接下来,使用 fprintf(outputFile, "Sum: %d\\n", sum) 将结果写入输出文件,这里假设结果以 "Sum: " 开头,后面是计算的和。
最后,使用 fclose 函数关闭输入文件和输出文件。
请注意,示例代码中添加了错误检查,以确保文件成功打开。如果打开文件失败(例如文件不存在或无法打开),程序将打印错误消息并返回 1。
这个示例演示了如何使用 fopen、fscanf 和 fprintf 进行文件的读取和写入操作。

