扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
fgetc():
成都创新互联公司主要从事网站设计、成都网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务肃北,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
定义函数
int fgetc(FILE * stream);
函数说明
fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF。
返回值
fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾。
getc():
功 能: 从流中取字符
用 法: int getc(FILE *stream);
注意: 此函数被ISO C声明为一个宏,所以在用时不能将其做为函数指针传(有一些编译器将其以函数形式也给另说)。它的原型如下 #define getc(_stream) (--(_stream)-_cnt = 0?0xff *(_stream)-_ptr++ : _filbuf(_stream))
补充: 在C语言中,用函数getc(fgetc)从文件读取字符。getc、fgetc用法相同。 getc的调用形式:ch=getc(fp);此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。
好像没问题啊,你文件路径不对吧
main()
{
FILE *fp;
int ch;
if ((fp = fopen("d:\\new.txt", "r")) == NULL)
{
printf("Error,file not exist!");
return;
}
while ((ch = fgetc(fp))0)
printf("%c", ch);
fclose(fp);
}
1.fgetc是用来从文件中读取内容的。它可不管读到的内容是什么东西。
2.文本文件中的字符串和c语言中的字符串概念不同。
文本文件中,不一定需要把'\0'这个c语言的字符串结束标志也存储进去(当然也可以这么做)。
3.fgetc这个函数从流中读取一个字符,然后返回。不管碰到了'\0'还是其他的字符都会返回。不知道你所谓的“结束”指的是什么。
4.一般来说,fgetc会返回读到的字符的整形值。但fgetc读到文件的结尾(不是字符串结尾)的时候,返回值是一个特殊值EOF。这个值和任何字符的值都不一样,不属于char类型。因此你会看到一些书上这么写:
int ch;//这里要用int类型,而不是char类型。因为EOF不是char
while((ch=fgetc(stdin))!=EOF){
//...
}
有点离题了。。。
总之,对于fgetc来说,文件中所有的数据(包括'\0')都是一样处理,除非读到了末尾,它就返回一个特殊值EOF。
fgetc()返回值: 成功时为作为 unsigned char 获得并转换为 int 的字符,失败时为 EOF 。
最后一个字符,如果读入成功了就返回这个“字符”。
然后继续往下读(此时已经都读完了,后面没有了),读取失败 返回的才是EOF,设置 stream 上的文件尾指示器(feof()),若是其他(非读到文件尾)原因导致失败也是返回EOF(但此时因其他错误导致失败)则设置 stream 上的错误指示器(ferror() )。
想要得到“EOF”需要在正好读完全文的条件下 再进行任意一次读取,此时读取失败才会有“EOF”。
ch=fgetc(p)//p为指向文件的指针,ch为字符型变量名
通俗的的讲,函数是从文件中读出一个字符,将字符的值赋值给指定变量;
而具体到是否读出的是文件的第一个字符,是要考虑此时的文件指针P指向文件的状态,
如果文件指针p,在打开文件后没有进行过任何移位,应该读出的是文件的第一个字符;
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流