标题:关于fputc和fgetc谁能帮忙看下问题
只看楼主
qyh1122
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-8-21
结帖率:0
已结贴  问题点数:20 回复次数:4 
关于fputc和fgetc谁能帮忙看下问题
#include <stdio.h>
#include <string.h>
int main(int argc, const char *argv[])
{
    if (argc!=2)
    {
        printf("please input path!\n");
        return -1;
    }
    FILE* fp=fopen(argv[1],"r");
    if (fp == NULL)
    {
        perror("fail to fopen ");
        return -1;
    }
   
    while(1)
    {
        if(fgetc(fp)==EOF)
        {
            if(feof(fp))
                break;
            else
            {
                perror("fail to fgetc");
                return -1;
            }
        }
        fputc(fgetc(fp),stdout);
    }
    if(fclose(fp)==EOF)
    {
        perror("fail to fclose");
        return -1;
    }

    return 0;
}
为什么打印会有缺少
搜索更多相关主题的帖子: int return fopen EOF fclose 
2017-08-21 16:20
虾米小小小
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:30
专家分:135
注 册:2017-7-22
得分:7 
你一次循环用两次fgetc(),当然会有缺少啊。。。。。。
2017-08-21 20:09
qyh1122
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-8-21
得分:0 
回复 2楼 虾米小小小
也就是说前面要备份下fgetc咯
2017-08-24 16:20
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:7 
以下是引用qyh1122在2017-8-24 16:20:34的发言:

也就是说前面要备份下fgetc咯
不是备份  而是这个fgetc每调用一次 文件指针就像前走一步 不管你这个fgetc在哪里调用

DO IT YOURSELF !
2017-08-24 17:23
那个学者
Rank: 1
等 级:新手上路
帖 子:11
专家分:7
注 册:2017-8-24
得分:7 
用了两次fgetc(),文件读写位置标记已经转到了下一个字符,第一次调用的时候,你没有打印,打印的是第二次调用的,没使用一次函数fgetc,读写位置都会自动调到下一个字符
2017-08-24 21:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480188-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.168806 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved