char** strsep(const char* str)
{
char** returnStrings = NULL;
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == ' ') returnStrings[sizeof(returnStrings)/sizeof(returnStrings[0])] = "";
else returnStrings[sizeof(returnStrings)/sizeof(returnStrings[0])] += str[i];
}
return returnStrings;
}
我正在尝试创建一个函数,该函数可以将一个句子(字符串)拆分为一个单词(也包括字符串)数组,但是它将无法编译并显示error: implicitly declaring library function 'strlen' with type 'unsigned long (const char *)' [-Werror,-Wimplicit-function-declaration]
。它说我要输入一个无符号长作为strlen()的参数,但我不是。
您需要#include <string.h>
才能获得strlen()
的正确定义。
隐式声明是几年前的一个严重错误。
总是用gcc -Wall -Werror
编译。
此外,returnStrings
是NULL指针,您从不分配内存,但尝试取消引用它。
而且,这是错误的:
returnStrings[sizeof(returnStrings)/sizeof(returnStrings[0])]
您可能用谷歌搜索了“ C获取数组的大小并应用了该模式,但是忽略了这样的警告:”这仅适用于arrays而不适用于指针。如果在指针上使用它,它将编译但给出不正确的结果。“
而且,这是错误的:
... += str[i]
您无法使用+=
运算符将字符附加到C中的“字符串”。这将操纵指针,这根本不是您想要的。
除了您缺少<string.h>
的声明外,这似乎是您的错误。
strtok()
不适合您想要的更好吗?既然您提到过,您想将一个句子拆分为一系列也是字符串的单词?