为了账号安全,请及时绑定邮箱和手机立即绑定

C语言的问题,fread和fgets的区别是什么?

C语言的问题,fread和fgets的区别是什么?

SSM
繁星coding 2019-02-26 11:07:58
以下程序:#include "stdio.h"#include "string.h"void main(){char xx[80][80];FILE *fp;int i=0;char *p;if((fp=fopen("IN.DAT","r"))==NULL) ;while(fgets(xx[i],80,fp)!=NULL){p=strchr(xx[i],'\n');if(p) *p=0;i++;}for(i=0;i<10;i++)puts(xx[i]);}这个为什么输出结果和用fread的输出结果不一样?用一次fgets之后为什么fp指针没有越界,又能完整的读出下一个字符串来?还有ip(p),p是指针,用if语句是判断p是什么意思呢?
查看完整描述

4 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

fread读入的内容不包括最后的字符串终结符,而fgets则包括这个,也就是说fread读入的内容不是字符串,因为少一个终结符,而fgets则读入的是一个字符串。
至于if(p)这个问题应该很明了,虽然p是指值,但是可以让指针指向NULL,这样的话就可以使用if(p)来判断指针是否指向了内存,若没有就跳过语句。

查看完整回答
反对 回复 2019-03-26
  • 4 回答
  • 0 关注
  • 1267 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信