文件操作
Posted lemongirl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件操作相关的知识,希望对你有一定的参考价值。
一.文件的打开与关闭
1.定义文件指针的一般形式:FILE *指针变量标识符
2.C语言中有三个特殊的文件指针无需定义、打开可直接使用:
stdin:标准输入,默认为当前终端(键盘)
我们使用的scanf、getchar、函数默认从此终端获得数据
stdout:标准输出,默认为当前终端(屏幕)
我们使用的printf、puts函数默认输出信息到此终端
stderr:标准出错,默认为当前终端(屏幕)
当我们程序出错或使用perror函数时信息打印在此终端
3.打开文件
FILE *fp = NULL;
fp = fopen(文件名,文件打开方式);
? 文件名:要操作的文件的名字,可以包含路径信息
? 文件打开方式:"读"、"写"、"文本"、"二进制"等
? fp文件指针:指向被打开的文件,失败返回空,成功返回相应指针
例如:FILE *fp = NULL;
fp = fopen("test.txt","r");
if(fp == NULL)
printf("File open error\n");
4.文件打开的几种方式:读写权限:r w a +
r:以只读方式打开文件
文件不存在,返回NULL
文件存在,返回文件指针,进行后续的读操作
w:以只写方式打开文件
文件不存在,以指定文件名创建此文件
若文件存在,清空文件内容,进行写操作
a:以追加方式打开文件
文件不存在,以指定文件名创建此文件(同w)
若文件存在,在文件的结尾处进行写操作
+:同时以读写打开打开指定文件
模式(b可以省略) | 功能 |
r或rb | 以只读方式打开一个文本文件(不创建文件) |
w或wb | 以写方式打开问价(使文件长度截断为0字节,创建一个文件) |
a或ab | 以添加方式打开问价,即在末尾添加内容,当文件不存在时,创建问价用于写 |
r+或rb+ | 以可读、可写的方式打开文件(不创建新文件) |
w+或wb+ | 以可读、可写的方式打开文件(使文件长度为0字节,创建一个文件) |
a+或ab+ | 以添加方式打开文件,打开文件并在末尾更改文件(如果文件不存在,则创建文件) |
5.关闭文件
? 调用形式:fclose(文件指针);
文件指针:指向要关闭的文件
? 返回值:关闭文件成功,返回值为0
关闭文件失败,返回值非0
例如:FILE *fp = NULL;
fp = fopen("test.txt","r");
fclose(fp);
二.文件的顺序读写
1.字节读写函数:fgetc()和fputc()
? ch = fgetc(fp); //读一个字节
从指定文件读一个字节赋给ch
文本文件:读到文件末尾返回EOF(EOF值为1)
二进制文件:读到文件结尾,使用feof判断结尾
? fputc(ch,fp); //写一个字节
把ch变量中的值(一个字节)写到指定的问价
如果输出成功,则返回输出的字节
如果输出失败,则返回一个EOF
2.字符串读写函数:fgets()和fputs()
? fgets(str,n,fp); //读一个字符串
从fp指向的文件中读入n-1个字符保存在str指向的内存中,‘str为存放数据的首地址
在读入n-1个字符之前遇到换行符或EOF,读入提前结束,在最后加一个‘\0
? fputs("china",fp); //写一个字符串
向fp指定的文件写一个字符串
第一个参数可以是字符串常量、字符数组名或字符指针,字符串末尾的‘\0‘不会写到文件
3.数据块读写函数:fread()和fwrite()
? fwrite(buffer,size,count,fp); //将buffer中的内容写入到fp所指向的文件中
? fread(buffer,size,count,fp); //将fp所指向的文件中的内容读入到buffer内存中
参数说明:buffer:指向存储数据空间的首地址的指针
size:一次读写的数据库大小
count:要读写的数据块个数
fp:指向要进行写操作的文件指针
返回值:实际读写的数据块数,不是总数据大小,不到1块返回0,不到2块返回1
4.格式化读写函数:fscanf()和fprintf()
? fprintf(文件指针,格式字符串,输出列表);
例如:fprintf(fp,"%d,%6.2f",i,f); //将int型变量i和float型变量的值按%d和%6.2f的格式输出到fp指向的文件中
? fscanf(文件指针,格式字符串,输入列表);
例如:fscanf(fp,"%d,%f",&i,&f); //从磁盘文件中读取整型值存到变量i中,读取事型值存到变量f中
三.文件的随机读写
1.ftell函数
2.rewind函数
3.fseek函数
四.文件的出错监测
1.文件结束检测函数
2.读写文件出错检测函数ferror
3.文件出错标志和文件结束标志置0函数clearerr
以上是关于文件操作的主要内容,如果未能解决你的问题,请参考以下文章