C语言,getc()的问题

书上写的voidfilecopy(FILE*fp1,FILE*fp2){intc;while((c=getc(fp1))!=EOF)putc(c,fp2);}我目前的愚见... 书上写的 void filecopy(FILE *fp1, FILE *fp2) { int c; while ((c = getc(fp1)) != EOF) putc(c, fp2); } 我目前的愚见,每次 c = getc(fp1) 都会读取fp1所对应的文件中第一个字符,那不是达不到函数目的了吗? P.S. 如果连目的都看不出来就别说话了 展开
 我来答
iamchenmin
2014-03-11 · TA获得超过1199个赞
知道小有建树答主
回答量:625
采纳率:50%
帮助的人:313万
展开全部
不会的,读取一个字符以后,文件指针会自动指向下一位,这样读取就会一个接一个执行下去,不会出现单单就读取第一个字符的情况。

不建议使用(c = getc(fp1)) != EOF)的方式来判断文件是否结束,因为如果是一个二进制文件,EOF可能出现在任何位置,这样文件很可能还没有读取完毕就结束了,请使用使用feof()。
更多追问追答
追问
什么叫“文件指针指向下一位”,文件指针不是指向FILE型的吗?我新手,还请详解,谢谢!
追答
读取文件的时候,会有一个文件指针的概念,它的定义在结构体FILE里,用来表示当前文件读取到了什么地方,比如文件头部是0,下移一位就是顺着文件的顺序移动一个字节的长度。

你可以使用 long ftell(FILE *fp)来获取当前文件指针所在的位置,用fseek(FILE *fp,long offset,int begin)来移动你的文件指针(其中,offset是移动多少字节,而begin是开始位置)。
无言的苏格拉底
2014-03-11
知道答主
回答量:14
采纳率:0%
帮助的人:12.7万
展开全部
不是的,fgetc每执行一次,文件指针就会向后移一位,直到文件末尾
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式