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

  FORUM HardWare.fr
  Programmation
  C

  Saisir un char* pour le retourner

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Saisir un char* pour le retourner

n°940570
sedrilo
Posté le 07-01-2005 à 18:51:39  profilanswer
 

Comment saisir un caractère puis retourner le pointeur sur celui-ci?
Apparement, on peut pas utiliser direct la fonction scanf("%s", nom) et il faut scanner uns à uns les caractères... ?
J'ai tenté :
 
        char nom[21];
        int i=0;
        printf("Quel nom voulez-vous donner à votre joueur (20 caract. max) ? " );
        while((nom[i]=getchar())!='\n')
 {
  i++;
 }
        nom[i]='\0';
        printf("Votre nom :" );
        i=0;
        while(nom[i]!='\0')
        {
                    putchar(nom[i]);
                    i++;
        }    
 printf("\n" );
 
       return nom;
 
 
Mais ici nom est local et la compilation me renvoie :  
 
cc -Wall -Werror interfaceText.c main.c -o interfaceText
interfaceText.c: In function `demanderEtAfficherNomJoueur':
interfaceText.c:61: warning: function returns address of local variable
make: *** [graphik] Erreur 1
 
Comment renvoyer un pointeur sur ma chaine de caractère saisie?
J'ai essayé de ruser en créant un autre char* et en faisant un strcpy, mais j'ai eu un segmentation fault.
Merci.

mood
Publicité
Posté le 07-01-2005 à 18:51:39  profilanswer
 

n°940588
pains-aux-​raisins
Fatal error
Posté le 07-01-2005 à 19:00:28  profilanswer
 

Bonjour Sedrilo,
pour plus de careté, utilise les balises [ cpp] et [ /cpp] (supprime l'espace juste après le crochet ouvrant),
indente correctement ton code et une pluie de réponses résolvera tout tes problèmes... ;)


Message édité par pains-aux-raisins le 07-01-2005 à 19:02:49
n°940590
Emmanuel D​elahaye
C is a sharp tool
Posté le 07-01-2005 à 19:03:08  profilanswer
 

sedrilo a écrit :

Comment saisir un caractère puis retourner le pointeur sur celui-ci?


Tu veux sans doute dire "comment saisir une chaine de caractère et retourner son adresse ?"
 
Il y a 3 solutions.
 

  • Passer l'adresse d'une chaine (et sa taille)

  char s[123)
 
   f(s, sizeof s);

 
 

  • Allouer un tableau de char et retourner son adresse. La libération est faite par l'appelant.

char *f()
{
   char *s = malloc (123);
   <...>
   return s;
}


 

  • Retourner l'adresse d'un tableau statique (déconseillé pour des problèmes liés à la non-réentrance du code)

char *f()
{
   static s[123];
   <...>
   return s;
}


Citation :


Apparement, on peut pas utiliser direct la fonction scanf("%s", nom) et  


On peut utiliser scanf(), mais c'est une fonction difficile. On préfère fgets().


Message édité par Emmanuel Delahaye le 07-01-2005 à 19:46:25

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°940635
sedrilo
Posté le 07-01-2005 à 19:32:56  profilanswer
 

Ok merci Emmanuel, je suis passé par le malloc et j'ai pu retourner son adresse!

n°950196
minimoke
beep beep
Posté le 10-01-2005 à 17:37:27  profilanswer
 

moi je dirais un truc du genre c aussi possible.
scanf("%20s", nom);


---------------
  ____

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

  Saisir un char* pour le retourner

 

Sujets relatifs
[C et xp]Comment saisir le nom du fichier d'entrée standard?Comment retourner un tableau (SVP)
[Perl] Comment retourner une chaine de caractaires ?Retourner une image modifiée en fonction du demandeur
Retourner un tableau d'éléments de type utilisateurRetourner le dernier element d'une table
Probleme pour retourner un booleensaisir un dessin de l utilisateur
Saisir le nom que l'on veut attribuer à une instance de classeComment retourner l'extension d'un fichier a ouvrir ?
Plus de sujets relatifs à : Saisir un char* pour le retourner


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