Chaine de caractére

Résolu/Fermé
sifane.a Messages postés 16 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008 - 11 déc. 2008 à 19:43
sifane.a Messages postés 16 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008 - 11 déc. 2008 à 21:26
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
11 déc. 2008 à 19:48
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 jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 19:54
merci et c'est dans quelle librarie?
0
mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436 > sifane.a Messages postés 16 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 20:01
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 jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008 > mype Messages postés 2435 Date d'inscription jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010
11 déc. 2008 à 20:12
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
11 déc. 2008 à 20:14
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 jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 20:24
#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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
11 déc. 2008 à 20:28
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 jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 21:03
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 jeudi 1 novembre 2007 Statut Membre Dernière intervention 16 août 2010 436
11 déc. 2008 à 21:19
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 jeudi 11 décembre 2008 Statut Membre Dernière intervention 12 décembre 2008
11 déc. 2008 à 21:26
merci "myp" le programme tourne a merveille :).
0