web-dev-qa-db-fra.com

sprintf non déclaré dans la portée?

J'ai un petit extrait de code ici de quelque chose que j'ai conçu, mais je continue à avoir l'erreur Sprintf non déclaré dans la portée? 

Dois-je inclure quelque chose dans le #includes ou comment puis-je le faire fonctionner? Je travaillais dessus sur VS chez ma mère mais je suis rentré à la maison et je ne peux pas l'obtenir sur codeblocks

            if (tmp2 <= B_dest[hr - 6])
            {
                sprintf(name, "B%d", tmp3);
            }else{
                sprintf(name, "A%d", tmp3);
            }
14
soniccool

Vous devez inclure stdio.h

#include<stdio.h>

Le stdio.h déclare la fonction sprintf. Sans l'en-tête, le compilateur n'a aucun moyen de comprendre ce que sprintf signifie et il vous donne donc l'erreur.

En C++ Notez que, 

Inclure cstdio importe les noms de symbole dans l'espace de noms std et éventuellement dans l'espace de noms global.
Inclure stdio.h importe les noms de symbole dans l’espace de nom global et éventuellement dans std

Il en va de même pour tous les en-têtes de style c.

24
Alok Save

Assurez-vous que vous avez #include <cstdio>

et accédez à sprintf en tant que std::sprintf(), comme indiqué par @Potatoswatter.


ou utilisez l’ancien style c: #include <stdio.h> pour inclure la définition de sprintf .

5
srbhkmr

J'ai eu un problème similaire avec C :: B et j'ai trouvé que le problème ne se limitait pas aux chemins du compilateur - il semble que le IDE lui-même ait eu des problèmes pour ouvrir les fichiers #include <...> - cela pourrait toutefois être résolu en Paramètres -> Éditeur -> Autres paramètres -> Utiliser l'encodage lors de l'ouverture de fichiers: par défaut

mon encodage n'était pas sur la valeur par défaut, ce qui a causé des problèmes à l'ouverture de l'édifice IDE, notamment <...> 

Il n'a cependant PAS résolu le problème avec "n'a pas été déclaré dans cette portée"

0
serup