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 :

erreur avec des fonctions.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Par défaut erreur avec des fonctions.
    Bonjour à tous!

    Voila je vous explique rapidement mon petit problème:

    Pour mon travail de fin d'étude je réalise un petit programme en C, pour l'instant juste en mode console. Je suis débutante en C, il s'agit la de mon premier programme. J'ai apprit le C grâce aux cours et tutoriels C et aussi la FAQ C. Il s'agit d'un petit répertoire qui doit permettre de rajouter et de faire une recherche de contact.

    Voici pour l'instant mes pages:

    Main
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
      printf("*** Bonjour, Que souhaitez vous faire? ***\n\n");
      printf("*** Tapez 1 pour entrer un nouveau contact. *** \n*** Tapez 2 pour rechercher un contact deja existant. ***\n \n");
     
      long choix = 0;
      scanf("%ld", &choix);
     
      while ( choix != 1 && choix != 2)
      { 
            printf("*** Le nombre que vous avez rentre n'est pas valide. ***\n*** Veuillez faire un autre choix. ***\n\n");
            scanf("%ld", &choix);
      }
     
      if (choix == 1)
         {
                printf("*** Vous avez choisi de rentrer un nouveau contact. ***\n\n");
                entrerContact(choix);
         }
      else if (choix == 2)
         {
                printf("*** Vous avez choisi de rechercher un contact deja existant. ***\n\n");
                rechercherContact(choix);
         }
     
     
      system("PAUSE");	
      return 0;
    }

    ajouterContact.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void entrerContact(char choix);
    
    void nom(char nomEntrer);

    ajouterContact.c

    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
    49
    50
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "ajouterContact.h"
    
    void entrerContact(char choix)
    {
         
         
         char nomEntrer[50];
         printf("***Quel est le nom de la personne que vous souhaitez ajouter?*** \n\n");
         scanf("%s", nomEntrer);
         nom(nomEntrer);
          
         
    
    }
    
    void nom(long nomEntrer)
    {
        
    
    
         printf("***Vous avez inserer: %s, souhaitez vous corriger? (1 pour oui, 2 pour non.)***\n\n", nomEntrer);
         long choix = 0;
        
         scanf("%ld", &choix);
    
    while(choix != 1 && choix != 2)
         {
                printf("***Votre choix n'est pas valide, veuillez refaire un choix.\n\n***");
                scanf("ld", &choix);
         }
         
         
    if(choix == 1) 
    {
             printf("***vous avez choisi de rentrer un nouveau nom de contact.***\n\n");
             scanf("%s",nomEntrer); 
             printf("Vous avez ecrit: %s.\n \n", nomEntrer);
    }
    else if (choix == 2)
    {
         printf("***Vous avez choisi de laisser ce nom de contact la.***\n\n");  
    
    } 
    
    
    
    }
    pour l'instant ce sont les seules pages ayant du code.
    Mais lorsque je compile il me donne ces différentes erreurs dans ajouterContact.c

    ligne 13:[Warning] passing arg 1 of `nom' makes integer from pointer without a cast (ajouterContact.c)
    ligne 20 conflicting types for 'nom' (ajouterContact.c)
    ligne 5 previous declaration of 'nom' was here (ajouterContact.h)
    ligne 20 conflicting types for 'nom' (ajouterContact.c)
    ligne 5 previous declaration of 'nom' was here (ajouterContact.h)
    J ai mit en rouge les lignes en question

    merci a tous d'avoir prit le temps ne serait ce de lire.
    Bonne journée a tous !

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void nom(char nomEntrer);
    void entrerContact(char choix)
    {
    ....
         char nomEntrer[50];
    ...
         nom(nomEntrer);
    ....
    void nom(long nomEntrer)
    {....
    - La déclaration de nom n'est pas conforme au prototype (type du paramètre différent : char ou long ?)
    - L'appel de nom a pour argument le nom d'un tableau de char donc cet argument est du type char * alors que la fonction nom attend un char.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Par défaut
    j'ai du oublié d'en changer un merci ^^ je test de suite^^ merci beaucoup !

    Par contre, j'ai voulu rajouter le prénom de la même manière dans le programme et j'ai de nouvelles erreurs

    je vous remet le code:

    donc voici ajoutContact.c
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "ajouterContact.h"
    
    void entrerContact(char choix)
    {
         
         
         char nomEntrer[50];
         printf("***Quel est le nom de la personne que vous souhaitez ajouter?*** \n\n");
         scanf("%s", nomEntrer);
         nom(nomEntrer);
          
         char prenomEntrer[50];
         printf("quel est le prenom a entrer?");
         scanf("%s", prenomEntrer);  
         prenom(prenomEntrer); 
    
    
    
    }
    
    void nom(char nomEntrer)
    {
        
    
    
         printf("***Vous avez inserer: %s, souhaitez vous corriger? (1 pour oui, 2 pour non.)***\n\n", nomEntrer);
         long choix = 0;
        
         scanf("%ld", &choix);
    
    while(choix != 1 && choix != 2)
         {
                printf("***Votre choix n'est pas valide, veuillez refaire un choix.\n\n***");
                scanf("ld", &choix);
         }
         
         
    if(choix == 1) 
    {
             printf("***vous avez choisi de rentrer un nouveau nom de contact.***\n\n");
             scanf("%s",nomEntrer); // ajouter le MySQL pour integrer le nom du contact dans la BDD.
             printf("Vous avez ecrit: %s.\n \n", nomEntrer);
    }
    else if (choix == 2)
    {
         printf("***Vous avez choisi de laisser ce nom de contact la.***\n\n");  
    //Inserer le nom dans le MySQL.
    } 
    
    
    void prenom(char prenomEntrer)
    {
         printf("Vous avez entrer le prenom: %s", prenomEntrer);
         
    }
    
    
    
    }
    et ajoutContact.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Le header qui va gérer les fonctions qui vont permettre de rentrer un nouveau contact.
     
    void entrerContact(char choix);
     
    void nom(char nomEntrer);
     
    void prenom(char prenomEntrer);
    et maintenant les erreurs:
    ligne13 [Warning] passing arg 1 of `nom' makes integer from pointer without a cast
    ligne 18 [Warning] passing arg 1 of `prenom' makes integer from pointer without a cast
    [Linker error] undefined reference to `prenom'
    ligne 18 C ld returned 1 exit status

    Je vous aient mit en bleu les lignes d'erreur

    je suis vraiment désolée de vous embeter avec ça

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Un char n'est pas la même chose qu'un tableau de char.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2008
    Messages : 7
    Par défaut
    Saurais tu m'expliquer la difference? (oui oui je débute...)

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    C'est pourtant simple: Il y en a un qui contient plusieurs char.

    Et aussi, on ne peut pas transmettre directement un tableau par valeur. Un tableau en paramètre formel de fonction, c'est un pointeur déguisé vers le premier élément du tableau
    (car tout tableau est implicitement convertible en pointeur vers son premier élément. En clair, on peut faire ceci:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int tab[10];
    int *p = tab;
    )

    En fait, ta fonction nom devrait typiquement prendre un pointeur sur char en paramètre, ainsi que la taille du tableau (puisqu'elle permet d'en modifier le contenu).
    Et ta fonction prénom, qui fait juste un affichage, peut prendre un const char * en paramètre, comme la fonction puts() qui elle aussi ne fait que de l'affichage.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. erreur LNK2019 avec des fonctions communes.
    Par FamiDoo dans le forum Visual C++
    Réponses: 9
    Dernier message: 31/07/2006, 10h32
  2. [Mail] erreur avec utilisation fonction mail
    Par taka10 dans le forum Langage
    Réponses: 7
    Dernier message: 12/07/2006, 16h19
  3. Compilation avec des fonctions virtuel pure
    Par vanitom dans le forum C++
    Réponses: 4
    Dernier message: 16/12/2005, 14h37
  4. erreur avec la fonction putfile() sur connexion FTP
    Par stefane1981 dans le forum C++
    Réponses: 2
    Dernier message: 23/09/2005, 09h13
  5. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45

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