Problème débutant

Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   -  
Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, j'ai commencé à apprendre le C depuis 3 jours, et j'ai un petit problème sur un code qui normalement doit relever des informations sur plusieurs personnes puis de les afficher :
main.c

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

int main(int argc, char *argv[])
{
    Personne joueur[5]; // On appelle la structure Personne
    long nbJoueur = 5, s = 0; // On définit les variables
    for(s = 0; s < nbJoueur; s++) // On lance la première boucle pour récolter des infos sur les joueurs
    {
        printf("\n\n***Joueur %ld***\n\n\n", s);
        printf("Quel est votre nom ? ");
        scanf("%s", joueur[s].nom);
        printf("Quel est votre prenom ? ");
        scanf("%s", joueur[s].prenom);
        printf("Quel est votre age ? ");
        scanf("%ld", joueur[s].age);
        printf("Sexe : \n\n1. Masculin\n2. Feminin\n\n");
        scanf("%ld", joueur[s].sexe);
    }

    for(s = 0; s < nbJoueur; s++) // On lance la deuxième boucle pour afficher les informations récoltées
    {
        printf("***Infos joueur n°%ld", s);
        printf("Nom : %s", joueur[s].nom);
        printf("Prenom : %s", joueur[s].prenom);
        printf("Age : %ld", joueur[s].age);
        printf("Sexe : %s", choixSexe(joueur[s].sexe));
    }
    system("PAUSE");
    return 0; // On arrête proprement
}

char choixSexe(int sexe) // Fonction pour transformer le dernier scanf de la première boucle
{
    if(sexe = 1)
    {
        return "homme";
    }
    else
    {
        return "femme";
    }
}



main.h

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

typedef struct Personne Personne;
struct Personne
{
    char nom[100];
    char prenom[100];
    long age;
    int sexe;
};

char choixSexe(int sexe);



Et ça bug quand on demande l'âge à la première boucle (parfois ça plantait au deuxième passage de la première boucle).

Merci d'avance pour votre aide!
Configuration: Windows XP
Firefox 3.0.3
Code::Blocks 8.0

10 réponses

  1. Nobody
     
    main.c :

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

    int main(int argc, char *argv[])
    {
    Personne joueur[5]; // On appelle la structure Personne
    long nbJoueur = 5, s = 0; // On définit les variables
    for(s = 0; s < nbJoueur; s++) // On lance la première boucle pour récolter des infos sur les joueurs
    {
    printf("\n\n***Joueur %ld***\n\n\n", s);
    printf("Quel est votre nom ? ");
    scanf("%s", joueur[s].nom);
    printf("Quel est votre prenom ? ");
    scanf("%s", joueur[s].prenom);
    printf("Quel est votre age ? ");
    scanf("%ld", &(joueur[s].age));
    printf("Sexe : \n\n1. Masculin\n2. Feminin\n\n");
    scanf("%i", &(joueur[s].sexe));
    }

    for(s = 0; s < nbJoueur; s++) // On lance la deuxième boucle pour afficher les informations récoltées
    {
    printf("***Infos joueur n°%ld\n", s);
    printf("Nom : %s\n", joueur[s].nom);
    printf("Prenom : %s\n", joueur[s].prenom);
    printf("Age : %ld\n", joueur[s].age);
    printf("Sexe : %s\n", choixSexe(joueur[s].sexe));
    }
    system("PAUSE");
    return 0; // On arrête proprement
    }

    char* choixSexe(int sexe) // Fonction pour transformer le dernier scanf de la première boucle
    {
    if(sexe == 1)
    {
    return "homme";
    }
    else
    {
    return "femme";
    }
    }

    main.h :
    #include <stdio.h>
    #include <stdlib.h>

    typedef struct Personne Personne;
    struct Personne
    {
    char nom[100];
    char prenom[100];
    long age;
    int sexe;
    };

    char *choixSexe(int sexe);
    1
  2. Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   22
     
    Ca compile et lance la console normalement, puis ça crash d'un coup (avec "console.exe a rencontré un problème et doit fermer etc.).
    Le debugger m'affiche ça quand je le lance :
    #0 77C14995	wscanf() (C:\WINDOWS\system32\msvcrt.dll:??)
    #1 00000000	??() (??:??)
    
    0
  3. Utilisateur anonyme
     
    Il te manque surement cette DLL !
    Télécharge la et place la dans System32
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   22
     
    Malheuresement non... J'ai déjà cette DLL et même en la re-téléchargeant ça ne change rien...
    0
  6. Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   22
     
    Petit up!
    0
  7. marwenha Messages postés 159 Statut Membre 12
     
    bonjour,
    je pense que
    "include "main.h"
    est auxiliaire vous devez le supprimer
    0
  8. Nobody
     
    Je sais que je suis sous Linux mais bon du c, c'est du c ...

    1)lors de la compilation :
    main.c: In function 'main':
    main.c:17: warning: format '%ld' expects type 'long int *', but argument 2 has type 'long int'
    main.c:19: warning: format '%ld' expects type 'long int *', but argument 2 has type 'int'
    main.c:28: warning: format '%s' expects type 'char *', but argument 2 has type 'int'
    main.c: In function 'choixSexe':
    main.c:38: warning: return makes integer from pointer without a cast
    main.c:42: warning: return makes integer from pointer without a cast

    2)comparaison en C : ==
    = : assignement
    0
  9. Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   22
     
    @marwenha : même en incluant le contenu de main.h dans main.c, j'obtiens le même crash.
    @Nobody : j'ai pas tout compris là... Le 1) c'est les erreurs trouvées durant la compile et le 2) c'est ce qu'il faut changer dans le code??

    Sinon, merci à vous deux de m'aider ;)
    0
  10. Isendil Messages postés 815 Date d'inscription   Statut Membre Dernière intervention   22
     
    Merci beaucoup, apparement ça buggait au niveau des scanf pour l'age et le sexe!
    Merci et @+
    0