String auf Richtigkeit überprüfen (ohne auf Groß- und Kleinschreibung zu achten)



  • Hi Leute,
    ich sitze gerade an meinem ersten Programm in C.
    Es wird ein "Freukalkulator" für meinen kleinen Bruder.

    Das sieht bis jetzt wie folgt aus:

    #include "stdafx.h"
    #include "stdio.h"
    #include "stdlib.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	char s[5];
    
    	printf("Frage");
    	printf("Ja oder Nein eingeben!:");
    
    	scanf("%4s",&s[0]);
    
    	if (s[0] == 'j' && s[1] == 'a'){
    		printf("ja");
    	} else if (s[0] == 'n' && s[1] == 'e' && s[2] == 'i' && s[3] == 'n') {
    		printf("nein");
    	} else 
    		printf("\n Nur \"ja\" oder \"nein\" eingeben!");
    
    	getchar();
    	return 0;
    }
    

    Meine Fragen lautetn:
    1. Wie kann ich den String mit z.B. if (s == 'ja') (also nicht so kompliziert)
    auf seine Richtigkeit überprüfen?
    2. Wie sorge ich dafür das C dabei nicht auf Groß- oder Kleinschreibung achtet?
    3. Hat nichts mit dem Titel des Threads zu tun, aber vielleicht kann mir ja
    trotzdem jemand auf die Schnelle weiterhelfen:
    scanf hebelt die Funktion von getchar() (nämlich, die dass sich das Programm
    bei Direktstart aus dem Windows-Explorer, wenn es fertig ist, nich sofort
    wieder schließt) aus. Wie kann ich sonst noch dafür sorgen, dass sich
    das Programmfenster nicht sofort wieder schließt?

    Danke schonmal im Voraus...
    eLeMeNt_oF_rEcOmBiNaTiOn



  • eLeMeNt_oF_rEcOmBiNaTiOn schrieb:

    1. Wie kann ich den String mit z.B. if (s == 'ja') (also nicht so kompliziert)
    auf seine Richtigkeit überprüfen?

    #include <string.h>
    
    int streql( char const* lhs, char const* rhs )
    {
      return strcmp(lhs, rhs) == 0;
    }
    
    // beispiel
    if (streql(s, "ja"))
    

    eLeMeNt_oF_rEcOmBiNaTiOn schrieb:

    2. Wie sorge ich dafür das C dabei nicht auf Groß- oder Kleinschreibung achtet?

    Da musst du dich selber drum kümmern. Schau dir tolower bzw toupper in <ctype.h> an, damit kannst du einzelne Zeichen umwandeln.

    eLeMeNt_oF_rEcOmBiNaTiOn schrieb:

    3. Hat nichts mit dem Titel des Threads zu tun, aber vielleicht kann mir ja
    trotzdem jemand auf die Schnelle weiterhelfen:
    scanf hebelt die Funktion von getchar() (nämlich, die dass sich das Programm
    bei Direktstart aus dem Windows-Explorer, wenn es fertig ist, nich sofort
    wieder schließt) aus. Wie kann ich sonst noch dafür sorgen, dass sich
    das Programmfenster nicht sofort wieder schließt?

    Steht in der FAQ.



  • Oder:

    if (strcmpi("ja", "JA")) {
    ...
    


  • martin_salo schrieb:

    Oder:

    if (strcmpi("ja", "JA")) {
    ...
    

    Ist leider nicht ANSI C (iirc eine Ergänzung von Microsoft).



  • Danke Leute,
    ihr habt mir sehr weitergeholfen...

    Gutz Nächtle


Anmelden zum Antworten