C语言复习(三)文件操作
2018-01-13 21:40
197 查看
文件操作
————————————————————————————————————
操作系统时以文件为单位对数据进行管理的。
1、文件的打开与关闭
(1)首先需要一个文件型指针变量
FILE *fp;fp是一个指向FILE类型结构体的指针变量。
如果有n个文件,一般需要设置n个指针变量令它们分别指向n个文件,以实现对文件的访问。(fp实际上是一个结构体指针)
(2)FILE类型的数组:FILE f[5],定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。
(3)文件的打开需要用到一个函数为fopen函数即
FILE *fp;
fp = fopen(D:\\xi.txt,“文件打开方式”);
凡是用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删除,重新创建一个文件。
若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将出错。
如果打开一个文件时出错则fopen函数会返回一个空指针,程序中可以用if(fp ==NULL)来判断文件是否正常打开。
(4)文件的关闭
文件的关闭需要用到fclose函数,即fclose(fp);使文件指针变量不再指向该文件,此后不能再通过该指针对原来与其相联系的文件进行操作。一般关闭成功返回值为0,失败返回值为EOF(-1)。
(5)文件的读写
对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:
字符读写函数:fgetc和fputc。
字符串读写函数:fgets和fputs。
数据块读写函数:fread和fwrite。
格式化读写函数:fscanf和fprintf。
————————————————————————————————
fputc和fgetc:fputc(ch,fp);
ch为一个字符,意思就是把一个字符(实际上是字符的值)输出到fp指向的文件中。此函数有一个返回值,如果写入成功则返回值为写入的那个字符,否则则为EOF(-1).EOF就相当于ctrl + z/EOF是文件结束的标志。
ch = fgetc(fp);
从打开的文件fp中读取一个字符并送入ch中。
补充一下:从一个文本文件顺序读入字符并在屏幕上显示出来
ch = fgetc(fp);
while(ch !=EOF)
{putchar(ch);
ch = fgetc(fp)
}
EOF不是可输出字符,因此不能在屏幕上显示,由于字符的ASCⅡ码不可能出现-1,因此EOF定义为-1是合适的,当读入的字符值为-1时,表示读入的已不是正常的字符,而是文件结束符。
补充两下:从一个二进制文件顺序读入字符:
while(feof(fp)==0)
{
ch=fgetc(fp);
}
ANSI C提供一个feof()函数来判断文件是否真的结束。如果文件结束,则函数feof
(fp)的返回值为1,否则为0。这个函数也可以用于文本文档的读取。
————————————————————————————————————————
fputs和fgets:字符串输入输出函数
fputs(“字符串”,fp);将字符串输入到fp这个文件中,输入成功返回0,输入失败返回EOF。
fgets(str,n,fp);即从fp所指的文件中读出n-1个字符送入字符数组str中。
scanf不能接受字符串中的空格键 所以用fgets(字符数组,长度,stdin);来输入到标准输入流中。
————————————————————————————————————————
fread()和fwrite():fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer是一个指针,对于fread来说,它是读入数据的存放地址,对于fwrite来说,是要输出数据的地址。size为要读写的字节数。count为要读写多少个size字节的数据项。
此方法适合结构体类型的读取和写入操作
如 struct student_type
{
char name[10];
int num;
int age;
char addr[30];}stud[40];
可以用fread和fwrite来进行数据的操作。
for(i=0;i<=40;i++)
fread(&stud[i],sizeof(struct student_type),1,fp);
for(i=0;i<=40;i++)
fwrite(&stud[i],sizeof(struct student_type),1,fp);
——————————————————————————————————
格式化读写函数fprintf()和fscanf():
fprintf(文件指针,格式字符串,输出表列);
fscanf(文件指针,格式字符串,输入表列);
从磁盘文件中按格式读入或读出字符。格式字符串就是类似与%d %s这样。
——————————————————————————————————
除了上述输入输出函数,还有fseek随机读写函数(一般用于二进制文件)
函数功能:改变文件的位置指针 fseek(文件类型指针,位移量,起始点);
起始点:系统已经给宏定义 文件开头 即 #define SEEK_SET 0
文件当前位置 #define SEEK_CUR 1
文件末尾 #define SEEK_END 2
位移量:以起始点为开始点向前面移动的字节数。
例如 fseek(fp,100L,0);
fseek(fp,i*sizeof(struct stu),0);
————————————————————————————————————
操作系统时以文件为单位对数据进行管理的。
1、文件的打开与关闭
(1)首先需要一个文件型指针变量
FILE *fp;fp是一个指向FILE类型结构体的指针变量。
如果有n个文件,一般需要设置n个指针变量令它们分别指向n个文件,以实现对文件的访问。(fp实际上是一个结构体指针)
(2)FILE类型的数组:FILE f[5],定义了一个结构体数组f,它有5个元素,可以用来存放5个文件的信息。
(3)文件的打开需要用到一个函数为fopen函数即
FILE *fp;
fp = fopen(D:\\xi.txt,“文件打开方式”);
凡是用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。
用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删除,重新创建一个文件。
若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将出错。
如果打开一个文件时出错则fopen函数会返回一个空指针,程序中可以用if(fp ==NULL)来判断文件是否正常打开。
(4)文件的关闭
文件的关闭需要用到fclose函数,即fclose(fp);使文件指针变量不再指向该文件,此后不能再通过该指针对原来与其相联系的文件进行操作。一般关闭成功返回值为0,失败返回值为EOF(-1)。
(5)文件的读写
对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:
字符读写函数:fgetc和fputc。
字符串读写函数:fgets和fputs。
数据块读写函数:fread和fwrite。
格式化读写函数:fscanf和fprintf。
————————————————————————————————
fputc和fgetc:fputc(ch,fp);
ch为一个字符,意思就是把一个字符(实际上是字符的值)输出到fp指向的文件中。此函数有一个返回值,如果写入成功则返回值为写入的那个字符,否则则为EOF(-1).EOF就相当于ctrl + z/EOF是文件结束的标志。
ch = fgetc(fp);
从打开的文件fp中读取一个字符并送入ch中。
补充一下:从一个文本文件顺序读入字符并在屏幕上显示出来
ch = fgetc(fp);
while(ch !=EOF)
{putchar(ch);
ch = fgetc(fp)
}
EOF不是可输出字符,因此不能在屏幕上显示,由于字符的ASCⅡ码不可能出现-1,因此EOF定义为-1是合适的,当读入的字符值为-1时,表示读入的已不是正常的字符,而是文件结束符。
补充两下:从一个二进制文件顺序读入字符:
while(feof(fp)==0)
{
ch=fgetc(fp);
}
ANSI C提供一个feof()函数来判断文件是否真的结束。如果文件结束,则函数feof
(fp)的返回值为1,否则为0。这个函数也可以用于文本文档的读取。
————————————————————————————————————————
fputs和fgets:字符串输入输出函数
fputs(“字符串”,fp);将字符串输入到fp这个文件中,输入成功返回0,输入失败返回EOF。
fgets(str,n,fp);即从fp所指的文件中读出n-1个字符送入字符数组str中。
scanf不能接受字符串中的空格键 所以用fgets(字符数组,长度,stdin);来输入到标准输入流中。
————————————————————————————————————————
fread()和fwrite():fread(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
buffer是一个指针,对于fread来说,它是读入数据的存放地址,对于fwrite来说,是要输出数据的地址。size为要读写的字节数。count为要读写多少个size字节的数据项。
此方法适合结构体类型的读取和写入操作
如 struct student_type
{
char name[10];
int num;
int age;
char addr[30];}stud[40];
可以用fread和fwrite来进行数据的操作。
for(i=0;i<=40;i++)
fread(&stud[i],sizeof(struct student_type),1,fp);
for(i=0;i<=40;i++)
fwrite(&stud[i],sizeof(struct student_type),1,fp);
——————————————————————————————————
格式化读写函数fprintf()和fscanf():
fprintf(文件指针,格式字符串,输出表列);
fscanf(文件指针,格式字符串,输入表列);
从磁盘文件中按格式读入或读出字符。格式字符串就是类似与%d %s这样。
——————————————————————————————————
除了上述输入输出函数,还有fseek随机读写函数(一般用于二进制文件)
函数功能:改变文件的位置指针 fseek(文件类型指针,位移量,起始点);
起始点:系统已经给宏定义 文件开头 即 #define SEEK_SET 0
文件当前位置 #define SEEK_CUR 1
文件末尾 #define SEEK_END 2
位移量:以起始点为开始点向前面移动的字节数。
例如 fseek(fp,100L,0);
fseek(fp,i*sizeof(struct stu),0);
相关文章推荐
- C语言复习之文件的操作
- C语言复习之文件操作(上)
- C语言文件操作解析(二)
- C语言学习之文件操作(含重庆大学研究生程序设计大赛的题目和解答)
- 如何在linux下使用c语言操作临时文件
- Linux下的C语言编程——文件操作
- 在linux下使用c语言操作临时文件
- 左式堆(不完全操作)实现文件C语言
- C语言文件读写操作总结
- c语言---文件的操作和应用(1)
- C语言fopen操作文件
- C语言文件操作
- 黑马程序员——ios开发基础之C语言预处理命令与文件操作
- C语言中常用的文件操作函数
- C语言文件操作解析(二)
- [原创] 文件I/O读写操作程序题目答案 -- 谭浩强C语言
- 关于c语言的一些文件操作函数
- C语言 文件的概念与操作(打开、读写和关闭等)
- C语言文件操作 fopen, fclose, mkdir(打开关闭文件,建文件夹,判断文件是否存在可读或可写)
- C语言中文件相关操作