Board logo

標題: 610 字元字串與檔案處理 [打印本頁]

作者: 李泳霖    時間: 2022-6-6 13:09     標題: 610 字元字串與檔案處理

本帖最後由 李泳霖 於 2022-6-6 17:18 編輯

http://www2.lssh.tp.edu.tw/~hlf/class-1/lang-c/c_file.htm
設計說明:
1.輸入姓名與分數,當分數為-100時,程式將結束讀取動作。
2. 修改程式碼片段中的程式語法、邏輯上的錯誤,執行結果如範例圖。

[attach]13201[/attach]
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int main ()
  5. {
  6.      FILE *fptr;
  7.         char name[20];
  8.         int score;
  9.         fptr=fopen("score.dat", "w");
  10.         printf("請輸入姓名: ");
  11.         scanf("%s", name);
  12.         printf("請輸入分數: ");
  13.         scanf("%d", &score);
  14.        
  15.         while (score != -100) {
  16.         fprintf("%s %d", name, score);
  17.         printf("請輸入姓名: ");
  18.         scanf("%s", name);
  19.         printf("請輸入分數: ");
  20.         scanf("%d", &score);               
  21.         }
  22.        
  23.      fclose(fptr);
  24.        
  25.         fptr=fopen("score.dat", "r");
  26.         printf("\n以下是您輸入的資料:\n");
  27.         while (fscanf("%s %d", name, score) !=EOF)
  28.         {
  29.         printf("%-10s %3d\n", name, score);
  30.         }
  31.         system("PAUSE");
  32.         return 0;
  33. }
複製代碼
  1. /* TQC+ C - 610 */

  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>

  5. int main ()
  6. {
  7.     FILE *fptr;
  8.     char name[20];
  9.     int score;

  10.     fptr=fopen("score.dat", "w");
  11.     printf("請輸入姓名: ");
  12.     scanf("%s", name);
  13.     printf("請輸入分數: ");
  14.     scanf("%d", &score);

  15.     while (score != -100) {
  16.         fprintf(fptr,"%s %d", name, score);
  17.         /* 做有關檔案讀取時,參數的第一個通常需要先告知檔案的指標 */
  18.         printf("請輸入姓名: ");
  19.         scanf("%s", name);
  20.         printf("請輸入分數: ");
  21.         scanf("%d", &score);
  22.     }

  23.     fclose(fptr);

  24.     fptr=fopen("score.dat", "r");
  25.     printf("\n以下是您輸入的資料:\n");

  26.     while (fscanf(fptr,"%s %d", name, &score) !=EOF)//加上檔案指標,score前加上&
  27.         printf("%-10s %3d\n", name, score);
  28.     system("PAUSE");

  29.     return 0;
  30. }
複製代碼

作者: 李泳霖    時間: 2022-6-6 13:09

此帖僅作者可見
作者: 鄭程富    時間: 2022-6-6 17:18

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2