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 :

Encore Pointeur


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut Encore Pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    char* RechercheMorseListe(char c,Liste l)
    {
    	Liste p = l;
     
    	while(p)
    	{
    		if (p->c==c) return p->morse;
    		p=p->suiv;
    	}
    	return "non"; // signifie que c pas dans liste
    }
    A l'appel
    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
     
    	/****Recherche Code**///
    	char *morse;
    	char morseL;
    	printf("Veuillez saisir la lettre pour rechercher le code ('0' pour finir): ");
    	scanf(" %c",morseL);
    	while (morseL!='0')
    	{
    		strcpy(morse,RechercheMorseListe(morseL,l));
    		if (strcmp(morse,"non")!=0) printf("\nLa lettre tapé n'est pas dans la liste\n \n");
    		else printf("\nLe mot est : %s\n\n",morse);
     
    		printf("Veuillez saisir la lettre pour rechercher le code ('0' pour finir): ");
    		scanf(" %c",morseL);
    	}
    [/quote]

  2. #2
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    Dsl le probleme est toujour le meme sur les ppointeurs.
    Je recherche l'erreur qui n'apparaite pas.

  3. #3
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 369
    Points : 40 164
    Points
    40 164
    Par défaut
    et tu as une question a poser ? c'est quoi le soucis ?

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Il ne faut pas utiliser

    Mais plutôt:

    ou un autre équivalent... (même si getchar n'est pas forcèment le meilleur choix ici, c'est déjà mieux que scanf...)


    De la page d'Emmanuel,
    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Ensuite,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    char *morse;
    ..........
          strcpy(morse,RechercheMorseListe(morseL,l));
    morse n'est pas défini, il faut une zone mémoire allouée pour strcpy.

    Jc

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    Lors de la compilation tous fonctionne mais quant j'execute j'obtien l'erreu "Segmentation fault"

    Je voit l'erreur avec les pointeur je fais des copies et des comparaisons et non pas de simpl affecctation

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    scanf("%c",morseL)
    et
    morseL=getchar()

    c'est identique car les deux me permettent de récuperer la lettre enfin je pense

    Concernant l'allocation je ferait un malloc avant la copie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    morse= malloc(strlen(RechercheMorseListe(morseL,l))+1);
    		strcpy(morse,RechercheMorseListe(morseL,l));

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    En faisant l'allocation ça ne fonctionne toujours pas

  8. #8
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par Naruto_kun
    Dsl le probleme est toujour le meme sur les ppointeurs.
    Je recherche l'erreur qui n'apparaite pas.
    Après mettre amusé à compléter le code pour obtenir quelque chose de "compilable", j'obtient des erreurs parfaitement visibles :

    main.c: In function `main':
    main.c:13: warning: format argument is not a pointer (arg 2)
    main.c:21: warning: format argument is not a pointer (arg 2)
    main.c:10: warning: 'morse' might be used uninitialized in this function
    main.c:11: warning: 'morseL' might be used uninitialized in this function
    Citation Envoyé par Naruto_kun
    scanf("%c",morseL)
    et
    morseL=getchar()

    c'est identique car les deux me permettent de récuperer la lettre enfin je pense
    Forcement si tu ne suis pas les conseilles que l'on te donne
    Saisie de données par un opérateur (stdin)

  9. #9
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Sauf si tu modifies ton code morse, pourquoi ne pas faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while (morseL!='0')
       {
         morse = RechercheMorseListe(morseL,l);
          if (morse==NULL) 
                 printf("\nLa lettre tapé n'est pas dans la liste\n \n");
          else 
                 printf("\nLe mot est : %s\n\n",morse);
     
          printf("Veuillez saisir la lettre pour rechercher le code ('0' pour finir): ");
          scanf(" %c",morseL);
       }
    En modifiant ta fonction à la fin avec un:

    Jc

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 43
    Points
    43
    Par défaut
    J'ai trouvé l'erreur ça fonctionne avec scanf

    voir le & a rajouter

  11. #11
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Exact, raison de plus pour oublier scanf...

Discussions similaires

  1. encore des pointeur pour un compteur d'élèment
    Par Warfdog dans le forum Débuter
    Réponses: 3
    Dernier message: 24/11/2009, 22h36
  2. Réponses: 5
    Dernier message: 26/10/2008, 14h05
  3. Encore une histoire de pointeur
    Par Supersami2000 dans le forum C
    Réponses: 5
    Dernier message: 11/07/2008, 13h42
  4. Problème de pointeur (encore un)
    Par Arry_C dans le forum C
    Réponses: 16
    Dernier message: 30/05/2006, 19h47
  5. pointeurs ... encore !
    Par jems dans le forum C
    Réponses: 17
    Dernier message: 28/03/2005, 03h49

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