2022-2023-1 20221301 《計算機基礎與程式設計》第十四周學習總結
阿新 • • 發佈:2022-12-04
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。
-
問題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 |