C 在OpenGL中使用文件

C 在OpenGL中使用文件,c,opengl,file-io,C,Opengl,File Io,我正在OpenGL中创建一个应用程序,用于显示正弦和余弦函数,一切正常,但现在我必须从文件中写入和读取数据,我知道如何使用它们,但当我运行应用程序时,它不起作用。我想把信息写入一个二进制文件,然后读取它。我知道怎么做,但我不知道为什么它不起作用 这是我的结构: struct graphi { int id; int amplitude; char function; float frequency; }; 这是我的函数f是一个文件*: 就像我说的,我可以画图形,

我正在OpenGL中创建一个应用程序,用于显示正弦和余弦函数,一切正常,但现在我必须从文件中写入和读取数据,我知道如何使用它们,但当我运行应用程序时,它不起作用。我想把信息写入一个二进制文件,然后读取它。我知道怎么做,但我不知道为什么它不起作用

这是我的结构:

struct graphi
{
    int id;
    int amplitude;
    char function;
    float frequency;
};
这是我的函数f是一个文件*:


就像我说的,我可以画图形,我有函数,一切都可以工作,我的问题是当我处理文件时,我处理的是二进制文件。

您似乎在将字符串读入函数中,当您包括空终止符时,这至少是2个字符。首先,你有未定义的行为。函数或者需要是一个大小合适的数组,如果需要任何类型的安全性,scanf语句需要有一个长度限制,或者可以为char分配=或枚举,在这种情况下可能更好。查看用于读取二进制文件的代码也会很有帮助。以使结构自然对齐的名义,Id也将浮点置于字符之前。

scanf%s,g.function;这不应该起作用。即使你的程序是基于OpenGL的,这个问题似乎与API没有任何关系。请在将来对您的问题进行分类时更加具体。
void menu(struct graphi g)
{
    int numGrap = 0;
    f = fopen("data.txt", "wb");    

    printf("How many graphics would you like to display?: ");
    scanf("%d", &numGrap);

    for(int i=0; i<numGrap; i++)
    {
        printf("-------------------------------Graphic %d: ", i+1);

        g.id=i;

        printf("\nEnter the amplitude: ");
        scanf("%d", &g.amplitude);

        printf("\nEnter the function, sin->'s' o cos->'c': ");
        scanf("%s", g.function);

        printf("\nEnter the frequency: ");
        scanf("%f", &g.frequency); 

        fseek(f, i * sizeof(g), SEEK_SET );
        fwrite(&g, sizeof(g), 1, f);

        printf("\n\n");
    }

    fclose(f);  
}