栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++文件读写(2)fread与fwrite

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++文件读写(2)fread与fwrite

0. 头文件与命名空间

在vs中直接使用fopen函数会报错,需在项目->属性->c/c++->预处理器->点击预处理器定义中添加 _CRT_SECURE_NO_WARNING

#include 
#include 
// 在项目->属性->c/c++->预处理器->点击预处理器定义中添加 _CRT_SECURE_NO_WARNINGS
using namespace std;

1. 文件读写实现

很简单,直接写,但是有一些细节需要注意,注释中详细解释

int main() {
    // 读取文件,fopen的使用需将路径转化为c字符串的形式
	string filename = "test.txt";
	FILE * file1 = fopen(filename.c_str(), "w");
    // 定义字符串,方式1
	//string h1 = "hello world1";
	//string h2 = "hello world2";
	//string h3 = "hello world3";
	//string h4 = "hello world4";
    // 定义字符串,方式2
	char* h1 = "hello world1";
	char* h2 = "hello world2";
	char* h3 = "hello world3";
	char* h4 = "hello world4";
    // 写入文件,参数依次为:
    // 写入内容,需要传入地址
    // 写入元素的大小(以字节为单位)
    // 写入元素的个数,每个元素的大小为上行所述大小
    // 被写入的文件
    // "hello world1"的长度为12+结尾的,正好为13
    // string默认为32字节,所以不可以用sizeof(string)
	fwrite(h1, sizeof("hello world1"), 1, file1);
	fwrite(h2, sizeof("hello world2"), 1, file1);
	fwrite(h3, 13, 1, file1);
	fwrite(h4, 13, 1, file1);
	fclose(file1);
    
	FILE* file2 = fopen(filename.c_str(), "r");
    
	//char* r1 = new char[13];
	//char* r2 = new char[13];
	//char* r3 = new char[13];
	//char* r4 = new char[13];
    // 不预先定义字符串内容会导致读出有问题
	string r1 = "abcdefghigkl";
	string r2 = "abcdefghigkl";
	string r3 = "abcdefghigkl";
	string r4 = "abcdefghigkl";
    // 参数同fwrite
	fread(&r1, sizeof("hello world1"), 1, file2);
	fread(&r2, sizeof("hello world2"), 1, file2);
	fread(&r3, sizeof("hello world3"), 1, file2);
	fread(&r4, sizeof("hello world4"), 1, file2);
	fclose(file2);
    // 输出结果,即使是字符串指针类型的r1也同样采用下列输出方式
    // 在C++中有对<<进行重载,打印字符串指针时输出的不是地址,而是字符串
	cout << r1 << endl;
	cout << r2 << endl;
	cout << r3 << endl;
	cout << r4 << endl;

	return 0;
}

2. 结果显示

3. 注意 

1. 文件读写时txt文件内的内容可能为乱码,但并不影响读写,只需要记住自己的写入内容,需要时按照写入内容的长度依次读出即可;

2. 在字符串后加入n时可以在txt文件中正确显示写入的字符串,可以自行尝试。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/605093.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号