回覆列表
  • 1 # 使用者6602652349876

    //修改了一點,注意看說明

    #include <stdio.h>

    #include <stdlib.h>

    struct stu

    {

    char name[10];

    int num;

    int age;

    char addr[15];

    }sa[3],sb[3],*pp,*qq; //建立結構體型別struct stu的同時,定義結構體陣列sa、sb,定義結構體指標變數 pp、qq。

    int main()

    {

    FILE *fp;

    char ch;

    int i;

    if((fp=fopen("D:\\學習\\C語言原始碼\\devC++\\第13章 檔案\\stu_list.txt","w"))==NULL) //以只寫的方式開啟檔案 ,沒有該檔案的情況下會建立該檔案

    {

    printf("Cannot open file,press any key to exit");

    getchar();

    exit(0);

    }

    printf("input data\n");

    pp=sa;

    for(i=0;i<3;i++,pp++)

    {

    scanf("%s%d%d%s",pp->name,&pp->num,&pp->age,pp->addr); //先用scanf給結構體的成員變數賦值

    //在下在這句多加幾個空格,作為輸入資料的分隔符,注意輸入的人名和地址中應該沒有空格,不然會出錯

    //或者檔案的輸入和輸出全部指定寬度

    fprintf(fp,"%s %d %d %s\n",pp->name,pp->num,pp->age,pp->addr); //然後用fprintf將結構體成員變數的值寫入fp所指向的檔案stu_list.txt中去

    }

    fclose(fp); //完成寫入檔案操作後,關閉檔案,使指標fp不再指向該檔案

    fp=fopen("D:\\學習\\C語言原始碼\\devC++\\第13章 檔案\\stu_list.txt","r"); //以只讀的方式開啟檔案

    qq=sb;

    printf("name\tnumber age addr\n");

    for(i=0;i<3;i++,qq++)

    {

    fscanf(fp,"%s%d%d%s",qq->name,&qq->num,&qq->age,qq->addr); //先用fscanf將fp所指向的檔案stu_list.txt中的值讀取到結構體成員變數中

    printf("%s\t%5d%3d%s\n",qq->name,qq->num,qq->age,qq->addr); //然後用printf輸出結構體變數的值

    }

    fclose(fp); //完成讀取檔案操作後,關閉檔案,使指標fp不再指向該檔案

    }

  • 中秋節和大豐收的關聯?
  • 蠶的一生經歷了哪四種形態?