n-tes Zeichen an char Array anhängen



  • Guten Tag,

    ich bin etwas verzweifelt und hoffe dass mir hier geholfen werden kann.
    ich möchte an ein char array das n-te zeichen eines anderen char arrays anhängen.

    kann mir jemand sagen wie das geht?
    ich weiß nur wie man ganze arrays an ein anderes anhängt.

    danke für alle antworten!



  • Kein Grund zu verzweifeln. Wir helfen gerne. (Wenn Du mitarbeitest...)

    Zeig mal was Du bisher hast. Sonst haben wir ja keine Arbeitsgrundlage.
    Und poste jetzt bitte nicht die Aufgabe sondern Deinen bisherigen Code!



  • Danke dass du mir versuchst zu helfen. Da das ganze Teil eines sehr großen ganzen ist würde es wohl keinen interessieren den kompletten Code zu sehen. Daher hier mein Ansatz dazu.

    void funktion(char  in, int n, char  out) {
    
        int m = 0, o = 0;
    
        do {
            m = m + o;
            do {
                strncat(out, in[m]);
                m = m + n;
            } while (m < sizeof(in) - 1);
            o++;
            m = 0;
        } while (o < n);
    
    }
    

    Die Funktion wird mit beliebigen char Arrays und beliebigem positiven n gefüttert.
    Leider funktioniert der Code nicht.



  • char ist ein einzelner Buchstabe (character), also 'a', 'b' oder so. funktion() müsste wenn schon auf char* arbeiten - also C-Strings.

    Was soll denn passieren?

    #include <string.h>
    #include <assert.h>
    
    void function(const char *src, int n, char *dst){
      // Magie!
      // haengt den nten Buchstaben von src an dst
      // terminiert dst neu mit '\0'
    }
    
    int main(void) {
      const char *src = "1234";
      char dst[5] = "432";
      function(src, 0, dst);// haengt den "nullten" Buchstaben von src an dst
      assert(strcmp(dst, "4321")==0);
    }
    


  • theSariel schrieb:

    Die Funktion wird mit beliebigen char Arrays und beliebigem positiven n gefüttert.

    Nein, wird sie nicht!. Ein char ist etwas anderes als ein char*

    In C ist ein String ein Char-Array. Du übergibst an deine Funktion aber nur jeweils ein char (einzelnes Zeichen).

    strncat möchte zwei Zeiger auf char haben (also char*)
    Selbst wenn in ein char* wäre (was es nicht ist) wäre in[m] wieder ein einzelnes Zeichen. Geht auch nicht.

    sizeof(in) liefert dir in keinem Fall das von dir gewünschte.
    Im Augenblick liefert es 1, da sizeof(char) per Definition 1 ist.
    Wäre in ein char* würdest du 4 (oder 😎 erhalten, je nachdem wieviel BYte ein Pointer verbraucht.
    Aber in gar keinem Fall würdest du die Größe vom übergebenen Array bekommen.

    theSariel schrieb:

    Leider funktioniert der Code nicht.

    Das hört sich an, als ob der Compiler klaglos übersetzt. Das tut er sicher nicht.
    Er gibt zumindest reichlich Warnungen aus.



  • Wer o oder O als Variablenname nimmt gehört gesteinigt ...


Anmelden zum Antworten