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 windows lors de l'exécution


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut erreur windows lors de l'exécution
    Bonjour

    j'ai écrit ce bout de code pour rentrer diverses informations(prenom age ect..
    grâce à une structure)
    Je rentre mon prenom et une fois que je rentre l'âge une erreur de windows
    comme quoi il a rencontré une erreur avec le programme je ne vois pas d'ou ca vien si quelqu'un popuvait m'aider ?merci

    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
     
    #include <stdio.h>
     
    struct qui
    {
           char prenom[10];
           unsigned int age;
           char maitre[10];
           double compte;
     
           };
     
    //procedure
     
    void saisie(struct qui *ptr_premier){
     
         printf("Prenom:");
         scanf("%s", ptr_premier->prenom);
         printf("Age:");
         scanf("%u", ptr_premier->age);
         printf("Fonction:");
         scanf("%s", ptr_premier->maitre);
         printf("Solde de ton compte:");
         scanf("%lf", ptr_premier->compte);
     
         }
     
    int main()
    {
     struct qui premier;
     saisie (&premier);
     printf("Ton prenom est: ""%u",premier.prenom);   
     return 0;
    }

  2. #2
    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
    scanf("%s"), tu oublies.
    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Par contre, utilise %s pour ton printf() à la fin du main().
    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.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut scanf() pourquoi pas ?
    avec scanf ca devrait marcher pourtant

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sandytarit
    avec scanf ca devrait marcher pourtant
    scanf() c'est le démon :

    http://xrenault.developpez.com/tutoriels/c/scanf/

  5. #5
    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
    Mais si tu entres plus de neuf lettres, c'est le plantage assuré.
    De plus, rajoute un fflush(stdout) après tes printf(), puisqu'ils ne se terminent pas par \n...

    Edit: Emmanuel
    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.

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Médinoc
    Mais si tu entres plus de neuf lettres, c'est le plantage assuré.
    De plus, rajoute un fflush(stdout) après tes printf(), puisqu'ils ne se terminent pas par \n...
    http://emmanuel-delahaye.developpez....#fflush_stdout

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut en théorie normallement
    Mais si scanf c pas terrible si je fais attention au nombre de lettre
    que je rentre ca devrait marcher et là ca marche pas

    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
    #include <stdio.h>
     
     
    struct qui
    {
           char prenom[10];
           unsigned int age;
           char maitre[10];
           double compte;
     
           };
     
    //procedure
     
    void saisie(struct qui *ptr_premier){
     
         printf("Prenom:");
         fflush(stdout);
         scanf("%s", ptr_premier->prenom);
         printf("Age:");
         fflush(stdout);
         scanf("%u", ptr_premier->age);
         printf("Fonction:");
         fflush(stdout);
         scanf("%s", ptr_premier->maitre);
         printf("Solde de ton compte:");
         fflush(stdout);
         scanf("%lf", ptr_premier->compte);
     
         }
     
    int main()
    {
     struct qui premier;
     saisie (&premier);
     printf("Ton prenom est: ""%s",premier.prenom);   
     return 0;

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sandytarit
    Mais si scanf c pas terrible si je fais attention au nombre de lettre
    que je rentre ca devrait marcher et là ca marche pas
    Le démon, je te dis :
    Project : Forums
    Compiler : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums2\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c: In function `saisie':
    main.c:22: warning: format argument is not a pointer (arg 2)
    main.c:28: warning: format argument is not a pointer (arg 2)
    Linking console executable: C:\dev\forums2\console.exe
    Process terminated with status 0 (0 minutes, 3 seconds)
    0 errors, 2 warnings
    http://emmanuel-delahaye.developpez....tm#cfg_compilo

    Autre diablerie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Prenom:aaa
    Age:bbb
    Fonction:Solde de ton compte:

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut je conprend pas
    quand dans l'age on rentre un chiffre par exemple 10,le programme plante alors que c'est ce que je lui demande(int). et si on met une chaine de caractère bbb
    le programme s'éxécute "normallement"
    Y a un truc qui me dépasse

  10. #10
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sandytarit
    quand dans l'age on rentre un chiffre par exemple 10,le programme plante alors que c'est ce que je lui demande(int). et si on met une chaine de caractère bbb
    le programme s'éxécute "normallement"
    Y a un truc qui me dépasse
    Je t'ai pourtant montré les messages d'avertissement. Tu ne les comprends pas ?

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut Merci j'avias pas vu
    Merci j'avais pas vu les warning en gros au lieu de ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s", ptr_premier->maitre);
    il voulait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s", &ptr_premier->maitre);

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut Exécution en séquence
    Normalement une fois la procédure "saisie" exécutée
    le programme ne doit pas se fermer
    il doit continuer ce qu'il y a dans le main
    et donc m'afficher le prénom ?

  13. #13
    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
    Normalement, ce serait bien scanf("%s", ptr_premier->maitre); qu'il faudrait mettre.
    Ou bien, plus explicitement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s", &ptr_premier->maitre[0]);
    Mais là encore, l'emploi de fgets() est largement préférable, et tu y risques moins de surprises.


    Edit: Ben dis-donc, moi-même je ne l'avais pas vu...
    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.

  14. #14
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sandytarit
    Merci j'avais pas vu les warning en gros au lieu de ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s", ptr_premier->maitre);
    il voulait ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scanf("%s", &ptr_premier->maitre);
    Ben non. Tu ne sais pas compter les lignes ?

    La programmation, ça ne se fait pas 'en gros'. C'est précis et rigoureux.

    Il faut cesser de programmer au hasard, ouvrir un livre de C (ou consulter les liens donnés), et apprendre à utiliser scanf() correctement. "%d" attend l'adresse d'un int, par exemple. C'est un scoop ?

    Si scanf() est trop dur pour toi (je te rassure, pour moi aussi), on t'a proposé des alternatives.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 296
    Par défaut Merci c résolu
    Bin merci c que je suis un peu étourdi
    et pis le scanf me paraissait plus simple à utiliser

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

Discussions similaires

  1. Erreur bizarre lors de l'exécution d'une requête
    Par Mr. NoReaction dans le forum JDBC
    Réponses: 1
    Dernier message: 05/11/2008, 21h22
  2. Erreur SQL0104N lors de l'exécution d'une stored proc
    Par bladerunners dans le forum DB2
    Réponses: 1
    Dernier message: 22/03/2007, 19h50
  3. Erreur windows lors du lancement de mon appli delphi
    Par socooooool dans le forum Delphi
    Réponses: 10
    Dernier message: 17/07/2006, 16h34
  4. Message d'erreur Windows lors de l'exécution de l'appli D6-
    Par kolac dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/12/2004, 17h55
  5. Erreur windows lors du malloc
    Par Elessar dans le forum C
    Réponses: 5
    Dernier message: 16/12/2003, 08h53

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