opengl — C ++ OBJ Parser — исключение первого шанса

Я пытаюсь создать программу на C ++, которая будет анализировать файл .obj и отображать модель, определенную в файле .obj, в OpenGL. До сих пор весь этот код должен был открывать файл .obj и помещать каждую вершину в вектор (вершины в файлах .obj определены в строке, начинающейся с «v»).

Мой полный код:

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

struct vec3{
float x;
float y;
float z;
};

void loadOBJ(const char * Path){

vector<vec3> Vertices;

FILE * OBJFile;
vec3 temp = vec3();
fopen_s(&OBJFile, Path, "r");
char lineHeader[128];

//set to true when there are no more lines in the OBJ file
bool ended = false;

while(!ended){
fscanf_s(OBJFile, "%s", lineHeader);

if(strcmp(lineHeader,"v") == 0){
fscanf_s(OBJFile, "%f %f %f\n", &temp.x, &temp.y, &temp.z);

printf("Point: %f %f %f\n", temp.x, temp.y, temp.z);

Vertices.push_back(temp);
}else if(lineHeader != NULL){
fscanf_s(OBJFile, "\n");
}
else{
ended = true;
}
}
}

int main(){
loadOBJ("example.obj");
cin.get();

return 0;
}

Проблема возникает с линией

     fscanf_s(OBJFile, "%s", lineHeader);

Если я прокомментирую эту строку, я не получу исключение первого шанса. Если я использую символ вместо строки, я также не получу исключение первого шанса.

0

Решение

Я настоятельно рекомендую использовать freed и НИКОГДА не использовать fsanf и его варианты.

-1

Другие решения


По вопросам рекламы [email protected]