Sub-String auslesen in C (ohne ++ oder gar #)

Dennis Wronka

Soulcollector
Hi Leute,

ich hab auch mal wieder ein Problem, und zwar, dass ich grad keine vernuenftige Referenz fuer das ganz normale C finde und ich damit zuletzt vor 1-2 Ewigkeiten gearbeitet hab.

Zu meinem Vorhaben: Ich moechte eine bestimmte Anzahl an Zeichen aus dem Char-Array data[81920] lesen. Und das nicht vom Anfang, sondern auch von einer bestimmten Stelle. Dies soll dann wiederum in einem Char-Array oder meinetwegen auch einem String-Pointer landen.

Warum will ich das machen: Der eMail-Scanner KlamMail ist meiner Meinung nach nicht ganz das Gelbe vom Ei. Daher wollte ich nun selbst einen eMail-Scanner implementieren. Mit Hilfe der LibClamAV hab ich es auch schon hinbekommen dass die Mail ueber STDIN an das Programm uebergeben werden kann und die Mail wird auch erfolgreich gescannt. Evtl. vorhandene Viren werden auch erkannt.

Ja, ich find es auch etwas schraeg, dass ich einen Viren-Scanner implementieren aber nicht mit Strings umgehen kann. :) Aber ich hatte dafuer einfach bessere Doku zur Hand.

Also, bitte keine Umgebungs- oder Betriebssystem-spezifischen Antworten, da diese mir wahrscheinlich nichts bringen werden.
Ich werd zuhause mal schauen ob ich dort auf die in KDevelop enthaltene Dokumentation zugreifen kann, denn die will hier im Buero nicht.
 
Hi.

Also vermutlich verstehe ich dich jetzt nicht so ganz, aber ist dein Problem jetzt das Finden der Stelle oder das Kopieren von x Zeichen ab der Stelle die schon gefunden ist?

Evlt. helfen dir ja die Funktionen
Code:
char *strstr(const char *haystack, const char *needle);
char *strncpy(char *dest, const char *src, size_t n);
weiter?!

Dokumentation zu den Funktionen findest du ganz leicht bei Google.

Gruß
 
strstr() hab ich schon gefunden und auch erfolgreich eingebaut.
strncpy() hatte ich auch schon gefunden, ich bin nur etwas verwirrt, dass nur ein INT erwartet wird.
Ich muss doch eigentlich 2 INTs angeben koennen, oder? Einen Start-Wert und dann eben die Laenge.
Das ist es was mir zu schaffen macht.
 
Nein, das Kopieren fängt ja am Anfang vom String an. Du mußt also in deinem großen String erstmal den Anfang des Substrings suchen (z.B. mit strstr) und wenn du was gefunden hast kannst du dann von da an beginnend einen Substring mit einer max. Länge kopieren.

Wenn du noch einen Offset hast kannst du den einfach zum Start des Substrings dazuaddieren:
Code:
strncpy(kopie, substr + 5, 32);

Gruß
 
So macht man das also in C. :)
Vielen Dank fuer die Info, hat mir sehr geholfen.
Werde mich auf jeden Fall in der naechsten Zeit mal wieder oefter mit C beschaeftigen, hab ja nun ein paar Jahre nichts mehr damit gemacht.
 
Zurück