概述
目录
前言
一、文件
二、文件的打开与关闭
1.文件的打开函数fopen()
2.文件关闭函数fclose()
三、文件的读写
1.字符的输入输出
(1)读字符函数fgetc( )
(2)写字符函数fputc()
2.字符串的输入和输出
(1)fgets()函数
(2)fputs()函数
3.按格式化输入和输出
4.数据块的输入和输出
四、文件的定位
1.rewind()函数
2.fseek()函数和随机读写
3.其他函数
前言
本篇文章将简单介绍一下C语言中的文件的操作以及相关函数的使用方法。
一、文件
文件:文件是一组相关信息的集合。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才会调入内存中。
缓冲文件系统:缓冲文件系统时当程序打开一个文件的同时,系统自动地在内存中为该文件开辟一个内存缓冲区,C语言对文件的所以操作都通过对文件缓冲区的操作来完成。使用缓冲文件系统可以大大提高文件操作的速度。
文件型指针:FILE * 指针变量标识符;
二、文件的打开与关闭
1.文件的打开函数fopen()
fopen()函数用来打开一个文件,其调用格式如下:
文件指针名=fopen(文件名,使用文件方式)
FILE *fp;
fp=fopen(“test.txt”,"r");
这串代码的意义是在当前目录下打开文件test.txt,只允许进行读操作,并使fp指向该文件。
fp=fopen("D:\test.txt","r");
采用相对地址的打开方式一样可行。
下面附上C语言文件操作方式的一份表格
下面附上在打开文件时判断文件是否为空的一个if语句
if (NULL == pf)
{
perror("fopen");
return 1;
}
2.文件关闭函数fclose()
fclose()函数调用的一般形式如下:
fclose(文件指针)
三、文件的读写
在C语言中,scanf()和printf()函数针对键盘输入和屏幕输出的标准函数。同时C语言也为磁盘数据文件的读写提供了四种文件存取方法。
1.字符的输入输出
(1)读字符函数fgetc( )
fgetc()函数的功能时从指定的文件中读一个字符,函数调用的形式如下:
字符变量=fget(文件指针);
ch=fgetc(fp);表示从打开的文件fp中读取一个字符并送人ch中。
还有需要注意的一点就是fetc()时一个一个字符的读写
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "r");
if (NULL == pf)
{
perror("fopen");
return 1;
}
//读文件
int ch = 0;
while ((ch = fgetc(pf)) != EOF)
{
printf("%c ", ch);
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
(2)写字符函数fputc()
fputc()函数的功能时把一个字符写入指定的文件中,函数调用的形式如下:
fputc(字符量,文件指针);
fputc("a",fp);的意义就是把字符a写入fp所指向的文件中。
需注意:
fputc()有一个返回值,若写入成功则返回写入的字符,否则返回EOF,可用此来判断写入是否成功。
int main()
{
//打开文件
FILE* pf = fopen("test.txt", "w");
if (NULL == pf)
{
perror("fopen");
return 1;
}
//写文件
int i = 0;
for (i = 0; i < 26; i++)
{
fputc('a'+i, pf);
}
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
2.字符串的输入和输出
字符串读写函数只能对文本文件进行读写,读写文件时一次读取或写入的时字符串。
(1)fgets()函数
调用格式如下:
fgets(s,n,fp);
其中,s是字符型指针变量或字符数组名,n是指定读入的字符个数。调用该函数时,从fp所指向的文件读取n-1发字符,存入s所指向内存地址起始的n-1个连续的内存单元中。
char arr[20] = "#########";
fgets(arr, 20, pf);
printf("%s", arr);
fgets(arr, 20, pf);
printf("%s", arr);
注意:若n-1个字符读入完成前遇到'换行符'n'或者文件结束,将停止读入。若函数执行成功,将返回所读取的字符串,失败则会返回空指针,此时s的内容不能确定。
(2)fputs()函数
fputs(字符串,文件类型指针);
其中,s可以是字符串常量、字符型指针变量或者字符数组名。该函数会把字符串s写入fp所指向的文件时,字符串s的结束标记'