2 Strings verbinden



  • Habe folgendes Problem:

    char batchpathpre[99];
    char batchpath[90];
    batchpathpre = "abc";
    batchpath = "cde";
    
    printf(batchpathpre + batchpath);
    

    Wenn ich das so mache meldet meine IDE (Dev-C++) folgendes:
    C:\Dev-Cpp\main.c invalid operands to binary +

    Beim Googeln habe ich immer gefunden, dass ich mit "+" das so lösen kann.

    Kann mir jemand helfen?



  • gringo schrieb:

    Wenn ich das so mache meldet meine IDE (Dev-C++) folgendes:
    C:\Dev-Cpp\main.c invalid operands to binary +

    Und die Zuweisungen davor schluckt sie anstandslos? 😕

    Beim Googeln habe ich immer gefunden, dass ich mit "+" das so lösen kann.

    Aber nicht in C.

    Kann mir jemand helfen?

    Sicher.



  • MFK schrieb:

    gringo schrieb:

    Wenn ich das so mache meldet meine IDE (Dev-C++) folgendes:
    C:\Dev-Cpp\main.c invalid operands to binary +

    Und die Zuweisungen davor schluckt sie anstandslos? 😕

    Das ist nur ein Beispiel damit ich hier nicht den ganzen Code hinhauen muss. Die Zuweisung die ich verwende funktioniert. Aber ich möchte sie nicht posten, denn ich mache das mittels einem Windows API Aufruf (GetPrivateProfileString()) aber das gehört ja nicht hier rein. Ich frage eigentlich nur wie ich diese Beiden denn nun verbinden kann.

    Kann mir jemand helfen?

    Sicher.

    Dann bitte ich drum 🙂



  • Mit strcat kannst du C-Strings aneinanderhängen. Du musst selbst dafür sorgen, dass der Zielpuffer groß genug ist.



  • Entweder du steigst um auf C++ (soweit ich das sehe, verwendest du sowieso eine C++-Umgebung) und nutzt std::string - dann klappt der obige Ausdruck auch. Oder du verwendest strcat zum Verknüpfen der Strings (das wäre die C-Herangehensweise).
    In deinem Quellcode werden die Char-Array als Pointer interpretiert und Pointer-Addition ist sinnlos und deshalb auch verboten.



  • man: strcat(3)

    C strings sind Zeiger. Zeiger Addition != Inhalt Addition



  • gringo schrieb:

    Habe folgendes Problem:

    char batchpathpre[99];
    char batchpath[90];
    batchpathpre = "abc";
    batchpath = "cde";
    
    printf(batchpathpre + batchpath);
    

    Wenn ich das so mache meldet meine IDE (Dev-C++) folgendes:
    C:\Dev-Cpp\main.c invalid operands to binary +

    Beim Googeln habe ich immer gefunden, dass ich mit "+" das so lösen kann.

    Kann mir jemand helfen?

    printf("%d%d", batchpathpre, batchpath);



  • Das glaube ich aber nicht.

    eher

    printf("%s%s",batchpathpre,batchpath);
    

    BR
    evilissimo



  • supertux schrieb:

    C strings sind Zeiger.

    quatsch!



  • net schrieb:

    supertux schrieb:

    C strings sind Zeiger.

    quatsch!

    ok, dann drück ich mich besser aus:

    C strings sind soz. eine Aneinanderreihung von char-Elemnten mit einem \0 als letztes Element. Man greift meistens auf das erste Element des Strings mit einem Zeiger. Wenn a und b Zeiger sind, dann ist a + b nicht definiert, denn das ist keine Addition der Variablen, auf die a und b zeigen. Zufrieden?



  • supertux schrieb:

    Zufrieden?

    das ist schon viel besser.


Anmelden zum Antworten