Partage
  • Partager sur Facebook
  • Partager sur Twitter

scanf_s ne marche pas

Sujet résolu
    15 mai 2022 à 5:24:15

    salut quelqu'un peut m'aider svp  ce simple code ne marche pas, le problème est au niveau de   scanf_s("%s", &eleve.nom):

    #include <iostream>
    
    #include <stdio.h>
    
    #include <stdlib.h>
    
    #include <stdint.h>
    
    #include "structure.h"
    
    int main()
    
    {
    
    Personne eleve;
    
    printf("donner le nom de l'eleve  ");
    
      scanf_s("%s", &eleve.nom);
    
      printf("donner le prenom de l'eleve ");
    
       scanf_s("%s", &eleve.prenom);
    
        printf("donner l'age de l'eleve ");
    
        scanf_s("%d",& eleve.age);
    
        printf("donner la moyenne de l'eleve ");
    
        scanf_s("%f", & eleve.moyenne);
    
    reurn 0 ;
    
    }



    -
    Edité par KhaoulaKhichi 16 mai 2022 à 5:08:41

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2022 à 6:31:32

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci de colorer votre code à l'aide du bouton Code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Code de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Merci de modifier votre message d'origine en fonction.

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2022 à 9:40:09

        Bonjour,

        scanf_s n'est pas scanf, c'est une version avec plus de sécurité. Pour toutes les données de type chaine à recevoir, on doit non seulement fournir le pointeur mais aussi indiquer la taille maximum.
        En supposant que eleve.nom est bien un tableau de char, il faut écrire:

            scanf_s( "%s", eleve.nom, sizeof(eleve.nom) );
        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          15 mai 2022 à 9:46:33

          scanf_s est une extensions optionnelle du C que personne n'implémente à part microsoft. Si tu souhaites de la portabilité je t'invite à rester sur scanf mais sache que scanf n'est pas non plus fait pour lire l'entrée utilisateur. C'est fait pour lire de l'entrée correctement formatée.
          • Partager sur Facebook
          • Partager sur Twitter

          git is great because Linus did it, mercurial is better because he didn't.

            15 mai 2022 à 13:39:48

            markand a écrit:

            scanf_s est une extensions optionnelle du C que personne n'implémente à part microsoft. Si tu souhaites de la portabilité je t'invite à rester sur scanf mais sache que scanf n'est pas non plus fait pour lire l'entrée utilisateur. C'est fait pour lire de l'entrée correctement formatée.

            scanf_s() est portable, il est dans le C11. Mais le compilateur msvc est "agressif" envers scanf() et active implicitement scanf_s() alors qu'il faut normalement le demander avec define __STDC_WANT_LIB_EXT1__.
            • Partager sur Facebook
            • Partager sur Twitter

            En recherche d'emploi.

              15 mai 2022 à 15:34:09 - Message modéré pour le motif suivant : Merci de créer votre propre sujet


                15 mai 2022 à 22:01:22

                Il est dans le C11 en annexe, implémenté que par MSVC. Pas présent dans aucune autre implémentation (musl, glibc, newlib, android, apple, *BSD).

                On a probablement pas la même définition de portable.

                -
                Edité par markand 18 mai 2022 à 8:44:13

                • Partager sur Facebook
                • Partager sur Twitter

                git is great because Linus did it, mercurial is better because he didn't.

                  16 mai 2022 à 4:59:58

                  bonjour merci pour votre aide je trouve la solution finalement 

                  scanf_s("%s",eleve.nom,(unsigned)_countof(eleve.nom));


                  ;

                  cette ligne me permet de saisir une chaine de caractères à partir de clavier 

                  -
                  Edité par KhaoulaKhichi 16 mai 2022 à 5:07:09

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mai 2022 à 11:30:15

                    KhaoulaKhichi a écrit:

                    cette ligne me permet de saisir une chaine de caractères à partir de clavier


                    -

                    Il faut espérer que la chaine de caractères ne contienne pas d'espace ...

                    -
                    Edité par magma 16 mai 2022 à 11:31:42

                    • Partager sur Facebook
                    • Partager sur Twitter

                    scanf_s ne marche pas

                    × 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