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)
我有这个功能,可以把一个句子倒过来。 我必须就地修改值,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)