Aide sur une fonction retournat un pointeur sur char. Merci - C - Programmation
Marsh Posté le 15-10-2014 à 12:40:26
Il va falloir apprendre l'anglais, si tu veux t'en sortir en programmation.
Le message d'avertissement de ton compilateur est plutôt éloquent : tu perds l'information que le char sur lequel tu pointes était constant quand tu retournes sont adresse. Tu peux corriger ca en retournant un const char* au lieu d'un simple char*
Marsh Posté le 15-10-2014 à 13:24:10
Soit il peut caster:
Code :
|
soit il décide que tout est en const:
Code :
|
Tout dépend de ce qu'il veut faire du résultat (modifier ou pas la chaine retournée...).
Noter que c'est idiot ici que l'on aie comme paramètre int caractereARechercher. Ce serait bien plus clair d'avoir char caractereARechercher.
A+,
Marsh Posté le 15-10-2014 à 18:27:45
kalin a écrit :
|
Salut
Tu devrais remplacer ton dernier return par
Code :
|
C'est plus lisible. D'ailleurs en fait ta variable pi ne sert à rien. Ou plutôt elle servira si tu t'en sers comme pointeur de travail, ce qui t'évitera déjà de faire deux fois ce chaine + i (hé oui, chaque fois que tu tapes dans chaine[i] ça provoque ce déréférencement) et surtout cet appel à longueurChaine() à chaque itération !!!
Bref ta fonction à tout à y gagner si tu l'écris ainsi
Code :
|
Marsh Posté le 15-10-2014 à 06:09:51
Salut a tous j'ai problème avec une fonction en c depuis 2 mois voici la fonction en question
char *rechercheCaractereChaine (const char *chaine, int caractereARechercher)
{
char *pi = NULL ;
int i = 0 ;
for(i = 0; i < longueurChaine(chaine); i++)
{
if(chaine[i] == caractereARechercher)
{
pi = ( chaine + i ) ;// c 'est sur cette ligne ou il y a probleme
return (pi) ;
}
}
return(pi) ;
}
comme vous pouvez le voir cette fonction recherche un caractère dans une chaine de caractères et retourne un pointeur sur char mais a la compilation
sa m affiche le massage suivant a la ligne ou il y a le commentaire :
warning:assignment discards 'const' qualifier from pointer target type [enabled by default]
comment faire pour que message ne s affiche plus
merci d 'avance.