c语言把所有设备文件(硬盘、打印机、键盘、屏幕...)都作为相同的逻辑文件对待。
文件的一般操作步骤:
1、打开文件
2、操作文件 :读操作、写操作、追加操作、定位操作
3、关闭文件
认识四个函数:
文件打开函数 fopen()
关闭文件函数fclose()
文件写函数 fputc() :把一个字符写到指定函数中
文件读函数 fgetc() :从指定文件读取一个字符
一、文件打开函数 fopen()
1、 fopen()使用方式:
FILE *fp;
fp=fopen("文件名","使用文件的方式");
例如:fp=("example.txt","r");
2、检查文件打开的正确性
使用fopen()打开文件时,通常要检查文件打开的正确性,以便程序是否继续执行,
正常打开时,fopen()函数返回文件指针;否则返回"NULL"值,即一个空指针。
下面是一个检查文件打开的正确性的代码示例:
int main()
{
FILE* fp;
if((fp = fopen("example.txt", "r")) == NULL)
{
printf("cannot open file\n");
exit(0); //exit()函数的作用是终止程序执行,并关闭所有打开的文件。
}
return 0;
}
二、关闭文件函数fclose()
fclose()使用方式: fclose(文件指针);
该函数功能为关闭“文件指针”所指向的文件,释放打开文件时的结构体变量。成功返回0,否则返回EOF。(EOF是头文件stdio.h中的符号常量,值为-1。)
三、文件写函数 fputc()
1、使用方式: fputc(写入的字符,文件指针变量);
2、实例:把键盘输入的一个字符串写入到磁盘文件example.txt中
int main()
{
char ch;
FILE* fp;
fp=fopen("C:\\Users\\Desktop\\example.txt", "w");
while ((ch=getchar()) != '\n')
{
fputc(ch, fp);
}
fclose(fp);
return 0;
}
运行结果:
四、文件读函数 fgetc()
1、使用方式: ch = fgetc(fp);
说明:fp是文件型指针变量,ch是字符变量,正常情况fgetc()的返回值是从文件中读出的一个字符
如果是文本文件,遇到结束标志时,fgetc()函数返回值是EOF
2、实例:使用fgetc()函数输出example.txt文件中的内容
int main()
{
char ch;
FILE* fp;
fp = fopen("C:\\Users\\Desktop\\example.txt", "r");
while ((ch = fgetc(fp)) != EOF)
putchar(ch);
fclose(fp);
return 0;
}
运行结果:
扩展知识:
feof()函数:判断读取的文件是否读完(适用于文本文件和二进制文件)
未遇到结束标志时,feof()函数返回值为0;否则feof()函数返回值为1
1、使用格式: feof(fp);
其中fp是文件指针
2、实例:使用feof()函数对文件进行读取控制,输出example.txt文件中的内容
int main()
{
FILE* fp;
if ((fp = fopen("C:\\Users\\Desktop\\example.txt", "r")) == NULL)
{
printf("cannot open file.\n");
exit(0);
}
while (!feof(fp))
{
putchar(fgetc(fp));
}
fclose(fp);
return 0;
}
运行结果:
附:文件使用方式
r 只读打开文本文件 - 文件必须存在
w 只写打开文本文件 - 文件不存在则自动创建,文件存在则清空
a 向文本文件末端追加数据 - 文件必须存在
rb 只读方式打开二进制文件
wb 只写打开二进制文件
ab 向二进制文件末端追加数据
r+ 以 读/写 打开一个文本文件 - 文件必须存在
w+ 以 读/写 建立一个新的文本文件 - 先写数据,然后读数据
a+ 以 读/写/追加 打开一个文本文件
rb+ wb+ ab+