String kopieren ab 2. Zeichen
-
Hallo!
Ich würde gerne wissen, ob das hier korrekt und sauber ist:
strval = strdup(text+1);
Ich möchte einen String kopieren, jedoch das erste Zeichen dabei nicht beachten.
Der Code funktioniert, ich habe nur Bedenken, auf einen Zeiger etwas draufzuaddieren... Darf ich das? Ich habe sichergestellt, dass der Text länger als ein Zeichen ist.Besten Dank,
nevermore
-
strval = &text[1];
Das wäre dann Ansi.
-
Ja, so macht man das.
@ansiC
das kopiert aber nicht.
-
rüdiger schrieb:
Ja, so macht man das.
@ansiC
das kopiert aber nicht.Kopieren tut aber die ANSI-Funktion strcpy(). Kann er auch nehmen, muss er dann eben ein wenig frickeln. Gehört alles zum Handwerkzeug der Programmierung, denke ich!
-
Schonmal danke für die Antworten.
Habe ich das richtig verstanden: strdup ist KEIN Ansi-C?
-
Habe ich das richtig verstanden: strdup ist KEIN Ansi-C?
ja das sollte stimmen
-
ich poste mal die "ANSI-C" Alternative
strval=malloc(strlen(text)); // +1 nicht, weil 1 Zeichen wegfällt assert(strval); // Der vollständigkeit halber strncpy(strval, text + 1, strlen(text)); strval[strlen(text)-1]=0;
Ich hoffe, dass ich jetzt keinen Fehler drin habe
-
Super danke
Wenn ich das richtig sehe, gehört strdup zum POSIX Standard?
Ich werde dann bei der strdup-Lösung bleiben - ich war nur verwundert dass strdup kein ANSI-C ist
-
char *ohne_erstes_zeichen (char *string) { return string+1; } char *kopie_ohne_erstes_zeichen (char *string) { char *ptr = (char*)malloc (strlen(string)); if (ptr == NULL) return NULL; return strcpy (ptr, ohne_erstes_zeichen(string)); }