-
文本文件读写:
"r"
:只读模式打开文本文件,文件必须存在。"w"
:写入模式打开文本文件,如果文件不存在则创建新文件。"a"
:追加模式打开文本文件,如果文件不存在则创建新文件。"r+"
:读写模式打开文本文件,文件必须存在。"w+"
:读写模式打开文本文件,如果文件存在则清空文件内容,如果文件不存在则创建新文件。"a+"
:读写模式打开文本文件,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。
-
二进制文件读写:
"rb"
:只读模式打开二进制文件,文件必须存在。"wb"
:写入模式打开二进制文件,如果文件不存在则创建新文件。"ab"
:追加模式打开二进制文件,如果文件不存在则创建新文件。"r+b"
:读写模式打开二进制文件,文件必须存在。"w+b"
:读写模式打开二进制文件,如果文件存在则清空文件内容,如果文件不存在则创建新文件。"a+b"
:读写模式打开二进制文件,如果文件存在则在文件末尾追加内容,如果文件不存在则创建新文件。
C语言读取文件示例:(有文件则读取,将文件中的大写字母转换为小写字母,没有则创建,写入,在转换)
#include <stdio.h>int main() {FILE* original_file, * temp_file;errno_t err;char buffer[100];// 使用 fopen_s() 函数打开原始文件(有则打开,没有则创建)err = fopen_s(&original_file, "./example.txt", "r");if (err != 0) {// 文件不存在,创建新文件并写入大写字母err = fopen_s(&original_file, "./example.txt", "w");if (err != 0) {printf("无法创建文件\n");return 1;}fprintf(original_file, "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n");}// 打开临时文件errno_t err1 = fopen_s(&temp_file, "./temp.txt", "w");if (err1 != 0) {printf("无法打开,错误码:%d\n", err1);return 1;}// 读取原始文件内容并修改后写入临时文件while (fgets(buffer, sizeof(buffer), original_file) != NULL) {// 进行内容修改(这里仅作示例,实际修改逻辑根据需求编写)// 这里将示例中的大写字母转换为小写字母for (int i = 0; buffer[i] != '\0'; ++i) {if (buffer[i] >= 'A' && buffer[i] <= 'Z') {buffer[i] += 32; // 转换为小写字母}}// 将修改后的内容写入临时文件fputs(buffer, temp_file);}// 关闭原始文件和临时文件fclose(original_file);fclose(temp_file);// 删除原始文件remove("example.txt");// 将临时文件重命名为原始文件rename("temp.txt", "example.txt");printf("文件修改完成\n");return 0;
}
C++示例:
#include <iostream>
#include <fstream>
#include <cctype>
#include<string>int main() {// 原始文件名std::string filename = "original_file.txt";// 打开文件进行读取和转换std::ifstream inputFile(filename);if (!inputFile.is_open()) {// 如果文件不存在,则创建新文件并写入初始内容std::ofstream outputFile(filename);if (!outputFile.is_open()) {std::cerr << "无法创建文件" << std::endl;return 1;}outputFile << "INITAL CONTENT FOR new file." << std::endl;outputFile.close();// 再次打开文件进行读取和转换inputFile.open(filename);if (!inputFile.is_open()) {std::cerr << "无法打开文件" << std::endl;return 1;}}// 读取并转换文件内容std::string content,before;char ch;while (inputFile.get(ch)) {before.push_back(ch);if (std::isupper(ch)) { // 如果是大写字母,则转换为小写字母ch = std::tolower(ch);}else if (std::islower(ch)) { // 如果是小写字母,则转换为大写字母ch = std::toupper(ch);}content.push_back(ch);}// 关闭文件inputFile.close();// 写入转换后的内容到文件std::ofstream outputFile(filename);if (!outputFile.is_open()) {std::cerr << "无法打开文件" << std::endl;return 1;}outputFile << content;outputFile.close();std::cout << "转换前的文件内容:" << std::endl;std::cout << before << std::endl;// 打印转换后的内容std::cout << "转换后的文件内容:" << std::endl;std::cout << content << std::endl;return 0;
}