#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
using namespace std;
int main(){
// C++
cout << "C++ IO:" << endl;
fstream fin, fout;
fin.open("FileIO.txt", ios::in);
fout.open("FileIOcpp.txt", ios::out);
string s;
cout << "逐str读取:\n";
while(!fin.eof()){
fin >> s; // 逐个 s 的取,根据 s 类型而定
cout << s << endl;
fout << s << endl;
}
fin.close();
fout.close();
fin.open("FileIO.txt", ios::in);
cout << "按行读取:\n";
while(getline(fin, s)){ // 逐行读取
cout << s << endl;
}
fin.close();
// C
printf("\nC IO:\n");
FILE *fpIn = fopen("FileIO.txt", "r");
FILE *fpOut = fopen("FileIOc.txt", "w");
// 直接以字符串读取所有
fseek(fpIn, 0, SEEK_END); // 跳到文件尾
long lsize = ftell(fpIn); // 获取文件内容长度
fseek(fpIn, 0, SEEK_SET); // 回到文件首
char *str = (char*)malloc((lsize+1)*sizeof(char)); // 申请空间
fread(str, sizeof(char), lsize, fpIn); // 读取数据,长度为lsize
printf("一次读取:\n%s\n", str);
fseek(fpIn, 0, SEEK_SET); // 重回文件首
// 按字符串读取所有
printf("逐str读取:\n");
while(!feof(fpIn)){
fscanf(fpIn, "%s", str);
printf("%s\n", str);
fprintf(fpOut, "%s\n", str);
}
fseek(fpIn, 0, SEEK_SET); // 重回文件首
// 按行读取所有
printf("逐行读取:\n");
while(!feof(fpIn)){
fgets(str, lsize+1, fpIn); // 参数分别为: 接收buf, 最大长度,文件指针
printf("%s\n", str); //注意 fgets 会将换行符也接受
}
free(str);
fclose(fpIn);
fclose(fpOut);
return 0;
}
【 文件读写 】简单C/C++文件读写代码示例—— FILE 指针和 fstream 流文件
猜你喜欢
转载自blog.csdn.net/qq_40491305/article/details/104491847
今日推荐
周排行