文件操作
<1>.
<1>.
文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 出错
“rb”(只读) 为了输入数据,打开一个二进制文件 出错
“wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件
“ab”(追加) 向一个二进制文件尾添加数据 出错
“r+”(读写) 为了读和写,打开一个文本文件 出错
“w+”(读写) 为了读和写,建议一个新的文件 建立一个新的文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件
“rb+”(读写) 为了读和写打开一个二进制文件 出错
“wb+”(读写) 为了读和写,新建一个新的二进制文件 建立一个新的文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新的文件
注意:在只写的情况打开文件,会删除文件中的内容,
而在追加情况下打开文件,则不会删除文件中的内容
<2>.
1.fread,把磁盘中的数据读到内存中
而在追加情况下打开文件,则不会删除文件中的内容
<2>.
1.fread,把磁盘中的数据读到内存中
FILE* fp = fopen("D:/text.txt","r");//fopen,打开文件
printf("%s ", strerror(errno));
if (fp == NULL)
{
perror("fopen");//是strerror(errno)的简化版
return 1;
}
printf("%p ", fp);//这里的fp表示文件句柄(遥控器)
char buffer[1024] = {0};
//buffer英文是缓冲区的意思:相当于搬运器(作用:提高效率)
size_t n = fread(buffer, 1, 1023, fp);
//fread的返回值为实际读到的文件大小
//1023的目的:最好不要将缓冲区内存占完,以便字符串使用
printf("n=%d ",n);
printf("buffer=%s ", buffer);
//fclose,文件关闭
//如果不关闭,则会发生文件描述泄露
fclose(fp);
2.fwrite,把磁盘中的数据改写
FILE* fp = fopen("D:/text.txt", "w");//fopen,打开文件
printf("%s ", strerror(errno));
if (fp == NULL)
{
perror("fopen");//是strerror(errno)的简化版
return 1;
}
printf("%p ", fp);//表示文件句柄(遥控器)
char buffer[1024] = "haha";
size_t n = fwrite(buffer, 1, strlen(buffer), fp);
printf("n=%d ",n);
fclose(fp);
size_t n = fwrite(buffer, 1, strlen(buffer), fp);
printf("n=%d ",n);
fclose(fp);
3.fssek
文件的随机读写:根据文件指针的位置和偏移量来定义文件的指针
4.ftell
<3.>文件路径
1.绝对路径:带根目录开头,路径是区分大小写的
2.相对路径 : . 表示当前目录 ..表示上级目录
fopen中写入绝对路径和相对路径都可以
<4.>文件的打开
在当前系统上,一个程序打开文件的数目上限是 512
在程序启动前会默认先打开 3 个文件(标准输入,标准输出,标准错误)
一个文件打开后没有及时关闭,可能会达到打开文件数目上线,导致文件资源泄露问题