C语言关于文件操作的问题:下面是代码:

[复制链接]
查看11 | 回复1 | 2011-5-14 09:22:01 | 显示全部楼层 |阅读模式
#includestdio.h
#includeconio.h


intmain()
{
        inti;
        FILE*pfile=fopen(\"test.txt\",\"a\");
        if(!pfile)
                printf(\"Ican\'topenthefile:\");
        while(!feof(pfile))
        {
                fscanf(pfile,\"%d\",
                printf(\"%d\",i);
        }
        fclose(pfile);
        getch();
        //问题:我的test.txt中的文本是123456789123456,但是输出时会输出负数,如果test.txt中是123456就可以正常输出,我不明白为什么
}
请大家给我讲讲,非常感谢
回复

使用道具 举报

千问 | 2011-5-14 09:22:01 | 显示全部楼层
fscanf(pfile,\"%d\",
使用fscanf对文件进行读取时,如果用%d进行格式,就是要读取整型,并把值赋值给变量i
这同scanf一样,遇到空白字符或者回车时停止读入,这样,第一次读入就是123456789123456
这远远超过Int定义的最大值(32位机,2^31-1),所以将进行截取,会出现负数,而
123456在其范围,能正确读入。
可以改成fscanf(pfile,\"\",用1个宽度进行约束,这样一次只读取一个字符。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行