我需要编写一个C程序,该程序的 struct 为"contemant",其中包含一些参赛者的数据和以下子程序:
- 从键盘上读取参赛者数据的子程序.
- 将数据写入二进制文件的子程序.
- 在控制台中显示所有参赛者及其数据的子程序.
- 一个子程序,它在文本文件中显示所有10个任务的基本分数为30,特殊分数为50,并获得"1"(0和1是唯一选项)的所有参赛者.
我成功地完成了前三个子程序,但似乎在第四个子程序上有问题.我打开了二进制文件和文本1,然后try 从文件中读取参赛者,直到没有其他参赛者,并查看所有10个任务的基本分数是否为30、特殊分数是否为50和"1",如果是这样的话,我try 在名为"raport.txt"的文件中显示每个参赛者的姓名,但我没有任何输出. 下面是我的 struct 和我的第四个子程序:
typedef struct contestants {
int marca;
char special;
char name[30];
int category;
char basepoints;
char elem[10];
};
void raport()
{
FILE* f;
FILE* g;
fopen_s(&g, "raport.txt", "w");
fopen_s(&f, "contestants.dat", "rb");
contestants a;
while (fread(&a, sizeof(contestants), 1, f) == 1)
{
int ok = 1;
if (a.marca != 0 && a.basepoints == 30 && a.special == 50)
{
for (int i = 0; i < 10; i++)
{
if (a.elem[i] == 0)
{
ok = 0;
break;
}
}
}
if (ok == 1)
{
fprintf_s(g, "%s\n", a.name);
}
}
fclose(f);
fclose(g);
}