写一个歌手评分系统,打开文件之后,将数据fprintf和fscanf,数据正常录入,但是文件中末尾出现一堆“屯”(开发环境是vc6.0)部分代码如下:
int main()
{
int a,b,d;
//a代表要进行的某个操作;b为需要录入的选手的人数;d为需要追加的选手的人数
int n,i; //n为选手编号
int m; //m为追加选手数据后的选手人数
FILE *fp;
fp=fopen("Campus Singer Grand Prix scoring system.txt","wt+");
//“wt+”读写打开或建立一个文本文件,允许读写
//判断文件是否打开失败
if(fp==NULL)
{
printf("文件打开失败!\n");
exit(0); //打开失败则退出程序
}else{
printf("打开成功!\n");
}
printf("*********************************************************************\n");
printf("***************欢迎进入校园歌手大奖赛评选系统***************\n");
printf("*********************************************************************\n");
printf("* 该系统有如下六个操作: *\n");
printf("* (1)输入选手数据; *\n");
printf("* (2)评委(五位)打分(请保留小数点后一位); *\n");
printf("* (3)成绩排序(按平均分); *\n");
printf("* (4)数据查询; *\n");
printf("* (5)追加歌手数据; *\n");
printf("* (6)写入数据文件; *\n");
printf("* (7)系统退出。 *\n");
printf("***********************************************************************\n");
8 printf("**********************************************************************\n");
while(1)
{
printf("请选择你想要的操作(1~7):");
scanf("%d",&a);
printf("\n\n\n");
switch(a)
{
case 1:
printf("你选择的操作是:(1)输入选手数据\n");
printf("请选择你要输入的选手的个数:");
scanf("%d",&b);
Singer_data(b);
printf("\n-------------------------------------\n");
break;
case 2:
printf("你选择的操作是:(2)评委(五位)打分(请保留小数点后一位)\n");
printf("请输入选手人数:");
scanf("%d",&b);
printf("满分为十分,请打分\n");
Singer_score(b);
printf("\n---------------------------------------------------------\n");
break;
case 3:
printf("你选择的操作是:(3)成绩排序(按平均分)\n");
printf("请输入选手人数:");
scanf("%d",&b);
Singer_result(b);
sort(b);
printf("\n-----------------------------------------\n");
break;
case 4:
printf("你选择的操作是:(4)数据查询\n");
printf("请输入你想查找的选手的编号:");
scanf("%d",&n);
find(n);
printf("\n----------------------------\n");
break;
case 5:
printf("你选择的操作是:(5)追加歌手数据\n");
printf("请输入已录入的选手的人数:");
scanf("%d",&b);
printf("请输入需要追加的选手的人数:");
scanf("%d",&d);
m=b+d;
addition(b,d);
printf("将进行自动排序----\n");
Singer_result(m);
sort(m);
printf("\n----------------------------------\n");
break;
case 6:
printf("你选择的操作是:(6)写入数据文件\n");
printf("请输入选手人数:");
scanf("%d",&b);
//判断文件是否打开失败
if((fp=fopen("Campus Singer Grand Prix scoring system.txt","wt+"))==NULL)
{
printf("文件打开失败!\n");
exit(0); //打开失败则退出程序
}else{
printf("打开成功!\n");
for(i=1;i<=b;i++) //格式化输出
{
fprintf(fp,"num:%d\t\t",Singer[i].num);
fprintf(fp,"name:%s\t\t",Singer[i].name);
fprintf(fp,"sum(总分):%5.2f\t",Singer[i].sum);
fprintf(fp,"result(最终成绩):%5.2f\t",Singer[i].result);
fprintf(fp,"sort:%d\n",Singer[i].sort);
}
for(i=1;i<=b;i++) //格式化输入
{
fscanf(fp,"%d",&Singer[i].num);
fscanf(fp,"%s",Singer[i].name);
fscanf(fp,"%f",&Singer[i].sum);
fscanf(fp,"%f",&Singer[i].result);
fscanf(fp,"%d",&Singer[i].sort);
}
printf("写入完成!\n");
}
fclose(fp);
printf("写入完成!\n");
printf("-------------------------------------\n");
break;
case 7:
exit(0);
default:
printf("输入错误,请重试!\n");
}
}
fclose(fp);
system("pause");
}