Teilstring in einem Text suchen
-
Hi @ all
ich will einen teilstring aus einem text herausschreiben.
die datei schaut in etwa so aus:
101011010110101010110101
011110011101101001011011
101100001110101011101010
...jetzt will ich zeichen 3 - zeichen 10 herausschreiben (oder in eine neue variable speichern.)
das kann ich ja machen indem ich einfach schreibeprintf("%c%c%c%c...",inpline[3],inpline[4],inpline[5],...);
aber das schaut ja ziemlich dämlich aus! wie kann ich das denn schneller und leichter realisieren?
-
Einmal haben die printf()-Formate auch die Möglichkeit, die Maximallänge anzugeben:
printf("%7s",inpline+3); //wenn du willst, sogar dynamisch: printf("%*s",len,inpline+start);//eventuell mit vertauschten Parametern
Außerdem könntest du, wenn du mit den Daten weiterarbeiten willst, sie auch per man: strncpy() in ein unabhängiges Array kopieren (Null-Teminator nicht vergessen).
-
also bei dem printf("%7s",inpline+3); schreibt er mir ja nur die zeile raus.
ich brauch ja aber nur die 7 speziellen werte.
mit strcpy hab ich das versucht aber weiss nicht, wie ich da dann die 7 zeichen mitten in dem string rauskopiere
aber so wäre es natürlich die optimale lösung.
-
Du musst auch den Null-terminator reinmachen, z.B.
char string_temp[9]; strcpy(string_temp, inplane+2); string_temp[8] = '\0';
-
manu1984 schrieb:
also bei dem printf("%7s",inpline+3); schreibt er mir ja nur die zeile raus.
ich brauch ja aber nur die 7 speziellen werte.Sorry, kleiner Fehler "printf("%.7s",inpline+3);" gibt die Maximallänge der Stringausgabe an (und das inpline+3 bewirkt, daß er die ersten Zeichen überspringt).
mit strcpy hab ich das versucht aber weiss nicht, wie ich da dann die 7 zeichen mitten in dem string rauskopiere
ich sagte strncpy() - dort kannst du als zusätzlichen Parameter die Maximallänge des benötigten Teilstrings angeben (auf der Manual-Seite, die ich dir verlinkt habe, sind auch ein paar Beispiele dafür).
-
THX!!!
also ich habe es jetzt auf die schnelle art und weise gemacht mit
"printf("%.7s",inpline+3);"
das klappt prima. danke nochmal!!!!