【发布时间】:2019-10-01 07:42:13
【问题描述】:
我正在尝试将带有新字符串的字符串数组传递给函数,并且在此函数中,我想将此字符串添加到数组中并重置字符串。我似乎无法让它在函数内部工作,但没有它就可以工作
int main(void)
{
const char* text = "hello world";
int text_length = strlen(text);
char* words[text_length];
char word[text_length];
int length = 0;
int k = 0;
for (int i = 0; i < text_length; ++i) {
if (isspace(text[i])) {
words[length] = malloc(strlen(word) + 1);
strcpy(words[length++], word);
memset(word, 0, sizeof(word));
k = 0;
}
//...
//... adding chars to the word
word[k++]= text[i];
}
}
这很好用,但它不行:
void add_word(char* words[], char* word, int* words_length, int* word_cursor)
{
words[*words_length] = malloc(strlen(word) + 1);
strcpy(words[*words_length++], word);
memset(word, 0, sizeof(word));
*word_cursor = 0;
}
int main(void)
{
const char* text = "hello world";
int text_length = strlen(text);
char* words[text_length];
char word[text_length];
int length = 0;
int k = 0;
for (int i = 0; i < text_length; ++i) {
if (isspace(text[i])) {
add_word(words, word, &length, &k);
}
//...
//... adding chars to the word
word[k++]= text[i];
}
}
我错过了什么?
【问题讨论】:
-
请尝试创建一个minimal reproducible example 向我们展示,其中包括所有变量定义及其初始化方式。一个完美的例子是我们可以复制粘贴它并复制您的确切问题(并且不会出现任何不相关的错误)。
-
顺便说一句,在
add_word函数中sizeof(word)不会工作(至少不是你想要的工作方式)。 -
抱歉,我已经用所有缺失的数据更新了我的示例。
-
函数
add_word中,word是指针,不是数组,所以sizeof(word)只是指针的大小,而不是数组的长度。
标签: c arrays string malloc c99