[英]Splitting a string (Segmentation Fault on test)
我正在尝试从给定输入中提取子字符串,例如,如果我在char *
有“你好,我在这里” char *
我想获取:
char tab[0] = "Hello";
char tab[1] = "I";
/// etc
但这给我一个Segfault,有什么帮助吗?
这是我划分char *
:
#include <stdlib.h>
char **str_to_wordtab(char *str)
{
int i;
int j;
int k;
char **tab;
i = 0;
k = 0;
tab = malloc(my_strlen(str) * sizeof(*tab));
while (str[k] != '\0')
{
j = 0;
tab[i] = malloc(my_strlen(str) * sizeof(*tab[i]));
while (str[k] != ' ')
tab[i][j++] = str[k++];
tab[i][j] = '\0';
if (str[k] == ' ')
k++;
i++;
}
return (tab);
}
这是测试它的主要方法:
int main(int ac, char **av)
{
char **tab;
int i;
i = 0;
tab = str_to_wordtab("Hello I am here");
while (tab[i])
{
my_putstr(tab[i++]);
my_putstr("\n");
}
}
谢谢你帮我
这不是您想要的除法,而是字符串的分割。 考虑以空格作为分隔符的strtok
。
关于段故障,以下是一些线索:
while (str[k] != '\\0')
可能会很危险,如果您忘记在字符串中重新复制\\0
您的内部while循环应如下所示:
while (str[k] != ' ')
{
tab[i][j++] = str[k++];
if (str[k-1] == 0)
{
tab[++i] = 0 ;
return tab ;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.