读取文件遇到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 " );
可以用二进制形式读文件,可以避免该问题