免费注册 查看新帖 |

Chinaunix

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

关于arm-linux-gcc编译的程序读文件结束符的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-13 18:07 |只看该作者 |倒序浏览
今天在arm板上做开发时,发现读文件的结束符返回计算文件长度总是不能返回。后来做了一个小的测试程序,源码如下(arm9;arm-linux-gcc 版本:3.3.2;文件系统为yaffs; var目录可写):

#include <stdio.h>

int main()
{
        FILE *fp;
        char *filename = "/var/config/config.ini";
        char chRed;
        int fileLen = 0;       

        fp = fopen(filename "w+");
        if(fp == NULL) return 0;
        for(; chRed!=EOF; fileLen++)
        {
              chRed = fgetc(fp);
         //      printf("run to here.\n");
        }
        printf("fileLen = %d\n", fileLen);
        fclose (fp);

                return 1;
}
编译:arm-linux-gcc  -o test test.c  然后下载到开发板上运行,发线不管config.ini文件是为空,有内容,还是不存在,改程序都不会返回退出,后来加上上面的printf后,看到一直在打印“run to here.”,也就是说没有退出循环。

我想问的就是为什么会读不到文件结束的标志EOF。 同样的代码在PC机上运行就能返回。
是arm-linux-gcc编译器的问题,还是什么原因导致的??
已经郁闷了半天了。请大家指点。
多谢

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2006-11-13 19:38 |只看该作者
为什么要这么计算文件长度呢??
man 2 stat

论坛徽章:
0
3 [报告]
发表于 2006-11-15 08:27 |只看该作者
for(; !feof(fp); fileLen++)
试试这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP