strtok 不适用于非常量字符参数

strtok doesn't work with non-const char argument

我有这个功能,可以把一个句子倒过来。 我必须就地修改值,return 值应该为 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 它也不起作用,我不明白为什么... 有人有什么建议让它发挥作用吗? 谢谢

char *string= "hello";替换为char string[] = "hello";

否则string将无法修改,不可能反向函数工作。 (假设它总是 return NULL)