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

  FORUM HardWare.fr
  Programmation
  C++

  problème saisi chaine de caractère

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème saisi chaine de caractère

n°2212289
shlayers
Posté le 01-12-2013 à 10:54:46  profilanswer
 

Bonjours à tous j'ai un problème sur un exercice, je doit saisir des villes les triés au moment de la saisir puis rendre un tableau avec toutes les villes sans les occurences possible puis un autre tableau avec le nombre d'occurence de chaque ville.
Donc pour le moment j'ai toutes les fonction dont j'ai besoin mais je bloque sur la fonction principales qui est de saisir les villes et les enregistré dans un tableau...
voilà ce que j'ai fait pour la fonction de saisi sachant que j'air recommencé une bonne 10ène de fois et que la je désespère...
je rapelle que pour cette fonction je ne veut que saisir des villes et retourné le tableau avec toute les villes saisis.

Code :
  1. char** pResultat=(char**)malloc(sizeof(char*)*(20));// 20 ville différentes au maximum
  2. char* laVille;
  3. scanf("%s",laVille);
  4. for (int i=0;i<20;i++){
  5.  scanf("%s",laVille);
  6.  pResultat[i]=laVille;
  7.  if(laVille=="." ) break;// lorsque que l'utilisateur saisi un point on arrête la saisi
  8. }
  9. return pResultat;
  10. }


Message édité par shlayers le 01-12-2013 à 12:31:48
mood
Publicité
Posté le 01-12-2013 à 10:54:46  profilanswer
 

n°2212293
Farian
Posté le 01-12-2013 à 11:55:15  profilanswer
 

Bonjour !
 
Le bloc ci-dessous est incorrect :  

Code :
  1. char* laVille;
  2. scanf("%s",laVille);


 
En effet, vous déclarez un pointeur qui pointe sur on ne sait pas quoi et vous vous en servez pour stocker le résultat de la saisie.
 
Vous devez allouer votre pointeur avant de saisir.
 
Dans le cas qui nous intéresse, le mieux est de faire une double allocation de pResultat :

Code :
  1. char** pResultat=(char**)malloc(sizeof(char*)*(20));
  2.    for (int i=0;i<20;i++)
  3.    {
  4.       pResultat[i]=(char*)malloc(sizeof(char)*(80));
  5.    }


 
(En prenant assez large au niveau de la taille pour la deuxième allocation pour ne pas déborder ...), puis vous saisissez directement dans pResultat dans la boucle en faisant  

Code :
  1. for (int i=0;i<20;i++)
  2. {
  3.   scanf("%s",pResultat[i]);
  4.   ...
  5. }


 
De plus, votre "if (laVille == "." )" ne retournera jamais vrai, il vous faut faire "if (strcmp(laVille, "." ) == 0)"
 
Bon, maintenant, tout ceci n'est valable que si vous devez faire du C, si vous pouvez faire du C++ (comme la rubrique dans laquelle vous avez posté semble l'indiquer ;) ), vous utilisez std::string et std::cin et c'est BEAUCOUP plus simple :)

n°2212294
shlayers
Posté le 01-12-2013 à 12:13:20  profilanswer
 

un Grand merci à toi, enfait mon prof nous fait travailler dans un environnement c++ mais apparement il nous apprend pas toute les possibilité du c++ donc la prochaine fois je posterais dans la section c en tous cas merci de m'avoir montré mes erreurs vraiment bête.... Maintenant j'ai un  problème sur l'appel de la fonction  

Code :
  1. void main()
  2. {
  3. char** leTabVille=Saisir();
  4. for (int i=0;i<20;i++)
  5.  printf("%s",leTabVille[i]);
  6. getch();
  7. }


le printf ne m'affiche pas bien le tableau il m'affiche plein de hiéroglyphe...


Message édité par shlayers le 01-12-2013 à 12:31:08

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

  problème saisi chaine de caractère

 

Sujets relatifs
Petit un problème avec structure[C]Chaine qui ne s'affiche pas...
[JAVASCRIPT + HTML] Problème fonction ReturnProblème utilisation deux librairies en même temps g++
problème condition ifprobleme base de registre
Problème d'ouverture de port COMProblème pour la carte de France avec Osclass
Java's cool 4 - Proglet polyominos - problème !Problème avec innerHTML
Plus de sujets relatifs à : problème saisi chaine de caractère


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