C - 将C-String拆分为单词而不重新分配内存

时间:2017-05-10 15:02:06

标签: c arrays string

我试图将字符串(const char *)拆分为单词并将单个单词保存在char-pointer(char **)数组中。

我的问题不是拆分部分,而是我不允许分配任何内存。我需要使用输入字符串作为我的内存,但由于它是一个const char *我无法修改它。

我的渴望是将所有空格改为' \ 0'并保存数组中单词开头的位置,这当然是不可能的,因为输入字符串是const。

该函数的声明如下所示:

setspn -Q nn/myserver01@TOTO.NET

该函数返回中的单词数, maxWords 是单词数组的大小。

我发现的所有内容都使用数组作为输入字符串或使用malloc分配内存。

1 个答案:

答案 0 :(得分:4)

提出的问题无法解决。您可以获取指向每个单词开头的指针,但是为了使用源字符串作为单独单词字符串的存储,您必须通过使用字符串终止符替换分隔符来修改它,如您所考虑的那样。

如果任务确实假设你将改变输入行以使用它来存储几个单独的字符串,那么它似乎是函数line参数本身不正确{{{ 1}} - 合格。这种限定与该功能应该执行的工作不一致。此外,如果您要将const指向的字符串中的指针分配到line,那么words 不是 words的事实 - 资格也存在冲突。

我在上述问题中看到的唯一合理解决方案是从const参数中删除const限定符。