5

次の関数で:

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は一定のポインターではありません。私はここで何が間違っているのですか?

4

3 に答える 3

8

inputは定数charへのポインタであり、非定数charへのポインタに割り当てています。これはあなたにとって興味深い読み物かもしれません。

于 2012-04-11T20:26:56.563 に答える
2

警告を解決する(char *)型を使用して'input'変数をキャストすることもできます。定数自体を変更しないように、このような明示的なキャストの使用には注意してください。

rest = (char*)input + i + 2;
于 2016-11-22T11:17:22.313 に答える
0

プロトタイプをに変更します

char *mystrtok(const char *input, const char *delim, const char *rest);
于 2012-04-11T20:29:19.503 に答える