2016-04-16 10 views
1

Gibt es eine Möglichkeit, ein HH: MM-Format aus einer Datei mit fscanf() zu lesen, und behandeln Sie es wie ein int? Die Datei hat folgendes Format:fscanf Stundenformat zu lesen

3 14:50 20.10 

Ist es möglich, so etwas wie fscanf(fp, "%d ... %f, &a, &b, &c); zu tun und b werden 1450 haben?

+2

einen Blick auf diese [Frage] Haben (http://stackoverflow.com/questions/20450333/fscanf-with-colon-delimited-data) – sjsam

Antwort

4

Ich fürchte, Sie können das nicht in einer Linie tun. Sie können jedoch:

fscanf(fp, "%d %d:%d %f", &a, &b1, &b2, &c); 
b = b1 * 100 + ((b1 > 0) * 2 - 1) * b2; // in case b1, b2 are the different sign. 
+0

funktioniert gut, solange 'b1 ',' b2' sind das gleiche Zeichen. Betrachte '-14: 50'. – chux

+0

@chux Aber ein "Stundenformat" enthält keine negativen Zahlen –

+0

Obwohl weniger üblich, werden "Stundenformate" auch verwendet, um negative Zeiten auszudrücken, insbesondere Zeitzonen-Offsets. [Beispiel] (https://en.wikipedia.org/wiki/Newfoundland_Time_Zone). Die direkte Anwendung dieser Antwort kann zu einem falschen Ergebnis führen. – chux