【发布时间】:2015-03-04 17:31:39
【问题描述】:
我正在尝试从套接字读取 char 数组并获取可以在 for 循环中使用的整数值。可悲的是,我在 atoi() 处遇到了分段错误。我究竟做错了什么?
bytesRead = read(sock, buffer, 1024);
buffer[bytesRead] = '\0';
char tmp[bytesRead]; // I suspect creating this shorter
strncpy(tmp, buffer, bytesRead); // array is not necessary... but not sure.
int num = atoi(tmp);
【问题讨论】:
-
这取决于它在另一边的写法。顺便说一句,该代码不会编译...
-
你确定你正在读取的字节是 ASCII 吗?
-
你有客户端写入socket的代码吗?
-
在代码中的错误点处放置一个断点。此时查看
tmp中包含的实际值。您可能会发现实际内容与您的预期不符,您可以在代码中进行相应的调整。 -
“我怀疑没有必要创建这个较短的数组”你试过没有它吗?