计算机物理
上的二进制文件
进行读写操作
文件
在逻辑
上分为文本文件
和二进制之分
C
读写文本文件
与二进制文件
的差别仅仅体现在回车换行符
\n
,会将其转换成\r\n
(回车换行)\r\n
,会将其转换成\n
fopen(文件路径,"r")
r代表读取fget(缓冲区,每次读取多少,文件地址)
fputs(写入的字符,文件地址)
fclose(文件地址)
//读取文本文件
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();
}
}
//写入文本文件
void main(){
char path[] = "C:\\picture\\water\\text.txt";
//打开
FILE *fp = fopen(path,"r");
char * text = "jdkfsd\njfdsk";
fputs(text,fp);
//关闭
fclose(fp);
getchar();
}
fopen(文件的地址 ,"rb");
b字符表示操作二进制文件binaryfread(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址))
fwrite(缓冲区,sizeof(缓冲区类型),每次读取多少,文件地址)
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(文件地址);
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("%d\n",filesize);
getchar();
}