IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Disparition de la valeur d'une variable apres un appel de F


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut 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 : 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;
    }

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut Re: Disparition de la valeur d'une variable apres un appel d
    Citation Envoyé par Drannor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 168
    Points : 140
    Points
    140
    Par défaut
    Oula Oo
    Merci bcp, j'etais persuadé que le nombre entre crochets donné l'indice maximum du tableau.

    Merci encore !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Mauvaise valeur d'une variable après un EcranVersFichier
    Par Xipotera dans le forum WinDev
    Réponses: 2
    Dernier message: 27/05/2014, 11h00
  2. [XL-2007] Userform: Mémoriser valeur d'une variable après exécution
    Par pasterlouis dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/06/2013, 14h55
  3. Recuperation de la valeur d'une variable après un sbmjob
    Par bouhlal_badre dans le forum AS/400
    Réponses: 7
    Dernier message: 06/06/2013, 13h26
  4. VBA, perte de valeur d'une variable aprés avoir activé une autre feuille
    Par mikeactuaire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2011, 07h13
  5. Réponses: 10
    Dernier message: 29/09/2009, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo