Yahoo Clever wird am 4. Mai 2021 (Eastern Time, Zeitzone US-Ostküste) eingestellt. Ab dem 20. April 2021 (Eastern Time) ist die Website von Yahoo Clever nur noch im reinen Lesemodus verfügbar. Andere Yahoo Produkte oder Dienste oder Ihr Yahoo Account sind von diesen Änderungen nicht betroffen. Auf dieser Hilfeseite finden Sie weitere Informationen zur Einstellung von Yahoo Clever und dazu, wie Sie Ihre Daten herunterladen.

Wie kann man in C den Zahlentyp erzwingen/abfragen?

Angenommen ich werde aufgefordert mein Geburtsdatum einzugeben, was nur mit integer-Zahlen Sinn macht. Wenn ich z.B,. 4.1 eingebe, soll die Meldung kommen "der Zahlenwert ist nicht zulässig, bitte erneut eingeben".

Vom Ansatz weiss ich das man das mit einer "Do...while" Schleife programmieren kann. Nur wie kriege ich die Zahlentypabfrage in die while-Bedingungsabfrage rein?

2 Antworten

Bewertung
  • vor 9 Jahren
    Beste Antwort

    Da sind drei Funktionen erklärt, die Du verwenden kannst, bzw es ist erklärt, warum genau eine dieser drei Funktionen für Dich die richtige ist.

    http://www.imb-jena.de/~gmueller/kurse/c_c++/c_str...

  • vor 9 Jahren

    Bei Complexen Musten ist das nicht ganz trival. Wenn du das ganz korekt machst benötigst du einen Patternmatchin Automaten : http://de.wikipedia.org/wiki/Endlicher_Automat. Im Falle eines Datums geht es einfacher.

    Hab den Code mal geschrieben. Ist zwar etwas komplizierter aber dafür universell Nutzbar und du kannst beliebige Prüffunktionen einbauen. Es sind einige Dinge aus der Oberklasse C Programmierung drin, die für einen Anfänger nicht so leicht verständlich sind.

    MATCHSTRUCT enthält einen Funktionspointer bool (*testMatch) (char*,struct _MATCHSTRUCT*)

    Dort hänge ich die Testfunktion für die jeweilige Prüfung ein.

    MATCHSTRUCT match[] =

    {

    {STARTSTATE, 1, '\0', NULL},

    {STARTSTATE, 1, '\n', NULL},

    {STARTSTATE, 1, '\r', NULL},

    {1, 2, '.', isLen31},

    {2, 4, '.', isLen12},

    ...

    Hier werden Die Muster hinterlegt du kannst also verschiedenste Formate prüfen :

    TT.MM.YYYY oder TT.MM.YY oder TT/MM/YYYY oder TT/MM/YY Das ganze funktioniert auch dann wenn du es aus einer Datei liest also mit \n am Ende

    http://de.sourcepod.com/halkmt96-11892

Haben Sie noch Fragen? Jetzt beantworten lassen.