結構體變量以成員為基本單位操作。訪問語法:結構變量.成員名,該表達式類型與成員類型一致,可像普通變量一樣參與賦值、運算。
#include <stdio.h>
main() {
struct { // 定義結構變量
char name[8];
int age;
char sex[2];
char depart[20];
float wage1, wage2, wage3, wage4, wage5;
} a;
FILE *fp;
float wage;
char c = 'Y';
fp = fopen("wage.dat", "w"); // 創建只寫文件
while (c == 'Y' || c == 'y') {
printf("\nName: "); scanf("%s", a.name);
printf("Age: "); scanf("%d", &a.age); // 注意取址
printf("Sex: "); scanf("%s", a.sex);
printf("Dept: "); scanf("%s", a.depart);
printf("Wage1: "); scanf("%f", &a.wage1);
printf("Wage2: "); scanf("%f", &a.wage2);
printf("Wage3: "); scanf("%f", &a.wage3);
printf("Wage4: "); scanf("%f", &a.wage4);
printf("Wage5: "); scanf("%f", &a.wage5);
wage = a.wage1 + a.wage2 + a.wage3 + a.wage4 + a.wage5;
printf("The sum of wage is %6.2f\n", wage);
fprintf(fp, "%10s%4d%4s%30s%10.2f\n",
a.name, a.age, a.sex, a.depart, wage); // 寫入文件
while (1) {
printf("Continue? ");
c = getche();
if (c=='Y'||c=='y'||c=='N'||c=='n') break;
}
}
fclose(fp);
}
age、wage*)scanf 需取址 &;數組成員(name、sex、depart)本身即地址,無需 &。fprintf 格式化輸出到文件,字段寬度對齊便於後續處理。getche() 即時獲取字符,無需回車。