gpt4 book ai didi

c - 在 OpenGL 中处理文件

转载 作者:行者123 更新时间:2023-11-30 17:29:02 25 4
gpt4 key购买 nike

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

这是我的结构:

struct graphi
{
int id;
int amplitude;
char function;
float frequency;
};

这是我的函数(f 是一个 FILE*):

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);
}

就像我说的,我可以绘制图形,我有功能,一切正常,我的问题是当我处理文件时,我正在处理二进制文件。

最佳答案

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

关于c - 在 OpenGL 中处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25828309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com