首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言結構體變量使用與文件操作綜合實例

     編輯:關於C語言

結構體成員訪問

結構體變量通過「變量名.成員名」訪問成員,該表達式類型即為成員類型,可像普通變量一樣賦值、運算、輸入輸出。

綜合實例:員工工資錄入與文件存儲

#include <stdio.h>

int 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); // 修正:原代碼誤用 &a.wage

        printf("Sex: ");
        scanf("%s", a.sex); // 修正:原代碼誤用 %d

        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);
    return 0;
}

代碼修正說明

  • 原代碼 scanf("%d", &a.wage) → 修正為 &a.age
  • 原代碼 scanf("%d", a.sex) → 修正為 %s 並去掉 &(數組名即地址)
  • 增加 return 0; 與標準 int main()

關鍵技術點

  • 結構體變量整體賦值:b = a;(ANSI C 支持同類型結構體直接賦值)
  • 文件操作:fopen/fprintf/fclose
  • 格式化輸出寬度控制:%10s %4d 等
  • 交互式循環輸入與用戶確認機制

此例展示了結構體作為數據記錄載體,配合文件 I/O 實現持久化存儲的典型模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved