Si le caractère que vous essayez de lire ne correspond pas à la spécification de conversion, la fonction C> scanf ()> scanf laissera le caractère non lu dans le flux.

J'ai essayé avec ideone lié au code qui lit la valeur numérique avec scanf () en C, mais je n'ai pas bien compris le comportement.

http://ideone.com/PJ1dU2

#include <stdio.h>

int main(void) {
    int val;
    
    scanf("%d", &val);
    printf("val=%d\n", val);

    scanf("%d", &val);
    printf("val=%d\n", val);

    scanf("%d", &val);
    printf("val=%d\n", val);
    
	return 0;
}

stdin


A
3
1
4

résultat


val=-1218232755
val=-1218232755
val=-1218232755

Je n'ai pas compris pourquoi le chiffre «3» ne pouvait pas être lu.

http://f4.aaacafe.ne.jp/~pointc/log460.html

Si la fonction scanf ne correspond pas à la spécification de conversion, alors Rend les caractères du flux illisibles.

Voilà ce que c'est. Ce n'était pas un bug d'idéone.

Recommended Posts

Si le caractère que vous essayez de lire ne correspond pas à la spécification de conversion, la fonction C> scanf ()> scanf laissera le caractère non lu dans le flux.
Si une exception survient dans la fonction, elle sera transmise à l'appelant 2
Si une exception survient dans la fonction, elle sera transmise à l'appelant 1
Comprendre le rendement Python Si vous mettez le rendement dans une fonction, elle se transforme en générateur
Que faire lorsque Python ne passe pas de la version système dans pyenv
Résout un problème où cv2.imread () ne donne pas d'erreur lors de la tentative de lecture d'une image même si le chemin ne passe pas