Char Problem



  • HI!

    Ich hab mal ne frage mit char*
    Folgender Code erzeugt diesen Fehler:

    main.cpp:22: invalid operands of types `char *' and `char *' to binary
    `operator+'

    int main(int argc, char *argv[])
    {
       char * command;
       command = argv[1] + argv[2];
    
      return EXIT_SUCCESS;
    }
    

    Jetzt versteh ich nicht warum...
    Ich will doch nur die beiden vars zu einer Zeichenkette zusammenfügen...
    Warum klappt das nicht 😞 ?

    Danke für eure Replies



  • DaFrey schrieb:

    HI!

    Ich hab mal ne frage mit char*
    Folgender Code erzeugt diesen Fehler:

    main.cpp:22: invalid operands of types `char *' and `char *' to binary
    `operator+'

    int main(int argc, char *argv[])
    {
       char * command;
       command = argv[1] + argv[2];
    
      return EXIT_SUCCESS;
    }
    

    Jetzt versteh ich nicht warum...
    Ich will doch nur die beiden vars zu einer Zeichenkette zusammenfügen...
    Warum klappt das nicht 😞 ?

    Danke für eure Replies

    weil es zeichenketten sind, und nicht einzelen zeichen. du musst

    strcpy(arrayA, arrayC + arrayB)

    benutzen. der +-operator funktioniert glaube ich nur mit der string klasse(stl).

    mfg



  • HI!

    Dann müsste es doch eigentlich so stimmen:

    int main(int argc, char *argv[])
    {
    
       char * command;
       strcpy(command, argv[1] + argv[2]);
    
      return EXIT_SUCCESS;
    }
    

    Das funtz aber auch nicht....
    Muss ich noch extra header einbinden?



  • Was du machst ist, dass du 2 char-Pointer miteinander addierst.

    Versuch folgendes:

    sprintf("%s%s",  argv[1], argv[2]);
    


  • HI!

    So hats auch nicht geklappt habs jetzt aber hinbekommen.
    Mit StrCat() damit funtzt.
    Aber trotzdem danke gell 🙂



  • Entschuldige, ich hab vergessen, dass die Funktion auch einen Buffer benötigt.

    char  buffer[200];
    sprintf(buffer, "%s%s",  argv[1], argv[2]);
    


  • HI!

    Jetzt hab ich deinen Code mal versucht

    char command[500];
    sprintf(command, "%s%s",  argv[1], argv[2]);
    cout << command;
    

    Aber wenn ich dass Kompilieren will haut mein Compiler (gmake in KDevelop 2.1)

    Folgende Fehlermeldung raus:

    main.cpp: In function `int main (int, char **)': 
    main.cpp:69: universal-character-name `\u00a0' not valid in identifier 
    main.cpp:69: universal-character-name `\u00a0' not valid in identifier 
    main.cpp:69: sorry, not implemented: universal characters in 
    identifiers 
    main.cpp:69: `_argv' undeclared (first use this function) 
    main.cpp:69: (Each undeclared identifier is reported only once for each 
    function it appears in.)
    


  • Ich hab keinen Schimmer was der Compiler mit "universal-character-name `\u00a0' not valid in identifier" meint. Zeile 69, welche der drei Zeilen ist das aus dem Code den du angegeben hast?



  • Es ist der sprintf ausdruck (die zeile 69)

    Leider funtz das mit StrCat() auch nicht weil der irgendwie kein normalen Char-Pointer und ein Char-Point-Array zusammensetzten kann.

    Bitte bitte helft mir es ist verdammt wichtig 🙂

    Aber, Azis der ausdruck den ich als letztes beschrieb ist doch so richtig oder?



  • Ich habs jetzt ausprobiert und es funktioniert...

    Heißt die Variable ganz sicher "argv" und nicht vielleicht "_argv" ?

    Ansonsten kann ich dir nicht viel helfen weil du einen Compiler hast, den ich nicht verwende...



  • HI!

    Also eigetnlich heisst sie argv so wie ichs sagte.
    das sind halt die Paramenter die an die App. übergeben werden.

    Anzahl "int argc" und inhalt "char * argv[int param_index]"
    Und wenn man z.b. cout << argv[1]; aufruft und die App so gestartet hat:

    ./meineapp Hallo

    Wird Hallo ausgegeben, also müsste es schon stimmen



  • Hast du <stdio.h> included?



  • #include <string>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        string a = argv[0], b = argv[1];
        string c = a + b;
    }
    

    Oder bist du wirklich sicher, dass du char* verwenden willst/musst?


Anmelden zum Antworten