【发布时间】:2021-03-30 16:08:23
【问题描述】:
我有一个字符串,比如说char input[] = "one two three";,我想要的是一个函数,它接受两个参数,输入字符串和我想要这些词所在的字符串数组。
例如,在伪代码中,transferWords(input, words) 将获取input 字符串中的每个单词并将其放入字符串数组words 中,这样words = {"one", "two", "three"}。我无法分配内存(malloc() 等...),因为练习不允许我这样做。
我尝试过使用指针,但这没有用,因为如果我碰巧访问单词[21],它将读取其他内容:
void transfer(char input[], char *words[20]){
char *p;
int i = 0;
p = strtok(input," \t\n");
while(p != 0)
{
words[i++] = p;
p = strtok(0, " \t\n");
}
}
words 之前将被初始化为 char *words[20] = {0};。
我该怎么做呢?
(我对 C 语言还很陌生,还不太习惯,所以如果这是显而易见的事情,请道歉。)
【问题讨论】:
-
如果没有
malloc或 C99 的 VLA,您将需要字符串数组的最大大小。