avertissement: ignore 'const' qualificatifs de pointeur de type de cible

N'est pas const char *s signifie que "s est un pointeur qui pointe vers une constante char ", alors pourquoi il me donne cet avertissement? Je n'essaie pas de changer les valeurs.

Dans la première fonction d'avertissement est return discards 'const' qualifiers from pointer target type.

et dans le deuxième avertissement est assignment discards 'const' qualifiers from pointer target type.

J'essayais de faire de la bibliothèque de fonctions qui sont définies dans string.h, et aussi me dire comment le corriger.

char *my_strchr( const char *s, int c )
{
    for(;*s!='
char *my_strchr( const char *s, int c )
{
for(;*s!='\0';s++)
if(*s==c)
return s; //warning
return 0;
}
char *my_strpbrk( const char *s1, const char *s2 )
{
char *s2ptr;
for(;*s1!='\0';s1++)
for(s2ptr=s2;*s2ptr!='\0';s2ptr++) //warning
if(*s1==*s2ptr)
return s2ptr;
return 0;
}
'
;s++) if(*s==c) return s; //warning return 0; } char *my_strpbrk( const char *s1, const char *s2 ) { char *s2ptr; for(;*s1!='
char *my_strchr( const char *s, int c )
{
for(;*s!='\0';s++)
if(*s==c)
return s; //warning
return 0;
}
char *my_strpbrk( const char *s1, const char *s2 )
{
char *s2ptr;
for(;*s1!='\0';s1++)
for(s2ptr=s2;*s2ptr!='\0';s2ptr++) //warning
if(*s1==*s2ptr)
return s2ptr;
return 0;
}
'
;s1++) for(s2ptr=s2;*s2ptr!='
char *my_strchr( const char *s, int c )
{
for(;*s!='\0';s++)
if(*s==c)
return s; //warning
return 0;
}
char *my_strpbrk( const char *s1, const char *s2 )
{
char *s2ptr;
for(;*s1!='\0';s1++)
for(s2ptr=s2;*s2ptr!='\0';s2ptr++) //warning
if(*s1==*s2ptr)
return s2ptr;
return 0;
}
'
;s2ptr++) //warning if(*s1==*s2ptr) return s2ptr; return 0; }
Votre return déclaration est la conversion de const char * à char *, c'est à dire, il est implicitement en changeant le type en jetant l' const restriction. Vous pouvez résoudre le problème en changeant le type de retour de fonction à const char * (ou char const *), ou la suppression de const à partir de l'argument type, ou vous pouvez contourner le type de système en insérant un cast explicite, c'est à dire return (char *)s;
Note: la valeur de Retour de strpbrk doit être un pointeur de chaîne s1, pas s2.
"const char *s signifie que "s est un pointeur qui pointe vers une constante char" --> Pas de. s points de char qui ne doit pas être modifié. Les données s points pour peut ou peut ne pas être constante, mais cette fonction ne doit pas tenter de le changer. Look. mais ne touchez pas.
aucune des réponses ci-dessous a résolu votre problème, il ne marque tout comme acceptée. Lire plus à ce sujet ici: stackoverflow.com/help/accepted-answer

OriginalL'auteur Ummair | 2016-05-11