1. 程式人生 > >fscanf噁心人??+csdn改字型

fscanf噁心人??+csdn改字型

作業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>