#include #include #include const int ESTIMATION=15; /*nombre maximum estimé de caractères pour le prénom comme pour le nom*/ char * AlloueEtConcat(char *, char*); void main() { char * prenom, * nom; char * prenom_nom; prenom=(char *)malloc((ESTIMATION+1)*sizeof(char)); /*le +1 dans ESTIMATION+1 est nécessaire pour le caractère '\0'*/ printf("Donnez le prénom (au plus %d caractères) : ",ESTIMATION); fgets(prenom,ESTIMATION+1,stdin); if (prenom[strlen(prenom)-1]=='\n') prenom[strlen(prenom)-1]='\0'; fseek(stdin,0,2); printf("Donnez le nom (au plus %d caractères) : ",ESTIMATION); nom=(char *)malloc((ESTIMATION+1)*sizeof(char)); fgets(nom,ESTIMATION+1,stdin); if (nom[strlen(nom)-1]=='\n') nom[strlen(nom)-1]='\0'; prenom_nom=AlloueEtConcat(prenom, nom); puts(prenom_nom); free(prenom_nom); } char * AlloueEtConcat(char * s1, char * s2) { int longueur; char * s3; longueur=strlen(s1) + strlen(s2)+ 2; if (longueur>ESTIMATION) { s3=(char *)malloc(longueur*sizeof(char)); strcpy(s3,s1); strcat(s3," "); strcat(s3,s2); free(s1); free(s2); return s3; } else { strcat(s1," "); strcat(s1,s2); free(s2); return s1; } }