当前位置: 首页> 游戏> 单机 > 环球资源外贸网中文版_阿里巴巴批发网_抖音营销软件_企业邮箱登录入口

环球资源外贸网中文版_阿里巴巴批发网_抖音营销软件_企业邮箱登录入口

时间:2025/8/1 4:53:11来源:https://blog.csdn.net/u013090854/article/details/144485386 浏览次数:1次
环球资源外贸网中文版_阿里巴巴批发网_抖音营销软件_企业邮箱登录入口

在 C 和 C++ 中,文件处理是常见的任务之一,包括文件的读取、写入和操作。

1. C 文件处理

C 使用 stdio.h 提供的函数来处理文件操作。

a. 基本步骤

  1. 打开文件(fopen)。
  2. 读写文件(freadfwritefprintffscanffgetcfputc 等)。
  3. 关闭文件(fclose)。

b. 文件打开模式

模式描述
"r"只读模式,文件必须存在。
"w"写模式,文件存在会清空内容。
"a"追加模式,写入内容追加到末尾。
"r+"读写模式,文件必须存在。
"w+"读写模式,文件存在会清空内容。
"a+"读写模式,写入内容追加到末尾。

c. 文件操作示例

写文件

#include <stdio.h>int main() {FILE *file = fopen("example.txt", "w");if (file == NULL) {perror("Error opending file");return 1;}fprintf(file, "Hello, World!\n");fclose(file);return 0;
}

读文件

#include <stdio.h>int main() {FILE *file = fopen("example.txt", "r");if (file == NULL) {perror("Error opening file");return 1;}char line[100];while (fgets(line, sizeof(line), file)) {printf("%s", line);}fclose(file);return 0;
}

二进制文件读写

#include <stdio.h>int main() {FILE *file = fopen("binary.dat", "wb");if (file == NULL) {perror("Error opening file");return 1;}int numbers[] = {1, 2, 3, 4, 5};fwrite(numbers, sizeof(int), 5, file);fclose(file);file = fopen("binary.dat", "rb");if (file == NULL) {perror("Error opening file");return 1;}int buffer[5];fread(buffer, sizeof(int), 5, file);for(int i=0; i<5; i++) {printf("%d ", buffer[i]);}fclose(file);return 0;
}

2. C++ 文件处理

C++ 使用 fstream 提供高级文件操作功能,头文件为 <fstream>

a. 基本步骤

  1. 创建文件流对象(std::ifstreamstd::ofstreamstd::fstream)。
  2. 打开文件(使用构造函数或 open 方法)。
  3. 读写文件。
  4. 关闭文件(自动关闭或显式调用 close)。

b. 文件流类型

类型描述
std::ifstream输入文件流,用于读文件。
std::ofstream输出文件流,用于写文件。
std::fstream通用文件流,读写文件。

c. 文件操作示例

写文件

#include <fstream>
#include <iostream>int main() {std::ofstream file("example.txt");if(!file) {std::cerr << "Error opening file" << std::endl;return 1;}file << "Hello, C++ World!" << std::endl;file.close();return 0;
}

读文件

#include <fstream>
#include <iostream>
#include <string>int main() {std::ifstream file("example.txt");if(!file) {std::cerr << "Error opening file" << std::endl;return 1;}std::string line;while (std::getline(file, line)) {std::cout << line << std::endl;}file.close();return 0;
}

二进制文件读写

#include <fstream>
#include <iostream>int main() {std::ofstream file("binary.dat", std::ios::binary);if (!file) {std::cerr << "Error opening file" << std::endl;return 1;}int numbers[] = {1, 2, 3, 4, 5};file.write(reinterpret_cast<char *>(numbers), sizeof(numbers));file.close();std::ifstream infile("binary.dat", std::ios::binary);if (!infile) {std::cerr << "Error opening file" << std::endl;return 1;}int buffer[5];infile.read(reinterpret_cast<char*>(buffer), sizeof(buffer));for(int n : buffer) {std::cout << n << " ";}infile.close();return 0;
}

3. 常见操作和注意事项

a. 文件指针

  • C 提供 ftellfseek 操作文件指针:
fseek(file, 0, SEEK_END);		// 移动到文件末尾
long size = ftell(file);		// 获取文件大小
  • C++ 使用 seekgseekp
file.seekg(0, std::ios::end);	// 读指针移动到末尾
std::streampos size = file.tellg();		// 获取文件大小

b. 文件状态检查

  • C 中可以用 ferror 检查错误。
  • C++ 提供流状态检查:
if (file.fail()) {std::cerr << "Error occurred!" << std::endl;
}

c. 异常安全
C++ 文件流可以与异常处理结合使用:

#include <fstream>
#include <iostream>
#include <stdexcept>int main() {try {std::ifstream file("example.txt");if (!file) {throw std::runtime_error("Error opening file");}std::string content;while (std::getline(file, content)) {std::cout << content << std::endl;}} catch (const std::exception& e) {std::cerr << e.what() << std::endl;}return 0;
}

通过熟练掌握 C/C++ 文件处理技术,可以高效地完成各种文件操作。C 提供了基础功能,而 C++ 则提供了更安全和高级的文件流操作,适合复杂的应用场景。

关键字:环球资源外贸网中文版_阿里巴巴批发网_抖音营销软件_企业邮箱登录入口

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: