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);