读书人

读取文件遇到0x1a就停止是咋回事

发布时间: 2012-04-12 15:46:35 作者: rapoo

读取文件遇到0x1a就停止是怎么回事
void main()
{
FILE *fp;
int i,j;
unsigned char pkt[1518];
/* read the newly created files */
i=0; j = 0;
fp = fopen( "arp02.packet ", "r ");
if(fp==NULL) cout < < "Error,unable to open the file! ";
else{
while( !feof(fp) )
{
pkt[i]= fgetc(fp) & 0xff;
i++; j++;
}
fclose(fp);}

int length=j-1;
for(i=0; i <length; i++)
{
printf( "0x%02x ", pkt[i]);
if( i % 10 == 9 )
printf( "\n ");
}/*print pkt*/
printf( "\n ");}
输出的时候一遇到0x1a就停止,只输出到这个的前一个byte,这是怎么回事


[解决办法]
0x1a 是 Ctrl+Z ,这是模拟文件结束的符号,简单的说,就是文件遇到0x1a后,认为文件已经结束.
[解决办法]
fopen时用fp = fopen( "filename ", "rb " );
可以用二进制形式读文件,可以避免该问题

读书人网 >C++

热点推荐