Wie Sie wissen, neue-Zeile-Zeichen in fscanf?
Wie zu wissen, dass fscanf erreicht eine neue Zeile \n in eine Datei.
Ich habe mit meinen eigenen Funktionen zu tun. Ich weiß, ich kann die Verwendung der Funktion fgets und dann sscanf für meine gewünschten Muster. Aber meine Anforderungen sind nicht stabil, einige Male, möchte ich, um TAB-getrennte strings, einige Male, neue-Zeile getrennte Zeichenfolgen und einige Male, die einige spezielle Zeichen getrennte Zeichenfolgen. Also, wenn es irgendeinen Weg gibt, zu wissen, der neuen Linie von fscanf bitte helfen Sie mir. Oder sonst irgendwelche alternativen sind auch willkommen.
Vielen Dank im Voraus.
InformationsquelleAutor Enjoy coding | 2009-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
ist dieselbe Menge von fgets(buffer, 42, Bach). Sie können kein Ersatz für die 42 von * geben Sie die Länge des Puffers in das argument (wie Sie tun können, in printf), seine Bedeutung ist zum unterdrücken der Zuordnung. So
Lesen bis zu (und inklusive) dem nächsten end-of-line-Zeichen.
Jeder umwandlungsspezifikator andere als [, c-und n-starten Sie durch überspringen von Leerzeichen.
Ich erinnerte mich, über die Unterdrückung Zeichen direkt nach dem Absenden und dann bearbeitet meine post. Ich würde nicht mit \r im fscanf. Entweder Sie tun binären Eingang dann überlegungen über die Linie enden würde ungewöhnlich sein, oder man tut Texteingabe, und die CR-LF-paar zugeordnet ist \n von der Laufzeit.
Guter Punkt, früher habe ich immer die \r sowieso ohne darüber nachzudenken, wie text-Eingabe-Modus bereits erledigt.
InformationsquelleAutor AProgrammer
Kernighan und Pike in dem ausgezeichneten Buch 'Die Praxis der Programmierung' zeigen, wie
sprintf()
zum erstellen einer entsprechenden Formatbezeichner einschließlich der Länge, die (ähnlich wie die Beispiele in der Antwort von AProgrammer), und verwenden Sie dann, dass in dem Aufrufscanf()
. Auf diese Weise können Sie Steuern auch die Separatoren. Bedenken über die 'Ineffizienz' dieses Ansatzes sind wahrscheinlich falsch - die alternativen sind schwieriger zu bekommen Recht.Sagte, dass ich die meisten der Regel verwenden Sie nicht die
scanf()
Familie von Funktionen zur Datei-I/O; bekomme ich die Daten in einen string mit einer Art von 'line' routine, und verwenden Sie dann diesscanf()
Familie von Funktionen, um es zu teilen oder weitere spezialisierte parsing-code.InformationsquelleAutor Jonathan Leffler