Erreur «affectation ‘const’ qualificatif» sur un pointeur non-const

Dans la fonction suivante:

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; } 

Je reçois assignment discards 'const' qualifier from pointer target type pour la ligne rest = input + i + 2 , mais comme vous pouvez le constater, le repos n’est pas un pointeur constant. Qu’est-ce que je fais mal ici?

input est un pointeur sur un caractère constant et vous l’assignez à un pointeur sur un caractère non constant . Ceci pourrait être une lecture intéressante pour vous.

changer le prototype en

 char *mystrtok(const char *input, const char *delim, const char *rest); 

vous pouvez aussi convertir votre variable ‘input’ avec un type (char *) qui résoudrait l’avertissement. soyez juste prudent en utilisant des conversions explicites comme ceci afin de ne pas modifier les constantes elles-mêmes.

 rest = (char*)input + i + 2;