目录
一、fgetc:
1、函数原型:
int fgetc(FILE *stream);
2、函数介绍:
功能:从流中读取光标所在位置的下一个字符,错误或者结束返回EOF
返回值:成功:返回读取到的数据 错误:EOF(-1)
stream:流指针
3、程序示例:
#include <stdio.h>
int main()
{
FILE *fp = fopen("3.c","r");//以只读方式打开
printf("%c",fgetc(fp));//打印读取的数据
printf("%c",fgetc(fp));
printf("%c",fgetc(fp));
printf("%c\n",fgetc(fp));
fseek(fp,2,SEEK_SET);//光标从头往后移动两位
printf("%c\n",fgetc(fp));
return 0;
}
4、运行结果:
文件3.c里面的内容:
fgetc获取到文件3.c的数据
二、fputc:
1、函数原型:
int fputc(int c, FILE *stream);
2、函数介绍:
功能:向流中写入一个数据c
返回值:成功:要写入的数据int回转换为char型 失败:EOF
c:int的数据,可转换为使用字符输入stream:流指针
3、程序示例:
a、需要给予所打开文件的权限为可写的才能正确访问写入数据:
#include <stdio.h>
int main()
{
FILE *fp = fopen("3.c","r+");//打开只读写文件,不覆盖
printf("%c\n",fputc('A',fp));
printf("%d\n",fputc('A',fp));
printf("%c\n",fputc(65,fp));
return 0;
}
>>>成功时,返回了要写入的数据;
>>>程序正确运行后,文件 3.c 的变化情况
b、如果用下面这个方式 r (只读方式)打开就是乱码,无法正确访问的:
FILE *fp = fopen("3.c","r");
下图中-1是fputc执行失败时返回的值;
三、fgetc和fputc组合使用,拷贝文件内容:
//拷贝一个文件的内容到另一个文件中去
#include <stdio.h>
int main()
{
FILE *fp = fopen("2.c","r");
FILE *fp1 = fopen("3.c","w");
if(fp == NULL)
{
printf("fopen\n");
return -1;
}
int ch = -1;
while((ch = fgetc(fp)) != EOF)//注意没出现一次fgetc就会获取一次数据
{
if(fputc(ch,fp1) == EOF) //EOF可以写成-1
{
perror("fputc");
return 0;
}
}
fclose(fp);
fclose(fp1);
return 0;
}