char-variable abfragen



  • ich möchte die eingabe eines wortes überprüfen und eine bestimme funktion ausführen wenn dieses wort eingegeben wird.

    wenn ich im unten angegebenen programm jedoch "hallo" eingebe lande ich trotzdem im else-zweig!

    wäre super wenn mir jemand helfen könnte!

    main()
    {
    char str[10];
    printf("Bitte ein Wort eingeben\n : ");
    scanf("%s",&str);
    
    if (str =="hallo")
    {
    printf("alles klar");
    }
    else
    {
    printf("\n scheisse\n %s \n",str);
    }
    }
    


  • *blubb*

    str ist ja schon der Zeiger, deswegen mußt Du beim Funktionsaufruf den Adressoperator weglassen. Der Arrayname ist im vorliegenden Fall der Zeiger auf das erste Element. Wenn du das & wegläßt, müßte es gehen.

    2nd edit: Aber das ist doch ANSI- C...



  • Und if(str =="hallo") funktioniert auch nicht. Schau dir mal die Funktion strcmp an.



  • Außerdem gehört dein Thread nach Ansi-C, denn in C++ nutzt man:

    1. int main() (laut C99 🙄)
    2. return 0; dazu bitte
    3. cout statt printf
    4. cin statt scanf
    5. die string-Klasse

    MfG MAV



  • Mis2com schrieb:

    1. return 0; dazu bitte

    Wenn ich mich richtig erinnere hatte Hume mal gesagt, dass laut Standard nicht explizit return in main angegeben werden muss.



  • Hallo,

    groovemaster2002 schrieb:

    dass laut Standard nicht explizit return in main angegeben werden muss.

    ja, ist korrekt, der Standard erfordert kein return-Statement.

    MfG



  • was Mis2Com meint ist

    #include <iostream> //statt cstdio
    #include <string> //für strings
    #include <cstring>//für die 'alten' C-Strings
    using namespace std;
    
    int main () {
      cout << "Füttere mich mit: ";
      string eingabe;
      getline(cin,eingabe);
    
      if (eingabe == "Fisch") {
         cout << "So long";
      }
    
    }
    

    Wenn du mit C arbeiten willst, dann melde dich.

    und nur zur ergänzung: laut standard musst du nur in der main funktion kein return explizit angeben, weil der compiler dann implizit ein return 0 hinzufügt.


Anmelden zum Antworten