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);
}
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.
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 .
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"