请教文件读写
是这样的,我读入二进制文件,然后写成某种可读格式的ASCII文件,文件开头有五个特定的数字,按16进制写,并且每个16进制数前面加上“0x”,文件格式形如
xxxx x xxx xxx xxx
0x1234
0x2839
0xaabb
...
当我把可读的ASCII文件还原成原来的二进制文件时(去掉文件开头的五个数字),我发现得到的二进制文件和最初的二进制文件不一样了。我不知道错在哪儿了。
程序片断如下:
#define BUFFSIZE 80
......
short int buff[BUFFSIZE];
......
/* 以下是读入二进制,写到ASCII */
buff[0] = 1651; /* MagicNumber */
buff[1] = 1; /* Format: hexadecimal */
buff[2] = 0;
fprintf(fdes,"%hd %hd %hd %hd %hd\n",buff[0],buff[1],buff[2],buff[2],buff[2]);
for (i = 0; i < BUFFSIZE; i++) buff[i] = 0;
while (count = fread(buff,sizeof(short int),BUFFSIZE,fsrc))
{
for (i = 0; i < count; i++)
{
fprintf(fdes,"0x%hx\n",buff[i]);
}
if (count < BUFFSIZE) // the end
{
break;
}
}
......
/* 以下是读入ASCII,写到二进制 */
fscanf(fsrc,"%hd %hd %hd %hd %hd\n",&buff[0],&buff[1],&buff[2],&buff[3],&buff[4]);
for (i = 0; i < BUFFSIZE; i++) buff[i] = 0;
i = 0;
while (EOF != fscanf(fsrc,"%hx\n",&buff[i]))
{
i++;
if (i == (BUFFSIZE - 1))
{
fwrite(buff,sizeof(short int),BUFFSIZE,fdes);
i = 0;
}
}
if (i) // write the rest data
{
fwrite(buff,sizeof(short int),i,fdes);
}