Я пытаюсь прочитать из файла, который имеет формат:
ID: x y z ...... other crap
Первая строка выглядит следующим образом:
0: 0.82 1.4133 1.89 0.255 0.1563 armTexture.jpg 0.340 0.241 0.01389
Мне нужны только числа с плавающей запятой XYZ,остальная часть линии - мусор. Мой код в настоящее время выглядит следующим образом:
int i;
char buffer[2];
float x, y, z;
FILE* vertFile = fopen(fileName, "r"); //open file
fscanf(vertFile, "%i", &i); //skips the ID number
fscanf(vertFile, "%[^f]", buffer); //skip anything that is not a float (skips the : and white space before xyz)
//get vert data
vert vertice = { 0, 0, 0 };
fscanf(vertFile, "%f", &x);
fscanf(vertFile, "%f", &y);
fscanf(vertFile, "%f", &z);
fclose(vertFile);
Он был немного изменен для отладки (первоначально первые два scanfs * использовали для игнорирования ввода).
Когда я запускаю это, x,у, г не меняются. Если я сделаю это
int result = fscanf(vertFile, "%f", &x);
, то результат будет равен 0, что, как мне кажется, говорит мне, что он вообще не распознает числа как числа с плавающей точкой? Я попытался переключить xyz на удвоения и использовать% lf, но это тоже не сработало.
Что я мог сделать не так?