Bonsoir,

Pour un exercice, on me demande d'ecrire une base de donné simplifié en C. Je demande le nom, prenom et a partir de cela je dois générer un login composé des 7 premières lettres du nom (si possible ) et de la première lettre du prénom.

Jusque là rien de bien compliqué, mais voila lorsque j'appel ma foncton Create_Log avec un nom supérieur a 7 lettres, a la fin de ma fonction le prenom a disparu alors que je ne le modifie nullement.

Si quelqu'un pouvait me dire comment faire pour que le prenom reste, je lui en serais gré.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string.h>
#include <math.h>
 
//==Generation automatique du login
 
void Create_Log(char nom[], char prenom[], char login[])
  {
     int taille_Nom,i ;
 
    taille_Nom = strlen(nom) ;
    printf("la longueur du nom est : %d \n",taille_Nom);
    strncpy(login,nom,7) ; //copie le nombre de caractere voulut du 2 eme arg dans le premier
    //on aura de login[0] a login[6] les caracteres du nom
    printf("Login dans create log %s  \n",login) ; 
 
if (taille_Nom >= 7) //taille du nombe sup ou egal a 7
	{ 
	 login[7] = prenom[0];  //alors je n'ai qu'a completer la 7 eme par la premiere lettre du prenom
        login[8] = '\0' ; //marque la fin   
        //NOTE : tester sans mettre ce caractere pour voir que le login devient a ce moment la le nom+premiere lettre du prenom+prenom. De plus le prenom la ne disparait plus
        printf("Login dans create log %s  \n",login) ;}
  else  {
	login[taille_Nom] = prenom[0] ; //si c'est inferieur a 7, j'ai dans login tous les caracteres du nom, j'ajoute la premiere lettre du prenom 
	login[taille_Nom+1] = '\0' ;}  //je marque la fin
 
for(i=0;i<strlen(login);i++)
	{login[i] = tolower(login[i]);} ; //je met le tout en minuscule
   }
 
//======Fonction main
int main() {
 
char nom[32] ;
char prenom[32] ;
char login[8] ;
 
scanf("%s",nom);
scanf("%s",prenom);
 
Create_Log(nom,prenom,login) ;
 
printf("Votre login est : %s \n",login);
printf("Votre prenom est : %s \n",prenom);
 return 0;
}