Problème en c
debutant
-
sfel Messages postés 1640 Date d'inscription Statut Membre Dernière intervention -
sfel Messages postés 1640 Date d'inscription Statut Membre Dernière intervention -
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);
}
}
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)
ensuite
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)
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.
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)
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...
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
M.
Ou avec sprintf
nom[3] = '\0'; prenom[3] = '\0'; sprintf( matricule, "%d%d%d%s%s", jour, mois, annee, nom, prenom );
M.