Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3046 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Aide sur une fonction retournat un pointeur sur char. Merci

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Aide sur une fonction retournat un pointeur sur char. Merci

n°2240311
kalin
Posté le 15-10-2014 à 06:09:51  profilanswer
 

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.

mood
Publicité
Posté le 15-10-2014 à 06:09:51  profilanswer
 

n°2240357
theshockwa​ve
I work at a firm named Koslow
Posté le 15-10-2014 à 12:40:26  profilanswer
 

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*


---------------
last.fm
n°2240359
gilou
Modérateur
Modzilla
Posté le 15-10-2014 à 13:24:10  profilanswer
 

Soit il peut caster:  

Code :
  1. char *rechercheCaractereChaine (const char *chaine, int caractereARechercher) {
  2.     char *pi = NULL ;
  3.     int i = 0 ;
  4.     for (i = 0; i < longueurChaine(chaine); i++) {
  5. if(chaine[i] == caractereARechercher) {
  6.     pi = (char *) ( chaine + i ) ;// c 'est sur cette ligne ou il y a probleme
  7.     return (pi) ;
  8. }
  9.     }
  10.     return(pi) ;
  11. }

 
soit il décide que tout est en const:

Code :
  1. const char *rechercheCaractereChaine (const char *chaine, int caractereARechercher) {
  2.     const char *pi = NULL ;
  3.     int i = 0 ;
  4.     for (i = 0; i < longueurChaine(chaine); i++) {
  5. if(chaine[i] == caractereARechercher) {
  6.     pi = ( chaine + i ) ;// c 'est sur cette ligne ou il y a probleme
  7.     return (pi) ;
  8. }
  9.     }
  10.     return(pi) ;
  11. }


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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2240397
Sve@r
Posté le 15-10-2014 à 18:27:45  profilanswer
 

kalin a écrit :


Code :
  1. char *rechercheCaractereChaine (const char *chaine, int caractereARechercher)
  2. {
  3.     char *pi = NULL ;
  4.     ...
  5.     return(pi) ;
  6. }



 
Salut
 
Tu devrais remplacer ton dernier return par

Code :
  1. return NULL


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 :
  1. const char *rechercheCaractereChaine (const char *chaine, int /* char ???*/ caractereARechercher) {
  2.     const char *pi ;
  3.     for (pi = chaine; *pi != '\0'; pi++) {
  4.         if (*pi == caractereARechercher) return pi;
  5.     }
  6.     return NULL;
  7. }


Message édité par Sve@r le 15-10-2014 à 18:37:10

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Aide sur une fonction retournat un pointeur sur char. Merci

 

Sujets relatifs
Besoin d'aide (programmation C)Utiliser getClass() dans une fonction
problème avec jquery et fonction load()Aide correctif pour javascript matrix sous ff
Comment modifier la fonction d'un boutonAide sur Rewrite et redirection
Aide envois de courrielBesoin d'aide-Montage supervision
Aide menu js en php se referme à chaque rechargementaide pour un programme en c
Plus de sujets relatifs à : Aide sur une fonction retournat un pointeur sur char. Merci


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR