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 schreibe

    printf("%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!!!!


Anmelden zum Antworten