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 :

[débutant] Retourner un caractère d'une fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut [débutant] Retourner un caractère d'une fonction
    Salut tout le monde

    Voilà mon problème, je souhaiterais retourner un caractère d'une fonction.
    J'ai essayé avec des pointeurs mais je n'y arrive pas, je vais donc rester classique avec un simple return ^^
    Voilà mon code :
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    char caractere_saisi(caract); // Déclaration de la fonction
     
    int main(int argc, char *argv[]){
        char caract; 
     
        caractere_saisi(caract); // Appel de la fonction
        printf("caract : %c", caract); // Test de l'affichage
     
      system("PAUSE");	
      return 0;
    }
     
    char caractere_saisi(caract){ // Définition de la fonction
     
         printf("\n\n-- Donner un caractere :\n");
         fflush(stdin);
         scanf("%c", &caract);
    return caract;
    }
    Donc mon problème c'est qu'au test de l'affichage, caract n'affiche rien.
    Pourtant je ne vois pas comment faire autrement pour le return ?

    J'espère que quelqu'un pourra m'aider et merci de m'avoir lu jusqu'au bout

  2. #2
    Membre chevronné Avatar de icer
    Inscrit en
    Janvier 2006
    Messages
    332
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 332
    Par défaut
    Bonjour,

    De quel type est ton paramétre de ta fonction char caractere_saisi(caract) ?

  3. #3
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Corrige d'abord ceci :
    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
    Project   : Console application
    Compiler  : GNU GCC Compiler (called directly)
    Directory : F:\Temporaire\CodeBlocksProject\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:4: warning: parameter names (without types) in function declaration
    main.c:18: warning: function declaration isn't a prototype
    main.c: In function `caractere_saisi':
    main.c:18: warning: type of "caract" defaults to "int"
    main.c:22: warning: char format, different type arg (arg 2)
    main.c: At top level:
    main.c:6: warning: unused parameter 'argc'
    main.c:6: warning: unused parameter 'argv'
    main.c: In function `main':
    main.c:8: warning: 'caract' might be used uninitialized in this function
    Linking console executable: F:\Temporaire\CodeBlocksProject\console.exe
    Process terminated with status 0 (0 minutes, 2 seconds)
    0 errors, 7 warnings

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut
    Merci de vos réponses rapides

    Oupss honte à moi pour la déclaration de la fonction.
    Le type est un char.

    Ça devient donc :
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    char caractere_saisi(char caract); // Déclaration de la fonction
     
    int main(int argc, char *argv[]){
        char caract; 
     
        caractere_saisi(caract); // Appel de la fonction
        printf("caract : %c", caract); // Test de l'affichage
     
      system("PAUSE");	
      return 0;
    }
     
    char caractere_saisi(char caract){ // Définition de la fonction
     
         printf("\n\n-- Donner un caractere :\n");
         fflush(stdin);
         scanf("%c", &caract);
    return caract;
    }
    Mais ça n'affiche toujours pas le caractère

    Crocodilex, tu as souligné ces erreurs :
    main.c:6: warning: unused parameter 'argc'
    main.c:6: warning: unused parameter 'argv'
    Mais c'est Dev-C++ qui ajoute automatiquement ces valeurs à la création d'un nouveau projet.
    Je ne comprends pas ce qu'il ne va pas là ?

    Enfin la dernière erreur :
    main.c:8: warning: 'caract' might be used uninitialized in this function
    Je savais qu'il fallait initialiser les variables pouvant contenir des chiffres mais pas les caractères.
    Il faut l'initialiser via le caractère NULL ?

  5. #5
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Les 2 signatures valides pour la fonction "main" sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int main(int argc, char *argv[]);
     
    et 
     
    int main(void);
    Vu que tu n'as pas de paramètres d'entrée dans ton programme, tu peux utiliser la seconde version.

    Sinon pour ton problème, va falloir revoir les passages de paramètres ainsi que les retours de fonction. Je signale que ce sont quand même les bases élémentaires de la programmation en langage C.

    Voici une version qui fonctionne :
    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
    #include <stdio.h>
    #include <stdlib.h>
     
    char caractere_saisi(void); // Déclaration de la fonction
     
    int main(void)
    {
        char caract;
     
        caract = caractere_saisi(); // Appel de la fonction
        printf("caract : %c", caract); // Test de l'affichage
        return 0;
    }
     
    char caractere_saisi(void)
    {
        char caract;
        printf("\n\n-- Donner un caractere :\n");
        scanf("%c", &caract);
        return caract;
    }

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 3
    Par défaut
    Merci beaucoup !!

    Oui, il faut vraiment que je revois les fonctions.
    En tout cas tu m'as débloqué sur le mauvais appel de la fonction que je faisais tout le temps avec l'utilisation du return.
    Et en relisant encore les cours sur internet, je pense que ça va mieux passer.

    En tout cas encore merci

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

Discussions similaires

  1. Retourné resultat curseur dans une fonction
    Par L8O8L dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/06/2007, 22h09
  2. retourner un count() par une fonction PL/pgSQL ?
    Par ctobini dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 22/05/2007, 14h12
  3. retourner un tableau d'une fonction
    Par nixonne dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2006, 11h02
  4. Retourner 2 tableaux d'une fonction...
    Par TigreRouge dans le forum Langage
    Réponses: 4
    Dernier message: 04/04/2006, 14h32
  5. Retourner un tableau depuis une fonction
    Par obalais dans le forum C++
    Réponses: 2
    Dernier message: 20/10/2005, 16h49

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