Vai*_*wal 1 c sockets string strtol
我正在研究一个项目,由于某种原因,我无法strtol()将a转换char *为整数.我有这个代码:
int main(int argc, char *argv[]) {
//socket initialization code...
struct sockaddr_in addr;
char *buffer;
receivePacket(&sock, &buffer, &addr); //function i have written to receive a packet
char *temp;
int times = (int) strtol(buffer, &temp, 10);
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,时间总是最终为0,而temp返回垃圾:
(gdb) print buffer
$1 = 0xbefff648 "1"
(gdb) print times
$2 = 0
(gdb) print temp
$3 = 0xbefff648 "H\366\377\276(\207"
Run Code Online (Sandbox Code Playgroud)
我不明白为什么strtol无法理解我给它的东西.
在receivePacket:
void receivePacket(int *sock, char **buffer, long *tx, struct sockaddr_in *cliaddr) {
//socket related code, initializations, etc.
char temp[10] = { 0 };
n = recvfrom(*sock, temp, 10, 0, (struct sockaddr *) &cliAddr, &clilen);
*buffer = temp;
}
Run Code Online (Sandbox Code Playgroud)
这是问题所在吗?谢谢.
void receivePacket(int *sock, char **buffer, long *tx, struct sockaddr_in *cliaddr) {
//socket related code, initializations, etc.
char temp[10] = { 0 };
n = recvfrom(*sock, temp, 10, 0, (struct sockaddr *) &cliAddr, &clilen);
*buffer = temp;
}
Run Code Online (Sandbox Code Playgroud)
temp是一个局部变量.当函数返回时它不再存在,留下*buffer指向一些无效的地方.
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |