# 程式設計(0523) ## 班級 學號 姓名 ### 循序檔的處理 1. 利用電腦亂數建立文字檔案(fwrite.c),列印程式碼及執行截圖。 ```c= #include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 int main() { srand(time(NULL)); int i, x; FILE * inf; inf = fopen("stu.txt", "w"); for (i = 0; i < N; i++) { x = rand() % 101; printf("%2d: %3d\n", i, x); fprintf(inf, "%d %d\n", i, x); } fclose(inf); return 0; } ``` 2. 讀取上面的文字檔案(fread.c),列印程式碼及執行截圖。 ```c= #include <stdio.h> int main() { int i, x; FILE * inf; inf = fopen("stu.txt", "r"); while (fscanf(inf, "%d %d", &i, &x) != EOF) { printf("%2d: %3d\n", i, x); } fclose(inf); return 0; } ``` 3. 檔案處理系統(CRUD),完成下列五個函數。資料檔(stu.txt)格式如下,列印程式碼及執行截圖。 | No | Score | | -: | ----: | | 1 | 85 | | 2 | 50 | | 3 | 90 | | 4 | 85 | ```c= #include <stdio.h> char menu(); void appendRec(); void selectRec(); void updateRec(); void deleteRec(); int main() { char c; do { c = menu(); switch (c) { case 'C': appendRec(); break; case 'R': selectRec(); break; case 'U': updateRec(); break; case 'D': deleteRec(); break; } } while (c!='Q'); return 0; } char menu() { fflush(stdin); char c; printf("Enter (C) (R) (U) (D) (Q):"); scanf("%c", &c); return c; } void appendRec(){ FILE *fptr; int no, score; fptr = fopen("stu.txt","a"); printf("Enter No.:"); scanf("%d", &no); printf("Enter Score:"); scanf("%d", &score); fprintf(fptr, "%d %d\n", no, score); fclose(fptr); } void selectRec(){ int n; printf("Enter No.:"); scanf("%d", &n); FILE *fptr; int no, score; fptr = fopen("stu.txt","r"); while (fscanf(fptr, "%d %d", &no, &score) != EOF) { if (no == n){ printf("Score: %d\n", score); break; } } fclose(fptr); } void updateRec(){ int n, s; printf("Enter No.:"); scanf("%d", &n); printf("Enter Score:"); scanf("%d", &s); FILE *fptr, *ftmp; int no, score; fptr = fopen("stu.txt","r"); ftmp = fopen("tmp.txt","w"); while (fscanf(fptr, "%d %d", &no, &score) != EOF) { if (no != n){ fprintf(ftmp,"%d %d\n", no, score); } else { fprintf(ftmp,"%d %d\n", n, s); } } fclose(ftmp); fclose(fptr); remove("stu.txt"); int result = rename("tmp.txt","stu.txt"); } void deleteRec(){ int n, s; printf("Enter No.:"); scanf("%d", &n); FILE *fptr, *ftmp; int no, score; fptr = fopen("stu.txt","r"); ftmp = fopen("tmp.txt","w"); while (fscanf(fptr, "%d %d", &no, &score) != EOF) { if (no != n){ fprintf(ftmp,"%d %d\n", no, score); }; } fclose(ftmp); fclose(fptr); remove("stu.txt"); int result = rename("tmp.txt","stu.txt"); } ``` --- 作業繳交方式:寄E-mail 收件人:lenghs@cc.ncue.edu.tw 主旨:程式設計(0523) 附件:程式設計(0523) - HackMD.pdf 內文:本日上課心得(字數不限不得省略)