gpt4 book ai didi

c - 分割字符串(测试时出现段错误)

转载 作者:行者123 更新时间:2023-11-30 17:38:05 25 4
gpt4 key购买 nike

我正在尝试从给定的输入中提取子字符串,例如,如果我有:“你好,我在这里”在 char *我想要得到:

char tab[0] = "Hello";
char tab[1] = "I";
/// etc

但是它给了我一个段错误,有什么帮助吗?

这是我的函数来划分我的 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");
}
}

谢谢你帮助我。

最佳答案

你的内部 while 循环应该是这样的:

  while (str[k] != ' ')
{
tab[i][j++] = str[k++];

if (str[k-1] == 0)
{
tab[++i] = 0 ;
return tab ;
}
}

关于c - 分割字符串(测试时出现段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22224969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com