[英]Splitting string with delimiters in C - segmentation fault
我想编写一个将字符串拆分为char数组的函数。 我知道结果数组总是只有两个元素 - servername和serverport。 我写了这个,但它在编译后给了我“Segmentation fault”:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* splitString(char stringToSplit[])
{
int i = 0;
char serverinfo[2];
char *tmp;
tmp = strtok(stringToSplit, ":");
while (tmp != NULL)
{
serverinfo[i] = tmp;
tmp = strtok(NULL, ":");
i++;
}
return serverinfo;
}
int main(int argc, char **argv)
{
char st[] = "servername:1234";
char *tab = splitString(st);
printf("%s\n", tab[0]);
printf("%s\n", tab[1]);
return 0;
}
char serverinfo[2];
为两个char
分配空间,但是你将char*
存储在那里,所以制作它
char* serverinfo[2];
但是你从函数返回它,但是,函数返回后局部变量不再存在,所以你需要malloc
它
char **serverinfo = malloc(2*sizeof *serverinfo);
并将该函数声明为
char **splitString(char stringToSplit[])
为了正确的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.