运用的起来和open那些没什么多大区别,懂得各个参数的意思即可仿造open那些来操作。
第一种:fwrite 和 fread 的写法
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char *str = "wenjian chu ru men !";
char readbuf[128] = {0};
//FILE *fopen(const char *path, const char *mode);
fp = fopen("./yy.text","w+"); //“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件
//size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
//const void *ptr :缓冲区buf
//size_t size : 一个字符的大小
//size_t nmemb :个数
//FILE *stream :哪个文件
fwrite(str,sizeof(char),strlen(str),fp); //第二个参数:写一个字符的大小,第三个参数:写strlen计算的字符串的个数这么多次
// int fseek(FILE *stream, long offset, int whence);
fseek(fp,0,SEEK_SET);
//size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
fread(readbuf,sizeof(char),strlen(str),fp);
printf("read data: %s \n",readbuf);
fclose(fp);
return 0;
}
第二种:fwrite 和 fread 的写法
#include <stdio.h>
#include <string.h>
int main()
{
FILE *fp;
char *str = "wenjian chu ru men !";
char readbuf[128] = {0};
//FILE *fopen(const char *path, const char *mode);
fp = fopen("./yy.text","w+"); //“w+” 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件
//size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
//const void *ptr :缓冲区buf
//size_t size : 一个字符的大小
//size_t nmemb :个数
//FILE *stream :哪个文件
fwrite(str,sizeof(char)*strlen(str),1,fp); //第二个参数:把整个字符串直接写完,第三个参数:写一次
// int fseek(FILE *stream, long offset, int whence);
fseek(fp,0,SEEK_SET);
//size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
fread(readbuf,sizeof(char)*strlen(str),1,fp);
printf("read data: %s \n",readbuf);
fclose(fp);
return 0;
}
fwrite 和 fread 的返回值由它们的第三个参数决定,但两个有一点点区别。 fwrite的第三个参数可任意写数字,因为写入的时候就是写了任意数字这么多次,只是看不到。但是fread只能按照规则写(建议手动代码看结果)
,