-
文本文件读写:
"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;
std::cout << "文件创建成功,已写入数据:" << std::endl;
outputFile.close();
// 再次打开文件进行读取和转换
inputFile.open(filename);
if (!inputFile.is_open()) {
std::cerr << "无法打开文件" << std::endl;
return 1;
}
}
// 逐行读取文件内容并打印
std::cout << "转换前的文件内容:" << std::endl;
std::string line;
while (std::getline(inputFile, line)) {
std::cout << line << std::endl;
}
inputFile.clear(); // 清除文件状态标志
inputFile.seekg(0); // 将文件指针移动到文件的开头位置
// 读取并转换文件内容
std::string content;
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 << content << std::endl;
return 0;
}