C++ 文本方式按行写入文件,以及按行读取

#include<stdio.h>
#include
using namespace std;
FILE* stream;
errno_t err;
int open()
{
if ((err = fopen_s(&stream, “d:/aaa.xyz”, “wb”)) != 0) {
cout << “failed open” << endl;
return -1;
}
else return 0;
}
int openr()
{
if ((err = fopen_s(&stream, “d:/aaa.xyz”, “rb”)) != 0) {
cout << “failed open” << endl;
return -1;
}
else return 0;
}
int save()
{
open();
char ip[] = “192.168.1.100”;
int port = 8081;
cout << “input your ip:”;
gets_s(ip);
cout << “input port:”;
cin >> port;
char line[256];
sprintf_s(line, “ip=%s\n”, ip);//后面的斜杆 实现按行存入
fwrite(line,1,strlen(line),stream);

sprintf_s(line, "port=%d\n", port);
fwrite(line, 1, strlen(line), stream);

//fprintf(stream, "ip=%s\n", ip);
//fprintf(stream, "port=%d\n", port);

/*fprintf 与 fwirte 比较
前者可以将数据格式化成文本格式保存(要实现按行的话直接在后面加\n作为分隔符)

  文本方式存储数据时,数据量不能太大(由于处理速度慢且多)
  当数据量太大时,使用“按字节方式存储”

*/

_fcloseall();
return 0;

}

int load()
{
openr();
char buf[512]; //假设一行最多512Byte
while (!feof(stream)) {
// fread(buf, 1, 4, stream);
// for(int i=0;i<sizeof(buf);i++)
// cout << buf[i] ;

	char* line = fgets(buf, 512, stream);	//实现按行读取 存到line首地址数组中去,如果读取失败,就会返回NULL;
	if (line){
		cout << "got:" << line;
	}
}
 
_fcloseall();
return 0;

}

int main()
{
// save();
load();
_fcloseall();

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿波茨的鹅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值