fscanf噁心人??+csdn改字型
阿新 • • 發佈:2019-01-06
作業9-75:
P309-4.(3)插入成績並儲存。對排序後的資料再插入一個學生的成績,將原有資料和計算出的平均分數儲存在磁碟檔案sort2.txt中。
student.txt
lj,2.000000,3.000000,5.000000,5
sj,23.000000,5.000000,3.000000,5
ok,23.000000,5.000000,4.000000,6
nk,2.000000,3.000000,5.000000,2
iu,2.000000,3.000000,5.000000,6
10
10
3
3
3
#include<stdio.h>
struct student{
char name[20];
float score[3];
int num;
};
void cmp(int [],int);
int main()
{
struct student stu[6];
int i,avg[6];
FILE *fp=fopen("student.txt","r");
for(i=0;i<5;i++){
/*坑爹的地方 %[^,]讀取非','的字串讓後再用%*c把逗號讀取掉*/fscanf(fp,"%[^,]%*c%f,%f,%f,%d%*c",stu[i].name,&stu[i].score[0],&stu[i].score[1],
&stu[i].score[2],&stu[i].num);
}
for(i=0;i<5 ;i++){
fscanf(fp,"%d\n",&avg[i]);
}
fclose(fp);
printf("please input new data!\n");
i=5;
scanf("%s%f%f%f%d",stu[i].name,&stu[i].score[0],&stu[i].score[1],
&stu[i].score[2],&stu[i].num);
avg[i]=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
cmp(stu,6);
fp= fopen("sort2.txt","w");
for(i=0;i<6;i++){
fprintf(fp,"%s%f%f%f%d",stu[i].name,stu[i].score[0],stu[i].score[1],
stu[i].score[2],stu[i].num);
fprintf(fp,"\n");
}
for(i=0;i<6;i++){
fprintf(fp,"%d\n",avg[i]);
}
fclose(fp);
return 0;
}
void cmp(int x[],int y){
int i,j,t;
for(i=2;i<=y;i++)
for(j=0;j<=y-i;j++)
{
if(x[j]<x[j+1]){
t=x[j];
x[j]=x[j+1];
x[j+1]=t;
}
}
}
解決這個問題參考了https://blog.csdn.net/jeffasd/article/details/80705487
還有這個連結的回答
https://zhidao.baidu.com/question/1765738567060121660.html
這篇部落格非常全面的介紹了scanf的使用例如%[^,]是課本沒有的,我佛了
順便記錄一下csdn部落格如何改變字型型別和大小顏色的語言
參考了https://blog.csdn.net/qq_38437505/article/details/78575161
我是黑體字
我是微軟雅黑
我是華文彩雲
color=#0099ff size=72 face=“黑體”
color=#00ffff
color=gray
> <font face="黑體">我是黑體字</font>
<font face="微軟雅黑">我是微軟雅黑</font>
<font face="STCAIYUN">我是華文彩雲</font>
<font color=#0099ff size=7 face="黑體">color=#0099ff size=72 face="黑體"</font>
<font color=#00ffff size=72>color=#00ffff</font>
<font color=gray size=72>color=gray</font>