1.操作文件数据
1.1打开文件:通过定义文件指针指向文件(FILE* 名字)
1.2用指针文件指向文件 fopen("路径","打开方式");
路径包括绝对路径以及相对路径;
打开方式包括:
文件打开方式 | 含义 | 如果指定文件不存在 |
r(只读) | 为了输入数据,打开一个已经存在的文件 | 出错 |
w(只写) | 为了输出数据,打开文本文件 | 新建文件 |
a(追加) | 向文本文件尾部添加数据 | 出错 |
rb(只读) | 为了输入数据,打开一个已存在的二进制文件 | 出错 |
wb(只写) | 为了输出数据,打开一个二进制文件 | 新建文件 |
ab(追加) | 向二进制文件尾部添加数据 | 出错 |
r+(读写) | 为了读和写,打开一个文本文件 | 出错 |
w+(读写) | 为了读和写,打开一个文本文件 | 新建文件 |
a+(读写) | 为了读和写,打开一个文本文件 | 出错 |
rb+(读写) | 为了读和写,打开一个二进制文件 | 出错 |
wb+(读写) | 为了读和写,打开一个二进制文件 | 新建文件 |
ab+(读写) | 为了读和写,打开一个二进制文件 | 出错 |
见代码:
1.fputs()与fgets()
int main()
{
//1.写入数据
FILE* file;
file = fopen("1.txt", "w"); //进行写入操作(如果文件存在会清空文件里面的内容再写入)
fputc(65,file); //放入字符'A'
fputc('c', file); //放入一个字符c
fputc('\n',file);
char str[] = "dlksja";
fputs(str,file); //放入字符串
//2.读取数据
printf("%c",fgetc(file)); //得到第一个字符
printf("%c",fgetc(file)); //得到第二个字符
char str1[1024] ={0};
fgets(str1,3,file); //得到两个字符加一个“\0”
//3.读取整个文件
char str2[1024] = {0};
int i = 0;
while(!feof(file)) //feof()用于判断文件指针是否读到了末尾,读到了就会返回true
{
str2[i]=fgetc(file);
i++;
}
printf("%s",str2);
fclose(file);
return 0;
}
2.fprintf()与fscanf():
2.1写入文件
int main()
{
FILE* file = fopen("2.txt", "w"); //打开文件时,没有文件要自动创建文件
int a = 10;
char str[] = "QinChao";
fprintf(file, "id:%d name:%s\n", a, str); //fprintf指的是向文件输入
fclose(file);
}
2.2读取文件
int main()
{
FILE* file = fopen("2.txt", "r"); //打开文件时,没有文件要自动创建文件
int a = 0;
char str[1024];
fscanf(file, "id:%d name:%s\n", &a, str); //读取文件内容(第一个整形与第一个字符型)
printf("%d %s", a, str); //输出
fclose(file);
}
3.fwrite()与fread():二进制方式读写
3.1写入文件
int main()
{
FILE* file = fopen("2.txt", "wb"); //打开文件时,没有文件要自动创建文件
int a = 10;
char str[]="QinChao";
fwrite(&a, 4, 1, file); //4代表写入数据的大小,1代表写入数据的个数
fclose(file);
}
3.2读取文件
int main() {
FILE* file = fopen("2.txt", "rb");
int a;
fread(&a, 4, 1, file); //读取的字节大小为4,读取的个数为1
printf("%d", a);
fclose(file);
}
4.fseek()与ftell的用法:
int main()
{
FILE* file = fopen("3.jpg", "rb");
fseek(file,1, 2); //第一个数字代表移动几个字节,第二个数字:0代表文件开头 1代表文件指针当前位置,2代表文件指针末尾位置
int size = ftell(file); //获取文件指针相对文件首的偏移字节数
printf("%d", size);
}
5.综合应用
int main()
{
FILE* file = fopen("3.txt", "r+"); //3.txt中为123456
fseek(file, 3, 1);//指针此时在4的位置
fputc('A',file); //将4替换为A
fclose(file);
}