Chaine de caractére

Résolu
sifane.a Messages postés 16 Statut Membre -  
sifane.a Messages postés 16 Statut Membre -
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 2449 Statut Membre 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 Statut Membre
 
merci et c'est dans quelle librarie?
0
mype Messages postés 2449 Statut Membre 437 > sifane.a Messages postés 16 Statut Membre
 
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 Statut Membre > mype Messages postés 2449 Statut Membre
 
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 2449 Statut Membre 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 Statut Membre
 
#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 2449 Statut Membre 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 Statut Membre
 
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 2449 Statut Membre 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 Statut Membre
 
merci "myp" le programme tourne a merveille :).
0