1. 程式人生 > 其它 >2022-2023-1 20221301 《計算機基礎與程式設計》第十四周學習總結

2022-2023-1 20221301 《計算機基礎與程式設計》第十四周學習總結

2022-2023-1 20221301 《計算機基礎與程式設計》第十四周學習總結

作業資訊

這個作業屬於哪個課程 <班級的連結>https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
這個作業要求在哪裡 <作業要求的連結>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
這個作業的目標 《C語言程式設計》第13章

教材學習內容總結

檔案操作:

  • 二進位制檔案和文字檔案
  • 檔案的開啟與關閉
  • 按字元讀寫檔案
  • 按格式讀寫檔案
  • 按資料讀寫檔案

程式碼除錯中的問題和解決過程

  • 問題1:一開始沒有太搞明白fgets()的用法。
  • 問題1解決方法:通過上網查詢,並閱讀教材,得到解決。
    雖然用 gets() 時有空格也可以直接輸入,但是 gets() 有一個非常大的缺陷,即它不檢查預留儲存區是否能夠容納實際輸入的資料,換句話說,如果輸入的字元數目大於陣列的長度,gets 無法檢測到這個問題,就會發生記憶體越界,所以程式設計時建議使用 fgets()。

fgets() 的原型為:

include <stdio.h>

char *fgets(char *s, int size, FILE *stream);

fgets() 雖然比 gets() 安全,但安全是要付出代價的,代價就是它的使用比 gets() 要麻煩一點,有三個引數。它的功能是從 stream 流中讀取 size 個字元儲存到字元指標變數 s 所指向的記憶體空間。它的返回值是一個指標,指向字串中第一個字元的地址。

其中:s 代表要儲存到的記憶體空間的首地址,可以是字元陣列名,也可以是指向字元陣列的字元指標變數名。size 代表的是讀取字串的長度。stream 表示從何種流中讀取,可以是標準輸入流 stdin,也可以是檔案流,即從某個檔案中讀取,這個在後面講檔案的時候再詳細介紹。標準輸入流就是前面講的輸入緩衝區。所以如果是從鍵盤讀取資料的話就是從輸入緩衝區中讀取資料,即從標準輸入流 stdin 中讀取資料,所以第三個引數為 stdin。

  • 參考:http://c.biancheng.net/view/235.html

  • 問題2:在編寫程式的時候,總是有很多不知道是哪裡出問題的小錯誤。eg:一開始忘記了結構體裡的內容都是陣列形式的,還在裡面定義陣列,導致編譯不通過。

  • 問題2解決辦法:向老師尋求幫助,並結合課本思考。

其他(感悟、思考等,可選)

這一週主要任務就是編寫實驗,在這個過程中,我發現自己在之前的循、排序等程式的編寫上掌握的不錯,但是在指標,字串,結構體這裡有點薄弱,需要多加練習,不會的積極思考,及時詢問老師同學或者上網上查詢。檔案操作這裡有很多固定格式的東西,包括一些函式名之類的,需要好好記住,以方便日後使用。

學習進度條

程式碼行數(新增/累積) 部落格量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 0/0 0/0 3/3
第二週 200/200 6/6 18/21
第三週 200/400 10/10 10/31
第四周 300/700 2/12 19/50
第五週 300/1000 3/15 20/70
第六週 300/1300 5/20 15/85
第七週 900/2200 1/21 15/100
第八週 1400/3600 5/25 15/115
第九周 1500/5100 3/27 15/130
第十週 1400/6500 1/28 15/145
第十一週 1500/8000 1/29 15/160
第十二週 1500/9500 1/30 15/175
第十三週 1500/11000 1/31 15/190
第十四周 1500/12500 1/32 15/205

參考資料