Partage
  • Partager sur Facebook
  • Partager sur Twitter

Le retour du modulaire

et ses suppôts les fonctions

Sujet résolu
    19 janvier 2006 à 21:16:07

    Pour m'entraîner à la maîtrise de mon IDE et pour régler une fois pour toutes mes misères avec les déclarations, prototypes, headers, arguments, j'ai commencé un Mini-RPG comme celui de Ewidar (vous savez, avec les Nains, les lances, les ennemis balafrés...) MAIS je me chie à ce point-là:

    Entrez votre nom: Vlad
    Bonjour à vous, Vlad
    Parlez-moi de votre metier...
    Vous avez le choix entre:
    - Epeiste
    - Voleur
    Epeiste
    ERROR WINDOW une fenêtre d'erreur apparaît et ferme la console.

    Voici les 3 fichiers de mon projet:


    MAIN.C:

    #include <stdio.h>
    #include <stdlib.h>
    #include "gen_func.h"

    int main()
    {
            char nom[20], job[20];
            int tampon;
            printf("entrez votre nom: ");
            gets(nom);
            printf("\nBonjour a vous, %s", nom);
            printf("\nParlez-moi de votre metier...\n");
            tampon = choose_job();
            if(tampon == 1){
                strcpy(job, "Epeiste");
                }
            if(tampon == 2){
                strcpy(job, "Voleur");
                }
            printf("\nOk, vous etes donc un %s", job);
            return 0;
    }


    GEN_FUNC.C
    #include "gen_func.h"

    void affiche(char name[20]){
        puts(name);
    }

    int choose_job(){
        int choice = 0;
        char job;
        printf("Vous avez le choix entre:\n");
        printf("- Epeiste\n");
        printf("- Voleur\n");
        gets(job);
            if((strcmp(job, "Epeiste")) == 0){
                printf("Vous avez choisi la voie de l'epee\n");
                choice = 1;
            }
            else if((strcmp(job, "Voleur")) == 0){
                printf("Vous avez choisi la voie du malandrin\n");
                choice = 2;
            }
        return choice;
    }


    GEN_FUNC.H
    //fonctions generales (field, etc...)

    void affiche(char name[20]);

    int choose_job();

    En espérant que ce topic apporte des renseignements à d'autres en plus de moi et que j'ai été assez clair ^^
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      19 janvier 2006 à 21:27:16

      Petite erreur bête : dans GEN_FUNC.C tu fais un gets(job) alors que tu as déclaré job dans la fonction comme de type char, il faudrait mettre char job[20];

      Sinon petits commentaires : gets() est pas bien car il ne vérifie pas la taille de ce qu'il écrit, mieux vaut un fgets(chaine, taille, stdin); puis au lieu de demander le job en le tappant en entier, regarder la valeur, retourner un int puis re-regarder cette valeur, tu pourrais manipuler des pointeurs ou faire un menu qui dit tappez 1 pour... 2 pour... mais bon si tu ne connais pas les pointeurs.
      • Partager sur Facebook
      • Partager sur Twitter
        19 janvier 2006 à 21:30:09

        Quand on utilise une fonction moisie faut pas se demander après pourquoi ça nous retombe sur la tronche.
        Bannissez gets.

        char job;
        <snip>
        gets(job);

        ps : Tu devrais mieux indenter et aussi : Mets un espace entre le { et la parenthèse fermante, ce n'est pas une seule ponctuation hein...

        Et abandonne le style "PHP" de placement des accolades, c'est laid, simple conseil...

        ps 2 : grillé mais bon...

        ps 3 : Abandonne le franglais. Et aussi, note au passage que gen est l'abréviation de generate/generation en général.
        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2006 à 21:54:19

          Citation : rz0

          Quand on utilise une fonction moisie faut pas se demander après pourquoi ça nous retombe sur la tronche.
          Bannissez gets.

          char job;
          <snip>
          gets(job);

          ps : Tu devrais mieux indenter et aussi : Mets un espace entre le { et la parenthèse fermante, ce n'est pas une seule ponctuation hein...

          Et abandonne le style "PHP" de placement des accolades, c'est laid, simple conseil...

          ps 2 : grillé mais bon...

          ps 3 : Abandonne le franglais. Et aussi, note au passage que gen est l'abréviation de generate/generation en général.

          Bah, l'habitude ^^ en fait mon 'gen' signifie 'général' pis en français c'est pas la classe hein? Bon je vais faire ces modifications et en passant j'idente le code.

          EDIT: Merci Louisclem, c'etait juste que job n'avait pas été defini comem tableau ^^

          EDIT²: Vive gets().
          • Partager sur Facebook
          • Partager sur Twitter

          Le retour du modulaire

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown