C语言文件操作
C语言库函数实现:
- 打开1.txt文件并写入"hello world"
- 从1.txt读出内容并打印;
int main(int argc, char* argv[])
{
char buff[1024] = {"hello world"};
FILE* f = fopen("1.txt","w+");
fwrite(buff, 1, strlen(buff), f);
rewind(f);
int c = fread(buff,1,1024,f);
buff[c] = 0;
cout << buff << endl;
fclose(f);
return 0;
}
其中有两个注意的要点:
1)注意文件的打开方式(主要是w+和r+):
"w+"代表(r+和w+不一样的地方括号里标出,其余规则都一样):
打开文件进行“读写”操作,即既可读取,又可写入。
若欲操作的文件不存在,则新建文件(r+则直接报错)。
成功打开文件时,文件指针位于文件开头。
打开文件后,会清空文件内原有的内容(r+是不会清空)。
无论是读取内容还是写入内容,都可在文件中任意位置进行,且进行写入操作时,会覆盖原有位置的内容
2)注意文件指针的位置,代码第七行rewind(f); 将文件指针置头了,否则刚fwrite完,文件指针在尾,紧接着fread就读不出来内容了!;
C++文件操作
可以看到C语言的文件操作需要考虑的点很多,我们试试C++;
#include <fstream>
int main(int argc, char* argv[])
{
char buff[1024] = "hellow world";
ofstream o("1.txt");
if (!o.is_open()) cerr << "open error!" << endl;
o.write(buff, strlen(buff));
o.close();
buff[0] = 0;
ifstream f("1.txt");
if (!f.is_open()) cerr << "open error!" << endl;
string ret;
string line;
while (getline(f,line)) ret += line;
cout << ret<< endl;
f.close();
return 0;
}
C++典型的特征就是用了ofstream和ifstream这两个文件写入和文件读出流,先实例化对象,再一步步调用对象方法;
对比
C语言方法:代码量少,但是注意的细节比较多,比如文件打开的方式,文件指针的位置;
C++方法:代码量也不算多,实例化对象以后可以无脑调用.is_open()打开;
不过这两种方式都需要记得如果读取内容并打印,需要手动追加‘\0’,让文本内容变成C字符内容才能正常打印 ;
实际上后期网络编程多数情况是需要读取前端人员制作的html内容或者客户端发来的各种报文,熟悉C++方法以后好用很多;
|