zeichen aus string extrahieren???
-
danke für deine antwort.
aber ich möchte nicht den rest des textets behalten sondern das was ich wegschneideDies ist ein Text.
ies ist ein Text. = "D"
ist ein Text. = "Dies "
kann man dazu die fkt irgendwie umdrehen habs bisjetzt noch nicht geschaft
Gruß BigBoss
-
void strcut (char *dst, char *src, int start, int len) { strncpy(dst,src+start,len); dst[start+len]='\0'; }
-
vielen dank konfusius
das klapt soweit aber der hängt hinten an den string noch ein paar zeichen an wo ich keine ahung habe wo die herkommen!?#include <stdio.h> void strcut (char *dst, char *src, int start, int len) { strncpy(dst,src+start,len); dst[start+len]='\0'; } int main() { char *text = "Dies ist ein Text."; char buffer[100]; strcut(buffer,text,5,3); puts(buffer); return 0; }
ist╠╠╠╠╠
übergibt der automatisch noch irgendwelche zeiche?
k hab ich wegbekommen
lag andst[start+len]='\0';
muss ohne "start+" stehen sonst hat er zuviele Zeichen die er auffült
und noch eine frage kann ich das dst aus der fkt in der form
str = strcut(src, start, len);
übergeben?
oder geht das nur bei int werten?
thx BigBoss
-
@Konfusius: bist du dir bei deinem code so sicher?
ich korrigiere mal:void strcut (char *dst, char *src, int start, int len) { strncpy(dst, src+start, len); dst[len] = '\0'; }
-
Also ich würde das strncpy() ja durch ein memmove() ersetzen.
-
gesagt, getan
void strcut (char *dst, char *src, int start, int len) { memmove(dst, src+start, len); dst[len] = 0; }
ob man fuer sowas aber noch ne extra funktion braucht... ein gut gesetztes kommentar tut das gleiche.
-
C/C++ Code:
dst[start+len]='\0';muss ohne "start+" stehen sonst hat er zuviele Zeichen die er auffült
aber hat einer von euch noch ne idee wie ich die fkr in die form
str = strcut(src, start, len);
bringen kann?
bei int übergaben geht das
aber bei strings bekomme ich immer fehler
Gruß BB
-
strings sind keine ints. du kannst keine pointer auf strings zurueckgeben.
okay, kannst du schon, aber das solltest du nicht machen, so lange du keine ahnung von strings und malloc()/free() hast.
lebe einfach damit, dass du immer eine quelle und ein ziel angeben musst und beim ziel immer genug platz zum reinschreiben ist.
-
Es ginge mit
char *strcut(char *src, int start, int len) { static char dst[1024]; memmove(dst, src+start, len); dst[len] = 0; return dst; }
Was aber nicht wirklich toll ist.
-
feigling schrieb:
Was aber nicht wirklich toll ist.
weil nach jeder benutzung der string ueberschrieben ist und dank der festen groesse leicht probleme bei laengeren strings zustande kommen.
solche konstrukte verwendet man besser mit strcpy und einem check auf die groesse des strings. anderenfalls sind solche funktionen ein sicherheitsrisiko und/oder fuehren gerne mal zu abstuerzen.