文件读取
//文件的读
#include <stdio.h>
#include <stdlib.h> // 文件的操作需要用这个包
int main() {
//定义一个文件路径的字符串
char * file_path = "D:\\123.txt";
//fopen函数打开文件,参数一是文件的路径,参数二是操作文件的模式(r:读,w:写,rb:作为二进制文件读, rw:作为二进制文件写)
//返回体为FILE的结构体指针
FILE * file = fopen(file_path, "r");
//文件读取失败会返回NULL
if (!file) {
printf("文件操作失败");
exit(0); // 退出程序
}
//定义读取缓存区,和java一样
char buffer[10];
//fgets读取文件, 参数一:读取容器(缓冲区) 参数二:读取长度(缓冲区长度) 参数三:读取文件指针
while (fgets(buffer, 10, file)) {
printf("%s", buffer);
}
//文件操作完毕关闭文件
fclose(file);
return 0;
}
文件写入
//文件的写
#include <stdio.h>
#include <stdlib.h>
int main() {
char * file_path = "D:\\456.txt";
//使用写的模式若目录下没有文件会自动生成一个0kb的文件
FILE * file = fopen(file_path, "w");
if (!file) {
printf("文件操作失败");
exit(0); // 退出程序
}
//fputs写入文件,参数一:写入文件的内容 参数二:写入文件的指针
fputs("123456789", file);
//关闭文件
fclose(file);
return 0;
}
文件的复制
//文件的复制
#include <stdio.h>
#include <stdlib.h>
int main() {
char * file_path = "D:\\123.txt";
char * file_copy_path = "D:\\789.txt";
//使用rb模式读取二进制数据
FILE * file = fopen(file_path, "rb");
//使用rw模式写入二进制数据,此操作会重新生成文件,以前的文件会被覆盖
FILE * fileCopy = fopen(file_copy_path, "wb");
if (!file && !fileCopy) {
printf("文件操作失败");
exit(0);
}
//第一种方式:fread 和 fwrite
//定义缓冲区
int buffer[512];
//定义每次读取数据长度;
int len;
//fread读取二进制数据,参数一:读取容器(缓冲区) 参数二:每次读取偏移的字节数(int的长度) 参数三:每次读取内容的长度(容器大小) 参数四:被读取文件指针
//返回读取到的数据长度
while ((len = fread(buffer, sizeof (int), 512, file)) != 0) {
//fwrite写入二进制数据,参数一:写入内容 参数二每次写入的偏移的字节数(int的长度) 参数三:每次写入内容的长度(容器大小) 参数四:复制的文件指针
fwrite(buffer, sizeof (int), len, fileCopy);
}
//第二种方式(操作指针移动一个字节,可用于通过字节加解密文件):fgetc 和 fputc
//接收读取的值
int c;
//fgetc,操作文件指针移动一个字节,返回移动时读取的的这一个字节。循环移动到EOF(end for file)时即移动到末尾完毕
while ((c = fgetc(file)) != EOF) {
//fputc,当前文件指针位置写入一个字节并操作文件指针移动一个字节。
fputc(c, fileCopy);
}
//关闭文件
fclose(file);
fclose(fileCopy);
return 0;
}
获取文件大小
//文件大小
#include <stdio.h>
#include <stdlib.h>
int main() {
char * file_path = "D:\\456.txt";
FILE * file = fopen(file_path, "rb");
if (!file) {
printf("文件操作失败");
exit(0);
}
//fseek挪动文件指针 参数一:文件指针 参数二和参数三:挪动至离文件结尾(SEEK_END)0字节处
fseek(file, 0, SEEK_END);
//ftell获取文件指针相对于文件首位置的偏移量,此时计算的file_size即为文件的字节数
long file_size = ftell(file);
printf("file_size = %ld\n", file_size);
fclose(file);
return 0;
}