strings vergleichen



  • hi, ich bin neu hier, habe als erstes mal die boardsuche verwendet, auch was ähnliches dazu gefunden. leider beantwortet mir dieser alte beitrag nicht ganz meine frage / problem. ich will also 2 strings mit strcmp() vergleichen. dabei bekomme ich folgende fehlermeldung:

    "passing `char' to argument 1 of `strcmp(const char *, const char *)' lacks a cast"

    .. also daraus kann ich herauslesen, dass es irgendwas mit pointern zu tun hat. leider kenn ich mich noch nicht genügend mit pointern aus. hier noch der code:

    #include <iostream.h>
    #include <string.h>
    
    using namespace std;
    
    void main()
    {
        char command;
    
        cout << "Welcome to my cmd! << endl << endl << "nh:>"; 
        cin >> command;
    
        while (strcmp(command,"exit") == 1)
        {
            if (strcmp(command,"help") == 0)
            {
                cout << "test ..." << endl << "nh:>";
                cin >> command;
            }
            else
            {
                cout << "Bad command or file name." << endl << "nh:>";
                cin >> command;
            };
    
        };
        return 0;
    
    };
    

    ich hoffe ihr könnt mir da weiterhelfen... mfg Mindphreaker



  • strcmp erwartet ein char*, du übergibst ein char.

    #include <iostream.h>
    #include <string.h>
    

    wenn du eh c++ machst nimm string.

    #include <iostream>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        string command;
    
        cout << "Welcome to my cmd!" << endl << endl << "nh:>";
        cin >> command;
    
        while (command != "exit")
        {
            if (command == "help")
            {
                cout << "test ..." << endl << "nh:>";
                cin >> command;
            }
            else
            {
                cout << "Bad command or file name." << endl << "nh:>";
                cin >> command;
            }
        }
    }
    

    übrigens benutzt man seid 4 jahren die std-header ohne .h und int main().



  • borg schrieb:

    übrigens benutzt man seid 4 jahren die std-header ohne .h und int main().

    In C++ ;).

    @mindphreaker
    Ein char kann nur ein Zeichen speichern. "exit" hat z. B. schon mal vier Zeichen. Kann ja nicht gehen, oder?? Du musst also mehrere Zeichen speichern können. Das macht man mit einem Array:

    char command[32]; //damit hast du Platz für 31 Zeichen + dem Stringendezeichen (0 oder '\0')
    


  • danke für die schnelle hilfe, mit string ist es tatsächlich um einiges konfortabler. funktioniert jetzt einwandfrei. 😉
    mfg Mindphreaker



  • @AJ: <iostream> gibts nur in C++ 😉

    MfG SideWinder



  • naja und? .. ich programmier ja auch nur in c++ .. wo ist denn das problem mit <iostream>?



  • SideWinder schrieb:

    @AJ: <iostream> gibts nur in C++ 😉

    MfG SideWinder

    Es ging darum, dass man keine .h hinten dranschreibt bei den Standardheadern, was nur in C++ zutrifft ;).



  • @ borg
    ...um da noch eins drauf zu setzen: wenn ich schon int main() nehme dann würde ich auch am ende des Programmes was returnen 🙂

    rendner


Anmelden zum Antworten