Was bedeutet dies ? (sscanf(line,"%f%*c%f%*c%f",&x,&y,&z); )
-
Hallo ersteinmal!
Ich habe in einem andern Beitrag diese Zeile gefunden und frage mich was hier eingelesen wird.
sscanf(line,"%f%*c%f%*c%f",&x,&y,&z);
Komme mit den '%*c' nicht klar wo für man das benötigt.
Gruß
JoeF
-
Einfach mal in die Hilfe des C/c++ Compiler schauen:
see Format Specifications.An asterisk (*) following the percent sign suppresses assignment of the next input field, which is interpreted as a field of the specified type. The field is scanned but not stored.
oder
Desweiteren schliesße ich mich Kingruedi an
-
Hab jetzt mal die %*c raus genommen und es gibt keinen Unterschied!
while ( fgets(line, sizeof(line)-1, read) ) { sscanf(line,"%s %s %d",x,y,&z); printf("%s %s %d\n",x,y,z); }
Dateiinhalt:
Mueller Andreas 21
Meier Joerg 28
Schulze Anita 27Also was für einen Vorteil soll mir das bringen?
Gruß
JoeF
P.S. Nochmal ein dickes Lob und Dankeschön für eure Mühen und für die schnelle Beantwortung.
-
Bei dir muss jetzt eine Blank stehen, andere whitespaces werden glaub ich ignoriert
stell dir mal folgendes vor
while ( fgets(line, sizeof(line)-1, read) ) { sscanf(line,"%10s %10s %d",x,y,&z); printf("%s %s %d\n",x,y,z); }
Dateiinhalt:
Mueller ;Andreas ; 21
Meier ;Joerg ;28
Schulze ;Anita ;27deine Lösung
"Mueller" ";Andreas" Fehlersscanf(line,"%s%*c%s%*c%d",x,y,&z);
Mueller Andreas 21
Meier Joerg 28
Schulze Anita 27da das ; als character geskippt wurde
P.S. Hab den Code nicht ausprobiert.
-
Okay das macht Sinn, hab jetzt also nur Glück gehabt mit meinem Bespiel.
Besser wäre es eh die einzelnen Daten nicht mir einem Blank zu trennen, sondern wie du es getan hast mit einem ; oder einem anderen Sonderzeichen.Ich seh schon hab noch viel zu lernen.
Besten Dank
JoeF
-
wegen dieses Verhaltens und dem nicht absturzsichern Verhalten xscanf.. Famile bei falscher Eingabe zerlege ich den Eingabe String meistens selbst und konvertiere mit der atof.. Famile oder strtol.. Familie
-
Danke für den Tip!