#include "fstream.h"int main(int argc, char* argv[])
{
unsigned char cc=0;
ofstream ofile;
ofile.open("d:\\a.img");
for(int i=0;i<128;i++)
{
for(int j=0;j<128;j++)
{
// if(cc==255) cc=1;
// else 
         cc++;
t++;
ofile.put(cc);
}
}
         ofile.close();
}
这段代码我很奇怪,屏蔽if时(如上)文件大小是16448字节;保留if是16449字节;
如果cc不自加,直接赋为0(任意一个值0-255),文件大小变为16384。

解决方案 »

  1.   

    cc最大值为255,屏蔽if时(如上)文件大小,只初始化一次cc>255时出错,
    改unsigned char cc=0;  为 int cc=0;if(cc>=255)
       cc=1;
    else 
      cc++;
    如此OK!
      

  2.   

    但直接赋值为0时,所有输出都0,输出个数=128*128=16384字节
    屏蔽if时,因为输出为文本方式,所以cc=10时即0A,会在前面增加0D所以增加了16448/255=64个字节
    保留if时,不太清楚,呵呵……看看二进制输出应该能找出原因
      

  3.   

    3jaja(3++输入法)
    cc最大值为255,屏蔽if时(如上)文件大小,只初始化一次cc>255时出错,果真如此?我认是ofile.put(cc);语句会将字符'\n'(0x27)转换成'\r\n'后输出到文件中导致。
    ofstream ofile;初始化时指定二进制文件操作。如ofstream pOut(ios::binary);应能够解决这个问题。
      

  4.   

    int cc=0;
    ofstream ofile;
    ofile.open("d:\\a.img"); int t=0;//统计循环次数是否正确
    for(int i=0;i<128;i++)
    {
    for(int j=0;j<128;j++)
    {
    if(cc>=255) cc=0;
    else 
    cc++;
    t++;
    ofile.put((char)cc);
    }
    } 3jaja(3++输入法)老大,还是不行啊!
      

  5.   

    保留if时,'\n'的出现次数正好多了一次,所以结果不同了!
      

  6.   

    ok!!!!cnwww(嗨)老大,你是对的,问题解决了,谢谢,其他人也谢谢了,都给分!
      

  7.   

    cnwww 为正解,3++输入法的答案与本题不符