[GO] Wenn das Zeichen, das Sie lesen möchten, nicht mit der Konvertierungsspezifikation übereinstimmt, lässt die Funktion C> scanf ()> scanf das Zeichen im Stream ungelesen.

Ich habe es mit ideone versucht, das mit dem Code zusammenhängt, der den numerischen Wert mit scanf () in C liest, aber ich habe das Verhalten nicht gut verstanden.

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

Ergebnis


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

Ich habe nicht verstanden, warum die Zahl "3" nicht gelesen werden konnte.

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

Wenn die scanf-Funktion nicht mit der Konvertierungsspezifikation übereinstimmt, dann Lässt die Zeichen im Stream unlesbar.

Das ist es. Es war kein Fehler in der Idee.

Recommended Posts

Wenn das Zeichen, das Sie lesen möchten, nicht mit der Konvertierungsspezifikation übereinstimmt, lässt die Funktion C> scanf ()> scanf das Zeichen im Stream ungelesen.
Wenn in der Funktion eine Ausnahme auftritt, wird diese an den Anrufer 2 übertragen
Wenn in der Funktion eine Ausnahme auftritt, wird diese an den Anrufer 1 übertragen
Python-Ertrag verstehen Wenn Sie Ertrag in eine Funktion einfügen, wird dieser in einen Generator geändert
Was tun, wenn Python in pyenv nicht von der Systemversion wechselt?
Behebt ein Problem, bei dem cv2.imread () beim Versuch, ein Bild zu lesen, keinen Fehler ausgibt, auch wenn der Pfad nicht übergeben wird