fread和fwrite用法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char ** argv)
{
FILE* fp;
char buf[128]={0};
int ret=0;
int i=10000;
if(2!=argc)
{
printf("error args\n");
system("pause");
return -1;
}
//转义字符\\ rb+ 二进制模式
fp=fopen(argv[1],"rb+");
if(NULL==fp)
{
perror("fopen");
system("pause");
return -1;
}
//打开成功后开始fread
//fread(buf,size每个对象大小,num个对象(不要超过buf数量,buf-1),)
//ret=fread(buf,sizeof(char),sizeof(buf)-1,fp);
//puts(buf);
strcpy(buf,"hello\nworld");
//文本模式 \n写入,存储的是\r\n,读取出来自动转为\n
//比二进制多一个字节
//而二进制模式 \n就是\n,写非字符型数据必须用二进制模式
//写字符串 txt格式必须\r\n才可以换行
//ret=fwrite(buf,sizeof(char),strlen(buf),fp);
//内存全部清空为0
//memset(buf,sizeof(char),sizeof(buf),fp);
//写的是整型数,写非字符数据,必须用二进制模式rb
ret=fwrite(&i,sizeof(int),1,fp);
//fseek():可以改变文件的位置指针,成功返回0,失败负数
//fseek() 文件开头 SEEK_SET 0
//文件当前位置 SEEK_CUR 1 文件末尾 SEEK_END 2
//fseek 往前偏移到文件头
//在文本模式下,fseek的偏移\r\n算两个字节
ret=fseek(fp,0,SEEK_SET);
i=0;
ret=fread(&i,sizeof(int),1,fp);
printf("i=%d\n",i);
system("pause");
}