免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9880 | 回复: 12
打印 上一主题 下一主题

[C] unix下面用fgetc和feof读文件的问题,求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-28 20:13 |只看该作者 |倒序浏览
fp = fopen( sFile,"r" );

    if( fp )
    {
        if( !feof(fp) )
        {

            cnt = 1;

            /* 判断文件的行数 */
            while( (ch =  fgetc(fp)) != EOF )
            {
                if( ch == '\n' )
                    cnt++;
            }

            fclose(fp);

            sprintf( S_Window[4].sMeta,"%d", &cnt );
        }
        else
        {
            fclose(fp);
   
            strcpy( S_Window[4].sMeta,"...");
        }
    }
上面的代码到了while里面后就成死循环了,不知何解

   if( fp )
    {
        n = 0;
        while( n<8 )
        {
            ch = fgetc(fp);
            if( ch == EOF )
            {
                strcpy( S_Window[6].sMeta,"...");
                fclose(fp);
                break;
            }

            if( ch == '|' )
                n++;
        }

        if( fgetc(fp) == '3' )
            strcpy( S_Window[6].sMeta,"...");
        else
            strcpy( S_Window[6].sMeta,"...");

        fclose(fp);
    }
上面的代码也会导致程序错误,不知道何解

请大家帮忙看下

论坛徽章:
0
2 [报告]
发表于 2008-03-28 20:36 |只看该作者
在线等答案.....没有人给点帮助么...

论坛徽章:
0
3 [报告]
发表于 2008-03-28 21:54 |只看该作者
问题貌似是EOF的类型和char ch不同不能比较进而形成了死循环

论坛徽章:
0
4 [报告]
发表于 2008-03-28 22:45 |只看该作者
int ch;

论坛徽章:
0
5 [报告]
发表于 2008-06-04 17:06 |只看该作者

回复 #1 bgifu 的帖子

冒觉得有什么问题。
检查一下相关的变量

论坛徽章:
0
6 [报告]
发表于 2008-06-04 19:05 |只看该作者
返回值 int 类型。

论坛徽章:
0
7 [报告]
发表于 2008-06-11 12:47 |只看该作者
int c

论坛徽章:
0
8 [报告]
发表于 2008-06-11 13:25 |只看该作者
仔细看看 manpage,你会发现 fgetc 返回的是 int。

论坛徽章:
0
9 [报告]
发表于 2008-06-11 15:23 |只看该作者
EOF

int   fgetc

论坛徽章:
0
10 [报告]
发表于 2008-08-01 17:45 |只看该作者

回复 #1 bgifu 的帖子

while( (ch =  fgetc(fp)) != EOF )
这句有问题,这个要看是那个版本的gcc,我用gcc 4以上的版本好像就没问题,用2.95就是死循环了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP