Problème en c
debutant
-
sfel Messages postés 1645 Statut Membre -
sfel Messages postés 1645 Statut Membre -
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);
}
}
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);
}
}
Configuration: Windows XP Firefox 2.0.0.11
9 réponses
-
bonjour,
et si tu utilisait strcat() ??
dans le cas
nom = "toto"
prenom = "marcel"
tu fais un char* matricule
tu initialise matricule à " " (strset par exemple)
ensuitestrcat(matricule, nom) strcat(matricule, prenom)
-
-
-
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. -
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) -
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...
-
Bonjour,
Ou avec sprintf
nom[3] = '\0'; prenom[3] = '\0'; sprintf( matricule, "%d%d%d%s%s", jour, mois, annee, nom, prenom );
M. -
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. -
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.