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 :

Problème avec les structures et gets!


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 35
    Par défaut Problème avec les structures et gets!
    salut tous le monde

    svp j ai un probleme je veus lire une chaie de caractere ds une structure mais ca ne marche pas

    voici 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
     
    #include <stdio.h>
     
    struct fiche{
     
        char nom[11];
        char prenom[11];
        int age;
        float note;
    };
     
     
    void main()
    { struct fiche anis;
     
     
    printf("donner votre nom :   ");
    scanf("%s",anis.nom);
     
    printf("\ndonner votre prenom :   ");
    gets(anis.prenom);/* c'est la le prbleme  /*
     
     
    printf("\ndonner votre age :  ");
    scanf("%i",&anis.age);
     
     
    printf("\ndonner votre note  :  ");
    scanf("%f",&anis.note);
     
     
    /* Affichage de la structure  */
     
    printf("\n\n\asalut %s %s vous avez comme age %i et comme note %.3f\n\n\n",anis.nom,anis.prenom,anis.age,anis.note);
    }

    et merci d'avance

    ah une autre chose qui peut m'affrir un cour sur les structure surtous ( langage algorithmique);

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Pourquoi utiliser un coup un scanf puis un autre un gets ?! Déjà tu as mal réglé ton compilateur car gets est une fonction dangereuse et ton compilo aurait dû te le dire !

    Il faut utiliser fgets à la place, tu peux aussi d'ailleurs remplacer tes scanf par cette même fonction !

    Ce que tu as également omis de faire, c'est de vider le buffer clavier (stdin) après chaque saisie !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre expérimenté

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 404
    Par défaut
    comme le dit Frank.H il manque [CENSURE]
    (cf la suite)
    apres ca marche sans autre modification mais le code sera ammené a planter si le nom(ou le prenom) fait plus de 10 lettres .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    printf("donner votre nom :   ");
     
    //limite l'acquisition a 10 lettres (la derniere doit etre \0)
    scanf("%10s",anis.nom);
    fflush(stdin);
     
    printf("\ndonner votre prenom :   ");
    //gets(anis.prenom);
    fgets(anis.prenom,11,stdin);
    dans le cas que tu presente, le plus simple pour saisir une chaine est fgets:
    ca permet d'eviter les debordements et en plus c'est une fonction rapide et simple. (gets c'est a oublier)

    a mon avis l'utilisation de scanf n'est pas tres judicieuse: c'est une fonction destiné a faire des saisies formaté (reconaitre des chiffres, du code hexadecimal,...) ca en fait une fonction particulierement lourde, et ici inadapté.

    En effet, le "%s" indique a scanf de prendre le premier mot saisi. Si le nom de l'utilisateur est "du schonk" le programme ne memorisera que le "du"

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par forthx
    comme le dit Frank.H il manque un fflush(stdin);
    Frank.H s'est bien gardé de dire fflush(stdin) car cette instruction peut provoquer n'importe quoi, le fflush n'est défini que sur les flux sortant, stdout par exemple, pas les flux entrant.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Oui faut pas dire ce que j'ai pas dit, pour vider le buffer clavier il faut utiliser une autre méthode: http://c.developpez.com/faq/c/?page=...buffer_clavier
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    "L'imagination est plus importante que le savoir." A. Einstein
    Malheureusement, beaucoup s'imaginent savoir
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre expérimenté

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    Juillet 2002
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2002
    Messages : 404
    Par défaut


    désolé! je vous pris d'acepter mes excuses et de ne plus ecouter mes stupides conseils!

    arg! mon dieu tout mes programmes sont a revoir!!!


    enfin au moins j'aurai apris quelque chose ce soir

  8. #8
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 35
    Par défaut Merci les gas
    Merci les gas c'est des remarques importants pour un débutant comme moi


    une autre chose svp qui sais la declaration exacte des structure en algorithme
    et merci

  9. #9
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par défaut
    Citation Envoyé par forthx


    désolé! je vous pris d'acepter mes excuses et de ne plus ecouter mes stupides conseils!

    arg! mon dieu tout mes programmes sont a revoir!!!


    enfin au moins j'aurai apris quelque chose ce soir
    Le problème est effectivement que fflush(stdin) fonctionne sur beaucoup de systèmes, mais que si un jour tu tombes sur un système où ça ne marche pas tu auras beaucoup de mal à comprendre ce qui se passe. C'est tout. Continue à l'utiliser si tu veux, mais évite de le conseiller aux autres car tu te feras rembarrer comme aujourd'hui.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  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 anis_el_madani
    une autre chose svp qui sais la declaration exacte des structure en algorithme
    et merci
    Le langage algorithmique n'est malheureusement pas normalisé. Une bonne idée est de se baser sur le Pascal...

  11. #11
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 116
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 116
    Par défaut Hs
    Citation Envoyé par Emmanuel Delahaye
    Le langage algorithmique n'est malheureusement pas normalisé. Une bonne idée est de se baser sur le Pascal...
    Ah... J'avais un prof qui écrivait les algos en pascal directement.

    Je me suis toujours demandé pourquoi. En tous cas pour les langages que je connais, les éléments d'un structure struct sont notés struct.elem1, struct.elem2, ...

    Je pense qu'en algorithmie, il est bon de se baser sur des notations littérales le plus explicites possibles, car c'est bien une vertu universelle que d'écrire les algorithme en modélisation strictement algorithmique. Autant donner le maximum de choses dans le texte de l'algorithme, car les commentaires n'y ont pas de place.

    Donc il semble que la syntaxe du pascal respecte bien les notions universelles d'algorithmie si Emmanuel Delahaye te le conseille.

    Après c'est vrai que c'est à toi de voir, mais comme le langage algorithmique n'est pas normalisé, il ne faut pas présumer que l'analogie avec tel ou tel langage sera explicite pour le lecteur.

    D'ailleurs une fois j'avais mélangé mots clés C et langage strictement algorithmique.

    Je me suis fait taper sur les doigts méchant. Donc maintenant je ne fais plus que du C .

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par anis_el_madani
    une autre chose svp qui sais la declaration exacte des structure en algorithme
    et merci

    Une discussion intéressante à ce sujet sur le forum algo :

    http://www.developpez.net/forums/sho...d.php?t=221060

    Et en gros si tu regardes dans les exemples de pseudo-code dans les posts de ce forum (algo).

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

Discussions similaires

  1. problèmes avec les structures en C++
    Par mido1951 dans le forum C++
    Réponses: 1
    Dernier message: 03/06/2013, 21h56
  2. problème avec les structures.
    Par Chadocan dans le forum Débuter
    Réponses: 14
    Dernier message: 14/05/2013, 10h48
  3. Réponses: 4
    Dernier message: 03/03/2010, 09h08
  4. Problèmes avec les structures
    Par Merillym dans le forum Débuter
    Réponses: 21
    Dernier message: 16/10/2009, 20h38
  5. [Debutant], probléme avec les structures
    Par BobLunique dans le forum C
    Réponses: 5
    Dernier message: 27/03/2008, 19h19

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