因为编译器的不同,可能运行的效果也不同,小编用VS2019的。
写出代码有问题,那就是考验一个人解决问题的能力体现。有问题不用怕,就怕没问题。Are you OK?
Ready!
项目下创建“Mr.she.txt”文件,同时输入一些字母。
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; void WriteToFile(); int main() { WriteToFile(); system("pause"); return 0; } void WriteToFile() { FILE* f_Writed = NULL; //写入流对象 FILE* f_Read = NULL; //读出流对象 //打开文件 f_Read = fopen("Mr.she.txt", "r"); //Mr.she.txt 就是要用到的文件名,小编先在项目下创建好了,‘r’只读属性,就是防止写入的功能 //判断文件打开是否失败 if (!f_Read) { cout << "文件打开失败!" << endl; system("pause"); return; } f_Writed = fopen("Mr.jie.txt", "w"); //判断写入时,文件打开与否 if (!f_Writed) { cout << "文件打开失败!" << endl; system("pause"); return; } cout << "文件打开成功!" << endl; //写入和读出 // 还没写呢 //关闭流对象 if (f_Writed || f_Read) { fclose(f_Writed); fclose(f_Read); } }
运行后,就能输出文件打开了。
fread(void* buffer,size_t _Elementsize,size_t _Elementcount,File* stream); write(void* buffer,size_t _Elementsize,size_t _Elementcount,File* stream);
读出和写入的函数,虽然传入的参数略同,但是实现的功能却不一样,详解请看他人博客,小编就不多说了。记住:它们返回的值都是size_t类型(字节数),
看一个人的代码技术含量,会看函数返回值就是能力之一。
void WriteToFile() { FILE* f_Writed = NULL; //写入流对象 FILE* f_Read = NULL; //读出流对象 //打开文件 f_Read = fopen("Mr.she.txt", "r"); //Mr.she.txt 就是要用到的文件名,小编先在项目下创建好了,‘r’只读属性,就是防止写入的功能 //判断文件打开是否失败 if (!f_Read) { cout << "文件打开失败!" << endl; system("pause"); return; } f_Writed = fopen("Mr.jie.txt", "w"); //判断写入时,文件打开与否 if (!f_Writed) { cout << "文件打开失败!" << endl; system("pause"); return; } cout << "文件打开成功!" << endl; //写入和读出 //声明一些需要用到的变量 char stringname[256] = { 0 }; //用来存储文件被读出的数据 int ret = 0; //接收feof()状态值 size_t readLength = 0; //接收fread()数据大小值 size_t writeLength = 0; //接收fwrite()数据大小值 //读出、写入文件 while ((ret = feof(f_Read)) != EOF) { //读出文件,因为我们假设不知道文件所写的是什么内容,文件又不大的话,可以先设定为256 //当然sizeof(stringname)也行 readLength = fread((char*)stringname, 1,sizeof(stringname), f_Read); //做个打印输出,以判断是否读出 /*for (int i =0;i<readLength ; i++) { cout << stringname[i] << endl; }*/ //打开文件,依次将每读出一块数据,数据可以设定,然后写入到文件中 writeLength = fwrite((char*)stringname,1, readLength, f_Writed); //当读取完毕,结束继续读,feof()这个函数会读取2次 if (ret == feof(f_Read)) { system("pause"); break; } } //判断当写入和读出两个数据完全不同,则爆出提示错误,退出 if (readLength != writeLength) { cout << "写入文件失败,请检查是否磁盘溢满!" << endl; } // 还没写呢 //关闭流对象 if (f_Writed || f_Read) { fclose(f_Writed); fclose(f_Read); } }
运行后的结果就是,“Mr.jie.txt”文件内能输出你手头所输入的数据。