C语言对文件操作笔记。
fopen:
fopen(srcFileName, "rb")
第一个参数是文件路径,第二个参数是文件的访问模式,
r:读,
w:写,
rb:二进制的方式读取,
wb:二进制的方式写入
a+ : 在文件末尾追加内容
fread:
fread(buf, sizeof(int), 512, srcFile)
第一个参数:缓冲区数组;
第二个参数缓冲区类型大小;
第三个参数缓冲区大小,
第四个参数file指针。
注意第二个参数,buf类型为int,则sizeof(int),如果类型为char,则sizeof(char),double则sizeof(double)
该函数返回读取到buf的长度。
fwrite:
fwrite(buf, sizeof(int), len, dstFile);
第一个参数:缓冲区数组;
第二个参数缓冲区类型大小;
第三个参数读取到buf的长度,
第四个参数file指针。
fputs
把字符串写入到文件中
fseek
//三个参数 SEEK_SET(开头), SEEK_CUR(当前), SEEK_END(移动到最后)
fseek(fp, 0L, SEEK_END);
文件指针定位到文件末尾,偏移0个字节
fseek(fp,50L,0)
其作用是将位置指针移到离文件头50个字节处。
fgetc
从指定的file中 获取下一个字符(一个无符号字符),并把位置标识符往前移动。
文件复制
void main(){
// 文件路径
char * srcFileName = "G:\\9fc3af44ee6625d67149fc6ae8a36d13\\示例图片_01.jpg";
FILE * srcFile = fopen(srcFileName, "rb");
char * dstFileName = "G:\\9fc3af44ee6625d67149fc6ae8a36d13\\示例图片_011.jpg";
FILE * dstFile = fopen(dstFileName, "wb");
int buf[512];
int len = 0;
while ((len = fread(buf, sizeof(int), 512, srcFile)) != 0)
{
printf("len: %d \n", len);
fwrite(buf, sizeof(int), len, dstFile);
}
fclose(srcFile);
fclose(dstFile);
getchar();
}
文件大小
在c中,没有函数来获取文件的大小 通过fseek方法将文件的指针移动到最后,在获取当前的偏移,来获取文件的大小。
void main(){
char * srcFileName = "G:\\9fc3af44ee6625d67149fc6ae8a36d13\\目录说明.txt";
FILE * srcFile = fopen(srcFileName, "rb");
fseek(srcFile, 0, SEEK_END);
long file_size = ftell(srcFile);
printf("-- %ld", file_size);
fclose(srcFile);
getchar();
}
文件的加解密
加密:把每一个字节都拿出来,对每一个字节都处理,或者把某部分字节拿出来,进行处理。
解密:把加密的文件的加密字节拿出来,再次进行异或操作处理。
void main(){
char * dstFileName = "G:\\9fc3af44ee6625d67149fc6ae8a36d13\\示例图片_011_en.jpg";
FILE * dstFile = fopen(dstFileName, "rb");
char * deFileName = "G:\\9fc3af44ee6625d67149fc6ae8a36d13\\示例图片_011_de.jpg";
FILE * deFile = fopen(deFileName, "wb");
int c;
while ((c = fgetc(dstFile)) != EOF)//获取到每个字节,进行异或操作
{
fputc(c ^ 5, deFile);
}
fclose(deFile);
fclose(dstFile);
getchar();
}