【发布时间】:2020-03-19 14:40:37
【问题描述】:
我需要一些关于这个编码练习的建议:
编写一个将字符串拆分为单词的函数。分隔符将全部 是非字母数字字符。该函数返回一个数组,其中 每个单元格都包含一个字符串的地址(代表一个单词)。这 最后一个单元格必须为 NULL 才能终止数组。
我需要帮助的两件事是: 我的函数如何正确地将数组返回到我的主函数 malloc 数组是否使用得当?
我想我错过了指针部分,因为在编译过程中出现了错误。 如果您有任何想法,请告诉我,谢谢!
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char **my_str_to_word_array(const char *str)
{
char* tab_address = NULL;
int j = 0; /*Nombre de mots*/
int i = 0;
char ptr = 0;
for( i = 0; str[i] != " "; i++)/*Compter le nombre de mots dans la string*/
if(*str[i] = " ")
j++;
tab_address = malloc(sizeof(char) * j); /*tab avec tous les mots compter par j*/
if (tab_address == NULL)
exit(0);
for ( i = 0; str[i] != " "; i++) /*Stocker les adresse dans un tableau */
if(str[i] = " ")
{
i++;
tab_address[j] = ptr;
}
else if (*str[i] = "\0")
break;
return ptr;
free(tab_address);
}
int main(void)
{
char str[50] = "Hello world";
my_str_to_word_array(str);
return 0;
}
【问题讨论】:
-
我认为您希望在 malloc 中使用
sizeof(char*),因为您为char指针分配空间并不简单chars。tab_address应该是char**并且你想返回这个而不是ptr。return ptr;之后的任何代码都死了 -> 不会执行。 -
请编辑代码并修正缩进。
标签: c arrays pointers memory malloc