PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Leerzeichenerkennung nach Einlesen aus Datei



martin082
23-06-2006, 12:33
Hallo, ich bin garde dabei ein kleines Programm in C zu schreiben. Es hat folgende Aufgabe:

Aus einer datei werden Zahlen eingelesen. Dies geschieht über fopen und bereitet keine großen Probleme. In der Datei sind mehrere Zahlen untergebracht udn durch Leerzeichen voneinander getrennt. Ich habe nach dem einlesen der Datei den gesamten "Text" in einem char-Feld stream geschrieben. Ich möchte aus dem gesamten stream jetzt die einzelnen Zahlen herausbekommen. Hat dafür jemand eine Lösung? mfg

peschmae
24-06-2006, 10:38
Du könntest z.B. einen Pointer auf den ersten Char erstellen, dann mit sscaf die erste Zahl auslesen, dann den Pointer inkrementieren bis du beim ersten Leerzeichen vorbeigekommen bist, etc

MfG Peschmä

panzi
24-06-2006, 19:14
Tipp:
strtol (http://unixhelp.ed.ac.uk/CGI/man-cgi?strtol+3), strtod (http://unixhelp.ed.ac.uk/CGI/man-cgi?strtod), sscanf (http://unixhelp.ed.ac.uk/CGI/man-cgi?sscanf), etc.

jeebee
25-06-2006, 18:07
strtok (http://seth.positivism.org/man.cgi/3/strtok) ist dein freund...

/edit: allerdings wird von der Verwendung von strtok abgeraten, wie ich gerade selbst in der manpage gelesen habe. Ich habs allerdings für mich selber bisher ohne Probleme verwendet.

panzi
25-06-2006, 21:32
strtok (http://seth.positivism.org/man.cgi/3/strtok) ist dein freund...

/edit: allerdings wird von der Verwendung von strtok abgeraten, wie ich gerade selbst in der manpage gelesen habe. Ich habs allerdings für mich selber bisher ohne Probleme verwendet.
strtok ist crappy. ich mags nicht und es verleitet zur falschen verwendung.

martin082
26-06-2006, 13:14
Hey danke erstmal für die Antworten. Ich habs aber jetzt einfach mit einer Abfrage gemacht:

if(stream[i] == 32)
32 steht im ASCII Code für ein Leerzeichen. Klappt so super.

peschmae
26-06-2006, 13:46
' ' wäre sonst auch der Ascii-Code für Leerzeichen. Dann siehst du auch später noch was das ist und musst nicht raten ;)

MfG Peschmä, der sich vor einer Woche gewundert hat als ihm so eine Lookup-Tabelle unterkam voller unverständlicher Zahlen - waren eigentlich alles Ascii-Codes die man besser anders hingeschrieben hätte

jeebee
26-06-2006, 13:51
strtok ist crappy. ich mags nicht und es verleitet zur falschen verwendung.
wieso crappy? ich hatte bisher - wie gesagt - keine Probleme. Vielleicht kannst du mich ja aufklaeren. Ach ja: die Verwendung ist ein bisschen unorthodox, aber bisher hatte ich keine Muehe es richtig anzuwenden.

MfG jeebee

PS: nachdem ich aber nun in der man-page gelesen habe, dass man es nicht verwenden sollte, werd ich mir wohl selbst was aehnliches tippen. ;-)

panzi
27-06-2006, 23:15
wieso crappy? ich hatte bisher - wie gesagt - keine Probleme. Vielleicht kannst du mich ja aufklaeren. Ach ja: die Verwendung ist ein bisschen unorthodox, aber bisher hatte ich keine Muehe es richtig anzuwenden.

MfG jeebee

PS: nachdem ich aber nun in der man-page gelesen habe, dass man es nicht verwenden sollte, werd ich mir wohl selbst was aehnliches tippen. ;-)
naja, die static variable in der funktion empfinde ich als hack. sowas sollte man sich anders merken. führt nur zur verwirrungen so macht es unmöglich, 2 strings paralell (bzw. abwechselnd paralell) zu tokenizen.

jeebee
28-06-2006, 11:59
ok, stimmt; wenn ich die Zeit finde werd ich mir wohl was selbst ausdenken, war mir halt in dem Projekt wo ich die Funktion gebraucht habe nicht so wichtig, 2 Strings abwechslungsweise zu tokenizen.