【发布时间】:2016-01-16 15:44:48
【问题描述】:
在我的程序中,我使用 malloc 将动态内存分配给“char *”类型的变量缓冲区。然后,如果我使用strtok(buffer,"+");,则会出现分段错误。我得到了这个Stackoverflow 和同样问题Stackoverflow 的原因。但两个帖子都没有给我想要的解决方案。因为我不能根据我的程序使用静态内存或数组类型。
我的问题是在 strtok 中,在争论中如果我使用 char 数组然后工作正常,而当使用 char * 时会出错。如何在 strtok 争论中使用 char *。
char *buffer;
int len;
connection_t * conn;
long addr = 0;
FILE *fptr;
if (!ptr) pthread_exit(0);
conn = (connection_t *)ptr;
const char *s = "+";
char *token;
/* read length of message */
read(conn->sock, &len, sizeof(int));
if (len > 0)
{
addr = (long)((struct sockaddr_in *)&conn->address)->sin_addr.s_addr;
buffer = (char *)malloc((len+1)*sizeof(char));
buffer[len] = 0;
/* read message */
read(conn->sock, buffer, len);
printf("%s and %d \n",buffer, addr);
/* get the first token */
token = strtok(buffer,"+");
显示分段错误的最后一行
【问题讨论】:
-
请出示代码。,....
-
你需要阅读How to Ask
-
字符 *缓冲区;字符 * 令牌;缓冲区 = (char *)malloc((len+1)*sizeof(char));缓冲区[len] = 0;令牌 = strtok(缓冲区,"+");显示分段错误,但如果我使用 buffer[]="a+b+c";然后它正在工作。如何在 strtok 中使用 char * 类型参数。
-
你忘了在
strtok之前用数据填充buffer。
标签: c string segmentation-fault malloc string.h