7
votes

printf ("% d") n'affiche pas ce que je sais

Mon code: xxx

i saisie 2 ,

Sortie attendue: 2 est ce que j'ai entré

sortie réelle: 2293324 est ce que j'ai entré

Quel est le problème ici?


2 commentaires

Faire un choix C ++ ou C - deux bêtes différentes


Chaque fois que vous entrez quelque chose, vous devez vérifier que l'opération d'entrée a été réussie, par exemple: si (1 == scanf ("% d", et numéro)) {...} . Comme il a déjà été signalé, le problème que vous avez observé est un problème différent, bien que (l'utilisation de pointeur sur les valeurs dans scanf () et l'utilisation directe des valeurs dans printf () ).


6 Réponses :


10
votes
printf("%d is what I entered\n", number);

4 commentaires

Merci Bro, vous êtes un économiseur de vie.


@Stevenelcarim Il est préférable de Accepter une réponse au lieu de commenter "< I> Merci! ".


Comment est-ce ub? Cela ne va pas simplement imprimer l'adresse de la variable au lieu de sa valeur?


@Happycoder " ne sera-t-il pas simplement imprimer l'adresse de la variable au lieu de sa valeur? " - tout pourrait être le résultat que le code de l'OP invoque UB. Pour imprimer l'adresse, l'OP aurait dû utiliser le spécificateur de format % p . Vous devez utiliser les spécificateurs de format appropriés, c'est-à-dire que vous devez fournir le type de variable correct car le spécificateur de format attend. Sinon, le code montre UB comme indiqué dans la norme indiquée dans ma réponse.



7
votes

Vous utilisez opérateur & sur numéro code> , signifie prendre en compte de cela, donc vous n'imprimez pas la valeur du numéro code>, mais l'adresse de celui-ci, vous devez:

printf("%d is what I entered\n", number);


0 commentaires

2
votes
#include <stdio.h>

int main(void) {
        printf("Enter a number: ");
        int number;
        scanf("%d", &number);
        printf("The number is: %d\n", number);

        return 0;
}
This should solve your problem.In scanf() first you have to specify what the input item will be(int, float, char, char*, etc...) for your example "%d" is for integer. After that, you have to get the address of your item. That's why you have to use the & operator before the variable. Your error occurred due to the fact that you were using the & operator on the printf() as well. This basically means that you print the address in the stack where you stored the integer. But without the & you print the actual value.Hope this helps.

0 commentaires

4
votes

Si vous auriez utilisé l'option -wall -g COMPILER, vous auriez dû voir l'erreur d'erreur pendant la compilation: xxx


0 commentaires

0
votes

u peut essayer de supprimer le numéro et du numéro et simplement écrire un numéro

printf("%d is what I entered\n", number);


0 commentaires

2
votes

que & code> donne l'adresse du "numéro" variable. Vous ne devriez pas l'utiliser.
Solution:

printf( "%d is what I entered\n", number);


0 commentaires