Problème en c

Fermé
debutant - 20 janv. 2008 à 10:51
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 - 17 mars 2008 à 19:07
bonjour
voici mon programme qui demande nom, prenom, sexe et date et doit faire ensuite 140186JOBNAT

si une fille né le 14 janvier 1984; JOBE Natalie

j'ai un problème pour former "140186JOBNAT"

on pourrait m'aider ?
merci


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NOM 25
#define SEXE 2




int nom ( char *nom)
int prenom(char *prenom )
int sexe(char *sexe )
int jour(int *jourN)
int mois( char *moisN)
int annee ( int *anneeN);

//void matricule (char *nom,char *prenom,char *sexe)



void main (void)

{
char nom[NOM],char prenom[NOM],char sexe [SEXE];
int jourN,anneeN;
char moisN;


//matricule1= matricule();
}



int dnom (char *pnom)
{
int nbelem;
fflush(stdin);

for( nbelem=0;nbelem < (NOM-1) && *nom != '\n';nbelem++,nom++)
{


do
{
printf(" entrez votre nom de famille\n");
*nom=getchar();
touppper(*nom);

}while((*nom<'A') || (*nom > 'Z') && (*nom =! '-'));

(*nom-1)='\0';
}
return nom

}

int prenom (char *prenom)

{
int nbelem;
fflush(stdin);
for( nbelem=0;nbelem < (NOM-1) && *prenom != '\n';nbelem++,prenom++)
{


do
{
printf(" entrez votre nom de prenom\n");
*prenom=getchar();
touppper(*prenom);

}while((*prenom<'A') || (*prenom> 'Z') && (*prenom != '-'));

(*prenom - 1)='\0';
}

return pprenom

}

int demande_sexe(char *sexe)
{
int nbelem;
fflush (stdin);
for(nbelem=0;nbelem<(NOM-1) && *sexe !='n';nbelem++,sexe++)
{
do
{
printf("un homme ou une femme : tapez M/F\n");
*psexe=getchar();
toupper(*sexe);

}while ((*sexe != 'M') || (*sexe !='F'));

return sexe



}

int jour(int *jourN)

{
int c=1;

while(c==1)
{

do
{
printf("Entrez le jour de votre naissance: ");
scanf("%d",&jourN);

}while(jourN<1 || jourN>31);
}
}

int mois(char *moisN)
{

int c=1,mois[12];




while(c==1)
{
do
{
printf("Entrez le mois de votre naissance: ");
scanf("%c",&moisN);

}while((moisN<1) || (moisN>12));


}

}


int annee (int anneeN)

{

int c=1;

while (c==1)
{
do
{
printf("Entrez l'annee de votre naissance: ");
scanf("%d",&anneeN);

}while(anneeN>1900);
}


}





//void matricule(char *nom,char *prenom,char *sexe, int *jourN,int *anneeN, char *moisN)
{

int n;




char *strncpy (char *copie, char *nom,int 4);


}



}

9 réponses

sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 janv. 2008 à 11:00
bonjour,

et si tu utilisait strcat() ??

dans le cas
nom = "toto"
prenom = "marcel"

tu fais un char* matricule

tu initialise matricule à " " (strset par exemple)

ensuite
strcat(matricule, nom)
strcat(matricule, prenom)

0
ah oui je n'y avais pas pensé c'est plus facile, je vais essayer de faire ça merci!!
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 janv. 2008 à 14:25
de rien
0
extra.Nader Messages postés 9 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 8 janvier 2011
20 janv. 2008 à 14:51
Mais c'est tres facile!!
Mr. sfel vous à donner la fonction 'strcat' (String cat). cette dernière vous facilte la décomposition des chaines.
pour les entiers (Mois et année) vous pouver faire le Casting en String (exmp var=""+jour) puis vous pouvez utiliser la fonction
strcat("","");
pour resoudre le probleme le Mois vous pouvez lire les 2 premier caractères et vous pouvez uiliser aussi un tableau String de taille 12
t[0]="JANVIER";

remarque: c'est mieux de refaire tous (votre code). cette tache et mieux facile que tu le crois.
dans votre example je crois qu'il est n'est pas necessaire d'étuliser des fonctions.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
et la fonction "strncat" , on peut l'utiliser si on veut prendre qu'une partie, non?

char *strncat ( char *c1, char *c2, size)
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 janv. 2008 à 17:38
oui

et Nader, qui te dis que c'est Mr sfel ??
je suis d'origine brésilienne, ainsi, l'on écrit Mr-Mme sfel ^^


et sinon c'es tbien d'utiliser des fonctions pour éclaircir ton code, mais trop de fonction tue les fonctions...
0
Mahmah Messages postés 496 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 22 juin 2010 125
20 janv. 2008 à 17:47
Bonjour,

Ou avec sprintf

nom[3] = '\0';
prenom[3] = '\0';

sprintf( matricule, "%d%d%d%s%s", jour, mois, annee, nom, prenom );


M.
0
extra.Nader Messages postés 9 Date d'inscription dimanche 20 janvier 2008 Statut Membre Dernière intervention 8 janvier 2011
17 mars 2008 à 09:38
bonjour ? Sfel
j'ai pas compris ton message,
d'aprés les intervention dans ce forum, je te trouve que tu aime language c.
et tu ne veux pas q tu trouve quelq'un meiu q toi.
Qcq tu fais dans ta vie?
bon courage.
0
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
17 mars 2008 à 19:07
salut, je t'avouerais que moi non plus je n'ai pas compris ton message, il y a des mots en trop dans tes phrases. ^^

Et moi, je disait juste que j'étais Mme et non pas Mr.
0