次のような形式のファイルを読み込んでいます。
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デバッガーを使用してバッファーに何があるかを確認すると、たとえば、sscanfが読み込まれていることがわかります\000:00:023
。何らかの理由\0
で、先頭にヌル文字、、を収集しています。テキストファイルを見ると、正しく読み込まれた他のすべての時間値と同じ形式であるように見えます。ヌル文字をときどき追加するのはなぜですか?そして、回避策はありますか?