1.二进制的好处
除了文本文件都是二进制
1.节约空间
2.内存中都用二进制
3.比较精确的表示数值
2.路径
绝对路径
相对路径(文件打开后的以后的路径)
3.文件缓冲区
何时释放
1.程序运行完
2.占满的时候
4.写平衡
一次写完后,紧接着后面的写。
5.练习(fopen(),fread(),fwrite(),fclose(),fseek()?
#if 0
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
//文件操作:
struct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
FILE *fopen(
const char *filename,
const char *mode
);
size_t fread(
void *buffer,//读到的数据,放到这里
size_t size,//一次读几个?
size_t count,//总共读几个?
FILE *stream //读哪个文件的?
);
buffer 数据的存储位置。
size 项目大小 (以字节为单位)。
count 要读取的最大项数。
stream 为 FILE 结构的指针。
//写文件
/*
size_t fwrite(
const void *buffer,//往文件内写的数据
size_t size,//每次写多少字节
size_t count,//总共写多少次
FILE *stream //写到哪个文件里面
);
stdin
stdout
*/
int main()
{
char buffer[10];
int n = fread(buffer,sizeof(char),10,stdin);
fwrite(buffer,sizeof(char),n,stdout);
return 0;
}
int main()
{
const char *path = "E:\\a.txt";
FILE *fr = fopen(path,"r");//以二进制的形式写
assert(fr != NULL);
char ch;
while(fread(&ch,sizeof(char),1,fr) > 0)//读取字符的个数
{
putchar(ch);//打印字符 不会换行
}
printf("\n");
/*
int fseek(
FILE *stream,//移动的文件指针
long offset,//偏移量
int origin//位置
);
SEEK_CUR //文件指针的当前位置。
SEEK_END //文件结尾。
SEEK_SET //文件开头
*/
fseek(fr,3,SEEK_SET);
while(fread(&ch,sizeof(char),1,fr) > 0)//读取字符的个数
{
putchar(ch);//打印字符 不会换行
}
printf("\n");
return 0;
}
int main()
{
const char *path = "E:\\b.txt";
FILE *fw = fopen(path,"wb");//以二进制的形式写
//如果有文件,将原来文件的内容清除掉
//如果没有,自己创建文件
assert(fw != NULL);
const char *path2 = "E:\\b.txt";
FILE *fr = fopen(path2,"rb");//以二进制的形式写
int a = 10;
fwrite(&a,sizeof(int),1,fw);
fclose(fw);//关闭文件
//面试问题1:fclose的作用???
int b = 0;
fread(&b,sizeof(int),1,fr);
printf("%d\n",b);//????????
/*char *str = "here is tulun";
fwrite(str,sizeof(char),strlen(str),fw);*/
fclose(fr);//关闭文件
return 0;
}
//读文件
/*int main()
{
const char *path = "E:\\a.txt";
FILE *fr = fopen(path,"r");
assert(fr != NULL);
//读文件
char buffer[100] = {};
fread(buffer,sizeof(char),100,fr);
printf("%s\n",buffer);
return 0;
}*/
#endif
5.1练习复制粘贴
void CopyMp4(const char *dest,const char *src)
{
assert(dest != NULL && src != NULL);
FILE *fr = fopen(src,"rb");
FILE *fw = fopen(dest,"wb");
assert(fr != NULL && fw != NULL);
char ch;
int len = 0;
while( (len = fread(&ch,sizeof(char),1,fr)) > 0 )
{
fwrite(&ch,sizeof(char),len,fw);
}
fclose(fr);
fclose(fw);
}
int main()
{
char *srcpath = "E:\\亮剑.mp4";
char *destpath = "D:\\老李.mp4";
CopyMp4(destpath,srcpath);
return 0;
}
5.2面试问题1:fclose的作用???
fclose(fr);//关闭文件
1288

被折叠的 条评论
为什么被折叠?



