Chaine de caractére

Résolu
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
bonsoir:
svp je suis coincé dans une chose ke je trouve vraiment stupide..
chui entrain de faire un programme en c.
j'execute,j'entre mes valeurs,j'entre une valeur noté comme une chaine de caractére (ex:du bois neuf)
et kand j'affiche ,ca m'affiche po tt la chaine ke jé voulu,la premiére moitié réste dans ma variable mais la deuxiéme s'affecte a ma prochaine variable,mais kand je met un mot comme(neuf) ca marche bien puise kilé tt seul.
aider moi svp.
(si ma question n'est pa claire veulliez me le dire pour ke je vs envois mon code)
merci.
A voir également:

4 réponses

mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
forcement le scanf s'arrete lorsqu'il rencontre un espace faut que tu utilise fgets si tu veux stocker des chaine avec des espace
0
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
merci et c'est dans quelle librarie?
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437 > sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
la librairie standard stdio.h
regarde le prototype
http://www.linux-kheops.com/doc/man/manfr/man-ascii-0.9/man3/fgets.3.txt.html
0
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   > mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention  
 
ce ke tu m'a donné a rapport avec des pointeur ,moi je n'en utilise pas,tu vois?
jé remplacé scanf par fgets et ca a fouaré ,je crois ke stdio.h ne la reconé po
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
bon je vois que tu as pas bien compris comment s'utilise fgets poste ton code je vais te donné un exemple
0
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
#include<stdio.h>
#include<string.h>
#define etd 200
typedef struct dateNaissance DATE;
struct dateNaissance
{
int jour;
int mois;
int annee;
};
typedef struct lAdresse ADRESSE;
struct lAdresse
{
char maison[10];
char rue[10];
char quartier[40];
char ville[20];
char pays[20];

};


typedef struct etudiant E;
struct etudiant
{
char nom[15];
char prenom[15];
DATE date;
ADRESSE adresse;
};


main()
{
E tab[etd];
int i;
int n;
printf("donner le nombre des etudiants:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("nom:\n");
scanf("%s",&tab[i].nom);
printf("prenom:\n");
scanf("%s",&tab[i].prenom);
printf("jour naissance:\n");
scanf("%d",&tab[i].date.jour);
printf("mois:\n");
scanf("%d",&tab[i].date.mois);
printf("annee:\n");
scanf("%d",&tab[i].date.annee);
printf("l'adresse:\n");
printf("numero de la maison:\n");
scanf("%s",&tab[i].adresse.maison);
printf("la rue:\n");
scanf("%s",&tab[i].adresse.rue);
printf("le quartier:\n");
fgets("%s",&tab[i].adresse.quartier);
printf("la ville\n");
fgets("%s",&tab[i].adresse.ville);
printf("le pays\n");
fgets("%s",&tab[i].adresse.pays);

}
for(i=0;i<n;i++)
{
printf(" les information de %s\n",tab[i].nom);
printf("son nom:%s\n",tab[i].nom);
printf("son prenom:%s\n",tab[i].prenom);
printf("le jour de naissance:%d\n",tab[i].date.jour);
printf("le mois de naissance:%d\n",tab[i].date.mois);
printf("l'annee de naissance:%d\n",tab[i].date.annee);
printf("son domicile est:\n");
printf("n'%s,rue %s, %s, %s, %s\n",tab[i].adresse.maison,tab[i].adresse.rue,tab[i].adresse.quartier,tab[i].adresse.ville,tab[i].adresse.pays);
}
}
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
le fgets prend pas les meme parametre que le scanf c'est pour ça que t'as des erreurs
voici comment tu doit faire par exemple pour le premier
fgets(tab[i].adresse.quartier,40,stdin);
0
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
est ce ke tu a executé mon preogramme?
kand il arrive a "quartier",il la passe et me demande d'entrer la ville,voila mon nouveau code:
#include<stdio.h>
#include<string.h>
#define etd 200
typedef struct dateNaissance DATE;
struct dateNaissance
{
int jour;
int mois;
int annee;
};
typedef struct lAdresse ADRESSE;
struct lAdresse
{
char maison[10];
char rue[10];
char quartier[40];
char ville[20];
char pays[20];

};


typedef struct etudiant E;
struct etudiant
{
char nom[15];
char prenom[15];
DATE date;
ADRESSE adresse;
};


main()
{
E tab[etd];
int i;
int n;
printf("donner le nombre des etudiants:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("nom:\n");
scanf("%s",&tab[i].nom);
printf("prenom:\n");
scanf("%s",&tab[i].prenom);
printf("jour naissance:\n");
scanf("%d",&tab[i].date.jour);
printf("mois:\n");
scanf("%d",&tab[i].date.mois);
printf("annee:\n");
scanf("%d",&tab[i].date.annee);
printf("l'adresse:\n");
printf("numero de la maison:\n");
scanf("%s",&tab[i].adresse.maison);
printf("la rue:\n");
scanf("%s",&tab[i].adresse.rue);
printf("le quartier:\n");
fgets(tab[i].adresse.quartier,40,stdin);
printf("la ville\n");
fgets(tab[i].adresse.ville,20,stdin);
printf("le pays\n");
fgets(tab[i].adresse.pays,20,stdin);

}
for(i=0;i<n;i++)
{
printf(" les information de %s\n",tab[i].nom);
printf("son nom:%s\n",tab[i].nom);
printf("son prenom:%s\n",tab[i].prenom);
printf("le jour de naissance:%d\n",tab[i].date.jour);
printf("le mois de naissance:%d\n",tab[i].date.mois);
printf("l'annee de naissance:%d\n",tab[i].date.annee);
printf("son domicile est:\n");
printf("n'%s,rue %s, %s, %s, %s\n",tab[i].adresse.maison,tab[i].adresse.rue,tab[i].adresse.quartier,tab[i].adresse.ville,tab[i].adresse.pays);
}
}
0
mype Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   437
 
non j'ai pas testé il te faut vider le buffer
rajoute
fgetc(stdin);
avant
 printf("le quartier:\n");
0
sifane.a Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
merci "myp" le programme tourne a merveille :).
0