Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec le scanf

Sujet résolu
    23 novembre 2023 à 1:09:38

    Bonjour,

    Je ne comprend pas ce qui se passe.

    Pouvez-vous m'aider ?

    Merci d'avance :)

    • Partager sur Facebook
    • Partager sur Twitter
      23 novembre 2023 à 1:31:47

      Hello,

      stp, évite les images: 

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        23 novembre 2023 à 8:50:29

        Printf et scanf sont des fonctions, dont la déclaration figure dans stdio.h.

        quand on compile ce code source

        int main()
        {
        	printf("hello\n");
        	return 0;
        }
        il y a une bordée d'avertissements
        cc     a.c   -o a
        a.c: In function ‘main’:
        a.c:3:9: warning: implicit declaration of function ‘printf’ [-Wimplicit-function-declaration]
            3 |         printf("hello\n");
              |         ^~~~~~
        a.c:1:1: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
          +++ |+#include <stdio.h>
            1 | int main()
        a.c:3:9: warning: incompatible implicit declaration of built-in function ‘printf’ [-Wbuiltin-declaration-mismatch]
            3 |         printf("hello\n");
              |         ^~~~~~
        a.c:3:9: note: include ‘<stdio.h>’ or provide a declaration of ‘printf’
        

        Ce ne sont pas (*) des erreurs (fatales) pour la compilation, mais il faut absolument en tenir compte.

        (*) Sauf si les options de compilation disent de considérer les avertissements comme des erreurs, ce qui est la sagesse même.

        -
        Edité par michelbillaud 24 novembre 2023 à 12:38:04

        • Partager sur Facebook
        • Partager sur Twitter
          23 novembre 2023 à 12:41:45

          En plus de l'inclusion de l'entête stdio.h comme le dit michelbillaud, comme la capture montre que oliviermessii utilise Visual Studio, il va ensuite rencontrer un autre problème du type de celui-ci :

          https://openclassrooms.com/forum/sujet/scanf-ne-fonctionne-pas-94ff8

          avec un beau message "Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."

          et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :

          #define _CRT_SECURE_NO_WARNINGS



          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2023 à 1:39:31

            Merci mais que veux dire le message : 

            Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details." ?


            Dlks a écrit:

            En plus de l'inclusion de l'entête stdio.h comme le dit michelbillaud, comme la capture montre que oliviermessii utilise Visual Studio, il va ensuite rencontrer un autre problème du type de celui-ci :

            https://openclassrooms.com/forum/sujet/scanf-ne-fonctionne-pas-94ff8

            avec un beau message "Error 1 error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."

            et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :

            #define _CRT_SECURE_NO_WARNINGS



            -
            Edité par oliviermessii 25 novembre 2023 à 1:43:34

            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2023 à 10:13:23

              Il faut lire jusqu'au bout :

              Dlks a écrit:

              et il faudra, pour que son code en C standard veuille bien être compilé qu'il mette, avant le #include <stdio.h> la directive :

              #define _CRT_SECURE_NO_WARNINGS

              Ça veut dire que Visual C te demande d'utiliser les fonctions sécurisées scanf_s de préférence, Et que si tu veux utiliser scanf, il faut définir cette constante  _CRT_SECURE_NO_WARNINGS.

              Donc tu écris en haut du fichier source avant les directives include :

              #define _CRT_SECURE_NO_WARNINGS




              • Partager sur Facebook
              • Partager sur Twitter
              ...
                25 novembre 2023 à 16:13:41

                Alternative, définir _CRT_MACHIN_ par des options du compilateur pour windows (paramètres du projet pour l'IDE). 

                Raison : c'est spécifique à cet environnement.

                -
                Edité par michelbillaud 25 novembre 2023 à 21:59:59

                • Partager sur Facebook
                • Partager sur Twitter

                Problème avec le scanf

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown