在以下功能中:
char *mystrtok(const char *input, const char *delim,char *rest) {
int i;
for (i = 0; input[i] != *delim && input[i] != '\0'; ++i) {
continue;
}
char *result = malloc(sizeof(char) * (i + 2));
memcpy(result, input, i + 1);
result[i + 1] = '\0';
if (input[i + 1] != '\0')
rest = input + i + 2;
else
rest = NULL;
return result;
}
我为行assignment discards 'const' qualifier from pointer target type
获取rest = input + i + 2
,但是,正如您所看到的,rest不是常量指针。我在这里做错了什么?
答案 0 :(得分:5)
input
是指向常量char的指针,您将其指定给指向非常量 char的指针。 This here对你来说可能是一本有趣的读物。
答案 1 :(得分:0)
将原型更改为
char *mystrtok(const char *input, const char *delim, const char *rest);
答案 2 :(得分:0)
你也可以投出你的输入'带有(char *)类型的变量,可以解决警告。请小心使用这样的显式强制转换,以免自己修改常量。
rest = (char*)input + i + 2;