C++ Obj-解析器-第一机会例外

C++ Obj-解析器-第一机会例外,c++,opengl,first-chance-exception,C++,Opengl,First Chance Exception,我试图创建一个C++程序,它将解析.Obf文件,并在opengl中渲染.Obf文件中定义的模型。到目前为止,所有这些代码应该做的就是打开一个.obj文件并将每个顶点放入一个向量中。obj文件中的顶点定义在一行中,以v开头 我的全部代码是: #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; struct v

我试图创建一个C++程序,它将解析.Obf文件,并在opengl中渲染.Obf文件中定义的模型。到目前为止,所有这些代码应该做的就是打开一个.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;
}

如果我把这一行注释掉,我不会得到第一次机会的例外。如果我使用char而不是字符串,我也不会得到第一次机会异常。

我强烈建议使用freed,而不要使用fsanf及其变体。

在调试器中单独获得第一次机会异常没有什么错。也就是说,U的功能,所以。。。fscanf_sOBJFile,%s,lineHeader,sizeoflineHeader/sizeofchar;'如果我使用字符而不是字符串“你到底是什么意思?您的意思是在尝试将fscanfs应用于std::string或简单的单字符变量参数时失败了吗?
     fscanf_s(OBJFile, "%s", lineHeader);