bin ich blöd?



  • hallo,

    ich will einfach nur die übergebenen parameter auslesen aber irgendwie seh ich da keinen sinn indem was das programm tut

    hier der code:

    int main(int argc, char* argv[])
    {
    cout<<argc<<endl;
    for(int i = 0;i<argc;i++)
    {
    cout<<i<<": "<<argv[i]<<" "<<endl;
    if(argv[i] == "-c")
    {
    cout<<i<<" ist -c"<<endl;
    }

    }
    }

    ich geb folgendes ein: ./meinTool -c test whatever
    und erwarte folgende ausgabe:
    4
    0: ./meinTool
    1: -c
    1 ist -c
    2: test
    3: whatever

    stattdessen erscheint kein "1 ist -c" sprich der vergleich argv[i] == "-c" ist im fall i=1 falsch
    wie kann das bitte sein?

    gruß,
    henning



  • Sehr aussagekräftiger Titel 🙄

    Du vergleichst hier Zeiger, keine Strings. Du musst entweder einen der strings in std::string umwandeln oder std::strcmp(argv[i], "-c")==0 (Header <cstring>) als Abfrage verwenden.

    Achja: Bitte Syntaxhighlighting verwenden! Guckst Du den schönen C/C++ Button unter dem Beitragsfeld 😉



  • http://www.cplusplus.com/reference/clibrary/cstring/strcmp.html

    if( !strcmp( argv[i], "-c" ) )
    

    wiedermal zu lahm, blödes gegoogle..


Anmelden zum Antworten