Problem mit strcat bei Array außerhalb einer Funktion



  • Moin, ich hab ein Problem bei meiner Hausarbeit, in der arabische Zahlen in ein dem römischen Symbolsystem ähnliches System übersetzt werden sollen.

    Im Endeffekt liegt das Problem darin, dass ich strcat nicht innehalb einer Funktion mit einem string-array via call-by-reference ausführen kann. (Ich weiß, dass es in c++ besseres gibt/geben soll, aber da ich einen Eingführungskurs besuche, darf ich z.B. auch noch keine Pointer benutzen...)

    Zur Veranschaulichung ein kleineres Programm mit nur dem Problem:

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

    int function(char &array, char letter1);

    int main()
    {
    char array[38]; //wird auch noch für weitere Funktionen in main benötigt
    function(array[38], 'A');

    system("PAUSE");
    return 0;
    }

    int function(char &array, char letter1){
    char secArray[8];
    secArray[0]=letter1;
    strcat(array, secArray);
    }

    Error: line 25 passing `char' to argument 1 of `strcat(char *, const char *)' lacks a cast

    1. Was genau bedeutet dieser Fehler? (Der Fehler liegt daran, dass array nicht innerhalb der Funktion als lokale Variable initialisiert wird, oder?)
    2. Was muss ich an 'array' bzw. 'secArray' ändern damit strcat bzw. strcpy funktioniert??
    3. Sieht jemand eine (komplett) andere Lösung, um 'secArray' an 'array' anzuhängen?

    Vielen Dank!! 🙂



  • #include <iostream.h>
    #include <stdlib.h>
    #include <string.h>
    
    int function(char &array, char letter1);
    
    int main()
    {
    char array[38]; //wird auch noch für weitere Funktionen in main benötigt
    function(array[38], 'A');
    
    system("PAUSE");
    return 0;
    }
    
    int function(char &array, char letter1){
    char secArray[8];
    secArray[0]=letter1;
    strcat(array, secArray);
    }
    
    Error: line 25 passing `char' to argument 1 of `strcat(char *, const char *)' lacks a cast
    


  • [EDIT] Sorry hab überlesen das du keine Zeiger benutzen darfst[/EDIT]

    Ohne Zeiger hast du aber mit strcat ein echtes Problem, da strcat nunmal Zeiger erwartet!

    Zu 1.
    Ich denke er will das du array in einen char * castest.

    strcat(static_cast<char *>(array), secArray);
    

    Zu 2.
    Siehe 3. oder frage dich selbst wieso du es dir mit char-arrays selbst schwer machst (oder wird das so in der Aufgabe verlangt)?!? :p

    Zu 3.
    Warum benutzt du nicht einfach strings???

    string str1 = "abc", str2="def";
    str1 += str2; // anhängen
    string str3 = str1 // kopieren
    

    Ich hoffe ich konnte dir ein bißchen weiterhelfen.



  • Ja, ganz vielen Dank!!!

    Werde noch mal versuchen es ohne strcat zu lösen, denn ich muss Arrays benutzen... 😞


Anmelden zum Antworten