Я читаю в файле в формате, похожем на:
TIME, x, y, z
00:00:00.000 , 1, 2 , 3
00:00:00.001 , 2 , 3 , 4
и т. Д., И код, подобный следующему:
std::ifstream& istream;
char buffer[15];
double seconds, hours, mins; // initialised properly in real code
// to read in first column
istream.get(buffer, 14, ',');
int scanned = std::sscanf(buffer, "%d:%d:%lf", &hours, &mins, &seconds);
Большую часть времени он читает нормально в первом столбце. Однако иногда sscanf завершается ошибкой, и когда я проверяю, что находится в буфере с помощью отладчика Codegear, я вижу, что он прочитал, например, \000:00:023
. По какой-то причине он собирает нулевой символ, \0
, спереди. Когда я смотрю в текстовом файле, он выглядит в том же формате, что и все другие значения времени, которые были прочитаны правильно. Почему иногда добавляется нулевой символ? И есть ли работа вокруг?