Disparition de la valeur d'une variable apres un appel de F
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:
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;
} |
Re: Disparition de la valeur d'une variable apres un appel d
Citation:
Envoyé par Drannor
Code:
1 2
|
login[8] = '\0' ; //marque la fin |
Tu mets le caractere \0 dans la "9eme case du tableau login" or celui n'en a que 8 (char login[8] correspond a un tableau de 8 char numerote de 0 à 7). Il te faut un tableau de 9 char pour faire ce que tu souhaites.