scanf() Variable überspringen

Lesezeit: 2 Minuten

Benutzer-Avatar
ross

In C mit scanf() mit den Parametern, scanf("%d %*d", &a, &b) wirkt anders. Es gibt nur einen Wert für eine Variable ein, nicht für zwei!

Bitte erläutern Sie dies!

scanf("%d %*d", &a, &b);

Das * bedeutet im Grunde, dass der Bezeichner ignoriert wird (Ganzzahl wird gelesen, aber nicht zugewiesen).

Zitat von Mann scanf:

 *        Suppresses assignment.  The conversion that follows occurs as
          usual, but no pointer is used; the result of the conversion is
          simply discarded.

  • Aber was passiert, wenn ich eine Ganzzahl verwerfe, die tatsächlich nicht in der Datei vorhanden ist? Es scheint, dass fscanf nicht fehlschlägt.

    – Bionix1441

    5. Oktober 2017 um 15:01 Uhr

Sternchen scanf bedeutet, dass der Wert für format gelesen, aber nicht in die Variable geschrieben wird.

scanf("%d %*d",&a);

  • erwartet keinen Variablenzeiger in seiner Parameterliste für diesen Wert. Sie sollten schreiben: fscanfGibt es eine Möglichkeit, alle Zeichen nach dem zu ignorieren, das wir lesen möchten?

    ? dh alles bis zum Zeilenende ignorieren? Das suche ich schon seit geraumer Zeit.

    – Bionix1441

  • 20. September 2017 um 10:21 Uhr scanf @ Bionix1441 stdin liest nur soviel Zeichen aus fscanf (und

    aus Datei), wie es für die Formatzeichenfolge erforderlich ist. Wenn Sie falsche Werte in Ihren Variablen erhalten, bedeutet dies, dass Sie einen Fehler erhalten, der dem Format entspricht. Überprüfen Sie den Rückgabewert. Wenn es nicht hilft, müssen Sie wohl eine richtige Frage mit Beispielen posten.

    – Tomek Szpakowicz


21. September 2017 um 17:41 Uhr

http://en.wikipedia.org/wiki/Scanf#Format_string_specifications

Ein optionales Sternchen

#include <stdio.h>
#include<stdlib.h>

void main() {
    char operator;
    double n1, n2;

    printf("Enter two operands: ");
    scanf("%lf %lf",&n1, &n2);
    
   fflush(stdin);   //do this between two scanf
    
    printf("Enter an operator (+, -, *, /): ");
    scanf("%c", &operator);

}

direkt nach dem Prozentzeichen gibt an, dass das von diesem Formatbezeichner gelesene Datum nicht in einer Variablen gespeichert werden soll.

1352070cookie-checkscanf() Variable überspringen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy