La conversion de code ASCII d'un caractère
J'ai juste commencé à apprendre à programmer en C et je suis en train de faire un programme qui accepte un nombre et l'utilise comme une valeur ASCII à retourner le caractère ASCII associé à cette valeur.
Le programme fonctionne lorsque les paramètres sont prédéfinis mais quand je introduire la fonction scanf, il compile mais ne me donne pas les mêmes résultats.
Voici mon code :
#include <stdio.h>
int main(void)
{
question2();
return 0;
}
int question2(void)
{
int myInt = 65;
scanf("%d", myInt);
char ch = myInt;
printf("%c",ch);
return 0;
}
Acclamations et merci pour tout les gars d'aide.
- S'il vous plaît tourner sur votre compilateur que des mises en garde, et de les lire attentivement.
- Aussi, mettez les informations de débogage. Sur Linux, vous devez compiler avec
gcc -std=c99 -Wall -g yourcode.c -o yourprog
et l'utilisationgdb ./yourprog
pour le déboguer. - Je ne vois pas un avertissement lors de l'utilisation de Dev-C++ qui utilise TDM-GCC 4.6.1 64 bits si je m'attendais à. Intéressant.
- C'est vraiment étrange. GCC (4.5 et plus) affiche un message d'avertissement pour le scanf, même si vous n'avez pas activer les mises en garde explicitement. Vous obtiendrez un avertissement pour la déclaration implicite de la question2 avec le Mur
- Eh bien, j'ai juste essayé
scanf
avec une variable qui n'est pas un pointeur (qui bien sûr ne pas jeter d'avertissement), et j'ai raté le point de la déclaration implicite dans l'OP. BTW n'est pas "la déclaration implicite de" même ne parvient pas à compiler??
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer le adresse de
myInt
àscanf()
(le compilateur doit avoir émis un avertissement pour ça):Vous devriez également vérifier la valeur de retour de
scanf()
pour assurermyInt
a été affectée.scanf()
renvoie le nombre d'affectations effectuées, qui dans ce cas devrait être1
:Noter que
int
a une plus grande plage de valeurs qu'unchar
vous devez donc vérifier que la valeur stockée dansmyInt
sera ajustement dans unchar
. Il y a des macros définies dans l'en-têtelimits.h
que vous pouvez utiliser pour vérifier:Le compilateur aurait également émis un implicite de la déclaration de la fonction avertissement à l'égard de
question2()
. Pour corriger, le lieu de la définition dequestion2()
, ou une déclaration dequestion2()
, avantmain()
.