0%

C语言笔记——fgetc()和fputc()函数

在C语言中,fgetc()fputc()都是用于文件操作的函数,其均在<stdio.h>头文件中。

fgetc()函数

fgetc()函数可从文件中每次读取一个字符,其调用方法为

int fgetc(FILE *fp);

fgetc()函数读取成功时,返回读取到的字符;读取到文件末尾或读取失败时返回EOFEOF<stdio.h>头文件中定义的一个宏,它的值是负数,一般为-1(EOF不绝对为-1,也可以是其他负数,这取决于编译器),fgetc()的返回值类型之所以为int,就是为了容纳这个负数(char不能是负数)。

举个栗子:

#include<stdio.h>
int main(void)
{
FILE *fp;
if((fp=fopen("G:\\来自 Dev-C++\\练习.txt","r+"))==NULL)
{
printf("无法打开文件!");
}
else
{
char ch;
while((ch=fgetc(fp))!=EOF)
{
putchar(ch);
}
printf("\n");
int x;
if((x=feof(fp))!=0)
{
printf("文件读取完毕!");
}
else
{
int y;
if((y=ferror(fp))!=0)
{
printf("文件读取发生错误!");
}
}
}
fclose(fp);
return 0;
}

在文件内部有一个位置指针,用来指向当前读写到的位置,也就是读写到第几个字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc()函数后,该指针会向后移动一个字节,所以可以连续多次使用fgetc()函数读取多个字符。位置指针仅仅是一个标志,表示文件读写到的位置,也就是读写到第几个字节,它不表示地址。文件每读写一次,位置指针就会移动一次,它不需要在程序中定义和赋值,而是由系统自动设置,对用户是隐藏的。

对EOF的说明

EOF本来表示文件末尾,意味着读取结束,但是很多函数在读取错误时也返回EOF,那么需要使用<stdio.h>头文件中的feof()ferror()函数来判断文件是读取完毕还是读取错误。

feof()函数用来判断文件内部指针是否指向文件末尾,其调用方法为

int feof(FILE *fp);

当指向文件末尾时,返回非零值,否则返回零。

ferror()函数用来判断文件操作是否错误,其调用方法为

int ferror(FILE *fp);

当文件操作出现错误时,返回非零值,否则返回零。

fputc()函数

fputc()函数可向文件中每次写入一个字符,其调用方法为

int fputc(int ch,FILE *fp);		//ch表示写入的字符

fputc函数写入成功时,返回写入的字符;写入失败时返回EOF,返回值类型为int也是为了容纳这个负数。

举个栗子

#include<stdio.h>
int main(void)
{
FILE *fp;
if((fp=fopen("G:\\来自 Dev-C++\\练习.txt","wt+"))==NULL)
{
printf("文件无法打开!");
}
else
{
printf("输入字符串:");
char ch;
while((ch=getchar())!='\n')
{
fputc(ch,fp);
}
}
fclose(fp);
return 0;
}

被写入的文件可以使用写、读写、追加三种方式打开,使用写或读写方式打开一个已存在的文件时将清除原有的文件内容,如需保留原有文件内容,就必须以追加方式打开文件。不管以何种方式打开,被写入的文件若不存在时,则新建文件。


如有错误,请在评论区留言,非常感谢(ノ>ω<)ノ。

本文内容整理自

C语言fgetc和fputc函数用法详解(以字符形式读写文件)