2016-04-16 3 views
1

Есть ли способ прочитать формат HH: MM из файла с помощью fscanf() и рассматривать его как int? Файл имеет следующий формат:fscanf читать формат часов

3 14:50 20.10 

Можно ли сделать что-то вроде fscanf(fp, "%d ... %f, &a, &b, &c); и b будет 1450?

+2

Посмотрите на этот вопрос [] (http://stackoverflow.com/questions/20450333/fscanf-with-colon-delimited-data) – sjsam

ответ

4

Боюсь, вы не можете сделать это в очереди. Тем не менее, вы можете:

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

работает отлично до тех пор, как 'b1 ',' b2' - это один и тот же знак. Рассмотрим '-14: 50'. – chux

+0

@chux Но «формат часа» не содержит отрицательных чисел. –

+0

Хотя менее распространены, «часовые форматы» используются для выражения отрицательных времен, особенно для смещения часового пояса. [Пример] (https://en.wikipedia.org/wiki/Newfoundland_Time_Zone). Прямое применение этого ответа может привести к некорректному результату. – chux

Смежные вопросы