Teil eines Stringpointers ändern?!



  • Ich habe einen Pointer, der auf folgenden String zeigt:

    " 1.0 6.0 0.0"

    nun möchte ich den Block " 6.0" mit " 9.0" austauschen (Ich weiß in welcher Zeichenposition der Block beginnt und endet).
    Nur wie mache ich das?

    Weitere Frage: Wie kann ich den Inhalt des Pointers in ein Zeichen-array kopieren?

    😕
    Gruß
    Dominik



  • freakx0 schrieb:

    Ich habe einen Pointer, der auf folgenden String zeigt:
    " 1.0 6.0 0.0"
    nun möchte ich den Block " 6.0" mit " 9.0" austauschen (Ich weiß in welcher Zeichenposition der Block beginnt und endet).
    Nur wie mache ich das?

    so etwa:

    // für ein zeichen
    char save = *pointer+offset_zu_einem_zeichen;
    *pointer+offset_zu_einem_zeichen = *pointer+offset_zu_anderem_zeichen;
    *pointer+offset_zu_anderem_zeichen = save;
    

    freakx0 schrieb:

    Weitere Frage: Wie kann ich den Inhalt des Pointers in ein Zeichen-array kopieren?

    int s;
    for (s=0; s<anzahl_zeichen_die_du_kopieren_willst; s++)
      array[s] = *pointer++;
    


  • Schau dich mal nach strcpy(), strncpy() und memcpy() um. (gilt für beide Teilfragen).



  • komischer_string[5] = '9';
    

    und

    strncpy(array, komischer_text, anzahl_zeichen_die_du_kopieren_willst);
    

    kommen mir jetzt irgendwie einfacher vor 😃



  • vielen Dank für eure Antworten!

    nochmal so schaut meine Zeichenkette aus

    1           9           0           0           2
    

    den 2ten Block möchte ich ändern

    9
    

    strncpy hilft ja nur bedingt weiter, da ja nur die zeichen 0-X kopiert werden.

    Ich habs jetzt übergangsweise folgendermaßen gelöst. Jetzt leider nicht ideal (meiner Meinung nach)

    char tmp[200]; // enthaelt originalzeichenkette
    char tmp3[100];   
    char tmp4[100];   
    char tmp5[100];
    char tmp6[100];
    
    /* Kopie der Originaldaten */
    strcpy(tmpcpy1,tmp); 
    strcpy(tmpcpy2,tmp);
    
    strcpy(tmp4,split(tmp,0,12));
    strcpy(tmp5,split(tmpcpy1,24,strlen(tmpcpy2)+1));				
    strcat(tmp4,"        9123");
    strcat(tmp4,tmp5);
    

    Any ideas?

    gruß
    Dominik



  • Du mußt strncpy() ja nicht unbedignt einen Pointer auf den Array-Anfang mitgeben:

    char text[100] = "Hallo Welt!";
    printf("%s\n",text);//Hallo Welt!
    strncpy(text+6,"Echo",4);
    printf("%s\n",text);//Hallo Echo!
    


  • ohja 🙂
    einmal mehr vielen Dank.

    Aus meinem total schlechtem Code ist eine Zeile geworden 😃

    Problem gelöst :))

    strncpy(tmp+12,"           9",12);
    

Anmelden zum Antworten