文件的四个核心操作:
1、打开文件 fopen
2、读文件 fread
3、写文件 fwrite
4、关闭文件 fclose
打开文件:fopen()
//打开文件
//以下的FILE是一个C标准库已经定义好的结构体,返回结果为“文件指针”(即:句柄)
//如果文件打开失败,返回NULL
FILE* f = fopen("D:/test.txt", "w");//第二个参数为'r',针对文本文件
if (f == NULL) {
perror("文件打开失败");
//等价代码:printf("文件打开失败! errno=%d,%s\n",errno,strerror(errno));
system("pause");
return 1;
}
printf("文件打开成功\n");
读文件:fread()
//fread:把磁盘上的数据读取到内存中
char buf1[1024] = {0};
//fread中第二个参数:一个元素占多少个字节,第二个参数:想要读多少个元素,二者相乘为想读的整体字节数
//返回值为:实际读取到的元素个数
int n1 = fread(buf1, 1, 1024, f);
printf("%s\n", buf1);
写文件:fwrite()
//fwrite:把内存中的数据写到磁盘上
//如果写入成功:返回实际写入磁盘中的元素个数
//如果写入失败,返回一个<0的结果
char buf2[] = "bitbit";
int n2 = fwrite(buf2, 1, strlen(buf2), f);
//如果实际写入元素个数小于数组长度,写入失败,输出错误原因
if (n2< strlen(buf2) ){
//perror():用来将上一个函数发生错误的原因输出到标准设备(stderr)
perror("fwrite");
}
注意:
在进行fwrite操作时,此处的fopen函数的第二个参数必须为**“w”**,否则会出现以下问题:
其中:file descriptor:是文件描述符
关闭文件:fclose()
//关闭文件
fclose(f);
sprintf:字符串格式化命令
//sprintf():把整数转成字符串
int num = 10;
char buf3[1024] = { 0 };
//将int数据放入到char buf3[]这个数组中
sprintf(buf3, "%d", num);//该操作不是输出
printf("%c\n", buf3[0]);
printf("%c\n", buf3[1]);
//此处会有一个'\0'输出
printf("%c\n", buf3[2]);
printf("%s\n", buf3);
sscanf:读取格式化的字符串中的数据
//sscanf():从一个字符串中读出与指定格式相符的数据
char buf4[100];
sscanf("bitbit", "%3s",buf4 );
printf("%s\n", buf4);
整体代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main() {
//打开文件
//以下的FILE是一个C标准库已经定义好的结构体,返回结果为“文件指针”(即:句柄)
//如果文件打开失败,返回NULL
FILE* f = fopen("D:/test.txt", "w");//第二个参数为'r',针对文本文件
if (f == NULL) {
perror("文件打开失败");
//等价代码:printf("文件打开失败! errno=%d,%s\n",errno,strerror(errno));
system("pause");
return 1;
}
printf("文件打开成功\n");
//fread:把磁盘上的数据读取到内存中
char buf1[1024] = {0};
//fread中第二个参数:一个元素占多少个字节,第二个参数:想要读多少个元素,二者相乘为想读的整体字节数
//返回值为:实际读取到的元素个数
int n1 = fread(buf1, 1, 1024, f);
printf("%s\n", buf1);
//fwrite:把内存中的数据写到磁盘上
//如果写入成功:返回实际写入磁盘中的元素个数
//如果写入失败,返回一个<0的结果
char buf2[] = "bitbit";
int n2 = fwrite(buf2, 1, strlen(buf2), f);
//如果实际写入元素个数小于数组长度,写入失败,输出错误原因
if (n2< strlen(buf2) ){
//perror():用来将上一个函数发生错误的原因输出到标准设备(stderr)
perror("fwrite");
}
//sprintf():把整数转成字符串
int num = 10;
char buf3[1024] = { 0 };
//将int数据放入到char buf3[]这个数组中
sprintf(buf3, "%d", num);//该操作不是输出
printf("%c\n", buf3[0]);
printf("%c\n", buf3[1]);
//此处会有一个'\0'输出
printf("%c\n", buf3[2]);
printf("%s\n", buf3);
//sscanf():从一个字符串中读出与指定格式相符的数据
char buf4[100];
sscanf("bitbit", "%3s",buf4 );
printf("%s\n", buf4);
//关闭文件
fclose(f);
system("pause");
return 0;
}