#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;
}