请教关于 atoi() 函数的问题,请熟悉者指点!
代码如下:
char recordNumber[4];
memset( recordNumber, 0x20, sizeof(recordNumber) );
memcpy( recordNumber, header->record_num, sizeof(recordNumber) );
int recordNum = atoi(recordNumber);
gdb 跟踪结果如下:
Breakpoint 1, set_msg_ATTENTION_SELL_STOP_REPLY (odrret=0xbffe09f0, data=0xbfffc200, lastflag=0xbffe09ec, msgNum=0xbffe09e8)
at recvInquiryMsg.c:1873
1873 memset( recordNumber, 0x20, sizeof(recordNumber) );
(gdb) n
1874 memcpy( recordNumber, header->record_num, sizeof(recordNumber) );
(gdb) n
1875 int recordNum = atoi(recordNumber);
(gdb) p recordNumber
$1 = "0010" // 这里只是正确的
(gdb) n
1877 char *posPtr = (char*)data + EXIF_ATTENTION_SELL_STOP_REPLY_SIZE; // 59 + 8 + 1
(gdb) p recordNum
$2 = 1011111111 // atoi() 转换出来的值是错误的!!???
(gdb)
请问为什么会出现这种情况?请了解这给予指点!谢谢!!