| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1548 人关注过本帖
标题:关于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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
快速回复:关于fputc和fgetc谁能帮忙看下问题
数据加载中...
 
   



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

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