❤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
进行文件的读取和写入操作。