今天写最后的部分文件IO操作
什么是文件IO
- 就是对存储在
计算机物理
上的二进制文件
进行读写操作
-
文件
在逻辑
上分为文本文件
和二进制之分
-
C
读写文本文件
与二进制文件
的差别仅仅体现在回车换行符
- 写文本时,每遇到一个
n
,会将其转换成rn
(回车换行) - 读文本时,每遇到一个
rn
,会将其转换成n
读写文本文件
- 关键函数
-
fopen(文件路径,"r")
r代表读取 fget(缓冲区,每次读取多少,文件地址)
fputs(写入的字符,文件地址)
fclose(文件地址)
代码语言:javascript
复制//读取文本文件
void main(){
char path[] = "C:\picture\water\text.txt";
//打开
FILE *fp = fopen(path,"r");
if(fp == NULL){
printf("文件打开失败");
return;
}
//读取
char buff[50];//缓冲
while(fget(buff,50,fp)){
printf("%s",buff);
}
//关闭
fclose(fp);
getchar();
}
}
代码语言:javascript
复制//写入文本文件
void main(){
char path[] = "C:\picture\water\text.txt";
//打开
FILE *fp = fopen(path,"r");
char * text = "jdkfsdnjfdsk";
fputs(text,fp);
//关闭
fclose(fp);
getchar();
}
读写二进制文件
- 文件复制
-
fopen(文件的地址 ,"rb");
b字符表示操作二进制文件binary fread(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址))
fwrite(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址)
代码语言:javascript
复制void main(){
char *read_path = "C:\picture\water\text.exe";
char *write_path = "C:\picture\water\text2.exe";
//读文件 b字符表示操作二进制文件binary
FILE *read_fp = fopen(read_path ,"rb");
//写的文件
FILE *write_fp = fopen(write_path,"wb");
//复制缓冲区域
int buff[50];
//每次读到的数据长度
int len = 0;
while((len = fread(buff,sizeof(int),50,read_fp)) ! = 0){
//将读到的内容写到新的文件
fwrite(buff,sizeof(int),len,write_fp);
}
//关闭流
fclose(read_fp);
fclose(write_fp);
getchar();
}
- 获取文件的大小
-
fseek(文件地址,偏移量,SEEK_END);
//SEEK_END定位到文件末尾,0代表没有偏移量 ftell(文件地址);
代码语言:javascript
复制void main(){
char *read_path = "C:\picture\water\text.exe";
FILE *read_fp = fopen(read_path ,"rb");
//重新定位文件指针
//SEEK_END定位到文件末尾,0代表没有偏移量
fseek(read_fp,0,SEEK_END);
//返回当前的文件指针,相对于文件开头的位移量
long filesize = ftell(read_fp);
printf("%dn",filesize);
getchar();
}
文件IO的作用
好啦,C语言的基础知识我们已经搞定了,在看C的代码应该大部分都可以看懂,后续会写一些C 的知识点,NDK的大船已经扬起了帆,让我们开启这神秘的旅程吧!