Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 77 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Pb chaine de car en C

 
n°12967
benouille
Profil : Membre
Posté le 09-05-2005 à 18:19:32  profilanswer
 

Salut
 
Voila, j'ai un petit probleme avec un prog C :
J'ai un champ ADRESSE qui est de type  char, appartenant à une structure, et lorsque je saisi l'adresse, il ne m'affiche que ce qu'il y a avant l'espace.
Par exemple, je saisi 10 rue Emile Zola --> Est affiché à l'écran : 10
Avez vous une idée ?
Merci à vous :jap:


Message édité par benouille le 09-05-2005 à 18:22:59
n°12970
JoeBlack12​15
Carpe Diem
Profil : Membre
Posté le 09-05-2005 à 19:17:01  profilanswer
 

tu pourrais poster ton code ?

n°12971
benouille
Profil : Membre
Posté le 09-05-2005 à 20:27:28  profilanswer
 

Voici une partie de mon pg :
 
#include <stdio.h>
#include <stdlib.h>
 
#define DIM 50
 
 struct etu {
  int id;
  char nom[DIM];
  char prenom[DIM];
  char rue[DIM];
  char ville[DIM];
  int cp;
  int age;
 };
 
/* Fonction permettant d'initialiser tous les ID du tableau à -1 */
void initial(etu *liste){
 int i;
 for(i=0; i<DIM; i++) {
  liste[i].id=-1;
 }
}
 
/* Fonction effectuant la saisie initiale */
void saisie(int nb, etu *liste) {
 int j,k;
 
 for(j=0;j<nb;j++){
  printf("id #%d ? ",j);
  scanf("%d",&liste[j].id);
 
  /* si l'id existe, en redemander un  */
  for(k=0; k<DIM; k++) {
   while((liste[k].id==liste[j].id) && (j!=k)) {
    printf("cet id existe déjà, saisissez en un autre" );
    scanf("%d",&liste[j].id);
    }
  }
 
  printf("Nom de l'étudiant #%d ? ",j);
  scanf("%s",&liste[j].nom);
  printf("Prenom ? " );
  scanf("%s",&liste[j].prenom);
  printf("Numero et nom de rue ? " );
  scanf("%s",&liste[j].rue);

  fflush(stdin);
  printf("Ville ? " );
  scanf("%s",&liste[j].ville);
  fflush(stdin);
  printf("Code Postal ? " );
  scanf("%d",&liste[j].cp);
  while(liste[j].cp<01000 || liste[j].cp>99999){
   printf("Erreur dans la saisie du CODE POSTAL, veuillez recommencer\n" );
   scanf("%d",&liste[j].cp);
  }
  fflush(stdin);
  printf("Age ? " );
  scanf("%d",&liste[j].age);
  while(liste[j].age<6 || liste[j].age>100){
   printf("Il est impossible qu'un etudiant ait cet age la, saisissez un autre age\n" );
   scanf("%d",&liste[j].age);
  }
  system("cls" );
 }
 printf("Saisie terminée\n" );
}

n°12973
airv3
Coach de la Montgalorette
Profil : Vieux de la vieille
Posté le 09-05-2005 à 21:21:43  profilanswer
 

benouille a écrit :


printf("Numero et nom de rue ? " );
scanf("%s",&liste[j].rue);

fflush(stdin);


c normal
c l'utilisation de ton scanf
si en stdin tu as une chaine "10 rue ..." scanf("%s" ) recupèrera que le 10, si tu avais mis un scanf("%s %s" ) il aurait recupéré 10 rue  
comme tu ne pe pas determiner à l'avance comment ton user va entrer son adresse, i lfaut utiliser un autre moyen pour lire toute la chaine ;)

n°12974
JoeBlack12​15
Carpe Diem
Profil : Membre
Posté le 09-05-2005 à 21:47:39  profilanswer
 

+1
 
Utilise plutot fgets() pour récupérer l'intégralité de la chaine. Par contre, faudra veiller à virer l'éventuel '\n' qui pourrait trainer en fin de chaîne avant '\0'.

n°12975
benouille
Profil : Membre
Posté le 09-05-2005 à 23:19:31  profilanswer
 

Merci les gars ! :)

n°13018
airv3
Coach de la Montgalorette
Profil : Vieux de la vieille
Posté le 12-05-2005 à 01:52:58  profilanswer
 

JoeBlack1215 a écrit :

+1
 
Utilise plutot fgets() pour récupérer l'intégralité de la chaine. Par contre, faudra veiller à virer l'éventuel '\n' qui pourrait trainer en fin de chaîne avant '\0'.


:jap: je la connais et y a 2mois g t sur un vieux prog mais je men souvenais plus donc g taper une boulcle sur stdin  :pt1cable:

n°13027
JoeBlack12​15
Carpe Diem
Profil : Membre
Posté le 12-05-2005 à 17:17:06  profilanswer
 

:D


Aller à :
Ajouter une réponse