C Programmieren, anstatt Zahlen, Buchstaben?


31.12.2022, 22:21

C Programm

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du könntest scanf mit dem Format-Zeichen "%d" und break nutzen, um damit eine ganze Zahl (int) zu lesen.

Die Funktion gibt dann die Anzahl der erfolgreich eingelesenen Werte zurück.

Wenn sie 1 zurückgibt, war die Eingabe eine gültige Zahl und wir brechen die Schleife ab. Damit wird der Rest des Programms ausgelöst.

Wenn die Eingabe allerdings ungültig war, ignorieren wir sie, indem wir alle verbleibenden Zeichen bis zum Zeilenumbruch ('\n') aus dem Eingabestrom lesen und die Schleife erneut durchlaufen.

Siehe hier:

#include <stdio.h>


int main() {
  int year;


  while (1) {
    printf("Please enter a year: ");
    if (scanf("%d", &year) == 1) {
      // Die Eingabe war eine gültige Zahl, also fahren wir mit dem Programm fort
      break;
    } else {
      // Die Eingabe war ungültig, also ignorieren wir sie und geben erneut die Aufforderung aus
      while (getchar() != '\n');
    }
   
  }


  // Hier kommt der Rest des Programms hin, das mit der eingelesenen Zahl year ausgeführt wird
  if(year % 400 == 0)
  {
      printf("Leap year - YES\n");
  }
  else if(year % 100 == 0 || year % 4 == 0)
  {
      printf("Leap year - YES\n");
  }
  else {
      printf("Leap year - NO\n");
  }
  


  return 0;
}

Woher ich das weiß:Berufserfahrung – Seit 10+ Jahren aktiv in Web- und Softwareentwicklung

Naja, eine while True (bzw. evtl. while(1)) Schleife eben mit atio

Hier Mal ein Beispiel in Python

while True:
    try:
        zahl = int(input('Zahl eingeben: '))
        break
    except ValueError:
        print('Bitte geben Sie nur Ganzzahlen ein!')
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

Brubossa 
Beitragsersteller
 31.12.2022, 22:20

Danke für deine Antwort, hat leider nicht ganz geklappt. ich habe jetzt mal mein Programm hinzugefügt. Da geht es nicht um Zahlen sondern um Jahre, im Prinzip aber das selbe. Wäre toll wenn Sie mir dabei helfen könnten.

0