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

  FORUM HardWare.fr
  Programmation
  C

  Chaîne de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Chaîne de caractère

n°2259196
nodrihcx7
Posté le 01-06-2015 à 02:21:35  profilanswer
 

Bonsoir tout le monde j'aurais besoin de votre aide
J'aimerais traiter N chaîne de caractère avec les pointeurs (sachant que le N est donner par l'utilisateur)
Voici ce que j'ai fait :(bien-sûr sans oublier les biblio)
int i,N;
printf(''donner N\n'');
scanf("%d",&N);
char *phrase[N]; char aide(200);
for(i=0;i<N;i++){
printf(" veuillez saisir la phrase %d\n" );
gets(aide);
phrase[i]=(int*)malloc(strlen(aide)*sizeof(char)+1);
strcpy(phrase[i],aide);
}
Mais j'arrive pas à lire la 1ère phrase il commence directement de la deuxième  

mood
Publicité
Posté le 01-06-2015 à 02:21:35  profilanswer
 

n°2259324
rat de com​bat
attention rongeur méchant!
Posté le 01-06-2015 à 21:26:09  profilanswer
 

Donne donc ton code réel, parce que là avec du char aide(200); ça ne compile même pas! Et configure ton compilateur pour qu'il affiche la maximum de warnings! (sous GCC rajouter le paramètre -Wall)

n°2259325
rat de com​bat
attention rongeur méchant!
Posté le 01-06-2015 à 21:35:08  profilanswer
 

Citation :

Mais j'arrive pas à lire la 1ère phrase il commence directement de la deuxième  


Tu veux dire écrire la 1ere phrase? Effectivement le programme affiche directement  

Code :
  1. veuillez saisir la phrase 0
  2. veuillez saisir la phrase 1
  3. (en attente d'entrée)


C'est probablement du au fait que scanf() laisse dans le buffer d'entrée le saut de ligne qui vient de l'appui sur entrée après avoir tappé N. Faut vider le buffer. On voit souvent fflush(stdin) mais c'est FAUX car comportement non déterminé. À la place on peut utiliser ceci

Code :
  1. fseek(stdin, 0, SEEK_END);

mais il y a peut-être mieux...
 
De manière générale: N c'est pas très parlant, peut-être plutôt genre nbphrases? Faut aussi vérifier ce que retourne malloc(). Et puis si on entre des lettres pour N le programme plante. A revoir mais les histoires d'entrée-sortie je laisse ma place à quelqu'un d'autre...  
 
(Je fais exprès de ne pas donner de code complet corrigé...)


Message édité par rat de combat le 01-06-2015 à 21:35:57
n°2259326
rat de com​bat
attention rongeur méchant!
Posté le 01-06-2015 à 21:40:54  profilanswer
 

Ah oui, ton gets(aide); il ne limite pas le nombre de caractères, si on en entre trop --> buffer overflow :-(


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

  Chaîne de caractère

 

Sujets relatifs
[Résolu]Excel 2010 - remplacer chaine de caractère dans un fichier[Batch] selection d'une partie de chaine de caractère
[VBA] Donner une valeur numérique à une chaine de caractère[Résolu] Insérer un caractère dans une chaine à une position donnée
[Shell/Batch] Recherche d'une chaîne de caractère dans un fichier[BATCH] Stocker une chaine de caractère avec une boucle for.
problème saisi chaine de caractèreextraire un entier d'une chaîne de caractère ; string
[C] Remplacer un char dans une chaine de caractèreChaine de caractère entre dièse inattendu
Plus de sujets relatifs à : Chaîne de caractère


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