Probleme mit Auslesen!!
-
fscanf erwartet als ersten Parameter den Stream. Also entweder du nimmst sscanf oder du ersetzt line durch stream.
Und was soll "%s" als Formatstring? Ich dachte fconf ist ein float.
-
ja aber wenn ich mit sscanf aus der zeile auslese, dann wird immer nur der 1 wert aus der zeile ausgelesen
steht jetzt in line '20.000 50.000' drin, dann wird, egal wieviel sscanf ich mache immer nur 20.000 ausgelesen.
kann man sich irgendwie merken an welcher stelle man ausgelesen hat?!?
-
Wenn du weisst, dass du 2 Werte einlesen willst, warum machst du das dann nicht einfach?
sscanf(line, "%f %f", &fconf1, &fconf2);
-
ist es möglich an denn letzten eingelesen wert in der line variable zu 'springen' ?
auch wenn line [200] ist aber nur 50 zeichen eingelesen worden sind möchte ich die letzte eingelesen zahl haben ( z.b. 4.44 )
-
weiß keiner wie man sich in einem string bewegt ?!
-
Du könntest zB durch den String gehen, und dir das letzte Whitespace Zeichen (isspace) merken. Der nachfolgende Teilstring ist dann der letzte Wert.
Oder du lässt sscanf in einer Schleife laufen, bis kein Wert mehr eingelesen wird. ZB
char line[] = "20.000 50.000 100.000"; //... float f; int i = 0, n; while (sscanf(&line[i], "%f%n", &f, &n) == 1) i += n; // f hat jetzt den letzten Wert der Zeile
-
hey es funktioniert..
aber was macht der befehle genau ?while (sscanf(&line[i], "%f%n", &f, &n) == 1) i += n;
thx
-
Befehle gibts nicht, das ist einfach 'ne kopfgesteuerte Schleife.
sscanf(&line[i], "%f%n", &f, &n) == 1
ist die Schleifenbedingung, dh solange der Ausdruck wahr ist, läuft auch die Schleife.
i += n;
wird entsprechend bei jedem Schleifendurchlauf ausgeführt.
&line[i]
liefert einen Zeiger auf ein Zeichen in line, welches durch i indexiert wird. Somit kannst du bestimmen, ab welcher Position sscanf zu lesen anfängt.
"%f%n" - %f liest ein float (in f) und %n speichert die bis dahin gelesenen Zeichen ab (in n).Wenn dir die Vorgehensweise immer noch nicht klar ist, dann geh einfach mal jeden Schleifendurchlauf gedanklich durch, und schreib dir auf, welche Werte jede Variable bei welchem Durchlauf hat.
-
hi!
die obrige schleife funktioniert einwandfrei. ich bräuchte jetzt aber eine gleiche schleife die aber z.b. jetzt die letzten 8 oder die letzten 4 einliest.....
kann mir wer einen tipp geben wie das geht ?!?thx
-
einfach genau diese schleife
char line[] = "20.000 50.000 100.000"; //... float f; int i = 0, n; while (sscanf(&line[i], "%f%n", &f, &n) == 1) i += n; // f hat jetzt den letzten Wert der Zeile
nur für 8 oder 4 werte......bitte um dringende hilfe
thx