【发布时间】:2016-11-07 19:04:23
【问题描述】:
我有这个功能,可以取一个句子并反转每个单词。 我必须就地修改值,返回值应该为 Null。 我不能修改主要的:
int main()
{
char *string= "hello";
reverser(string);
printf("%s\n", string);
}
在我的reverser 函数中,我使用strtok,这需要non-const char*
char* reverser(char *sentence) {
char *copy = strdup(sentence);
char *string;
int i, j;
for(j = 0; (string = strtok(j ? NULL : copy, " ")) != NULL; j++)
for(i = strlen(string) - 1; i >= 0; --i, j++)
sentence[j] = string[i];
return NULL;
}
即使使用 strdup 也不起作用,我不知道为什么... 有人有什么建议让它工作吗? 谢谢你
【问题讨论】:
-
您知道
strdup已经将sentence的内容复制到copy的缓冲区吗? -
Sentence 指向一个字符串字面量。不得修改。
-
顺便说一句,你总是从
reserver返回NULL。甚至没有看你的 for 循环,但这些应该已经是你应该修复的一些错误。 -
"strtok 不适用于非 const char 参数" -->
strtok()工作正常。尝试修改"hello"是不行的。尝试char string[] = "hello";并在完成后释放您分配的数据。 -
如果你不能修改那个主代码,你的任务是不可能的(没有作弊)。
标签: c strtok char-pointer