Advanced-C-language-gramma
阿新 • • 發佈:2021-11-18
1 輸入專題
1.1 scanf
強烈推薦這篇部落格,一定要去看看:scanf函式讀取緩衝區資料的問題
-
scanf(" ")
;如果雙引號裡面的空格可以跳過廣義上的空格,等價於迴圈+getchar -
scanf("%[^\n]")
表示一直讀入直到\n
;^
表示"非",[^\n]
使用%[^\n]
就可以讀取一行,直到碰到\n
才結束讀入 -
scanf("%*[^\n]%*c")
表示跳過一行字串,*
表示該輸入項讀入後不賦予任何變數。%c
可以把\n
吸收掉,防止影響後續輸入。 -
fgets(c, n, fp)
與gets
不同,第一、fgets
需要加最大輸入長度n
這個參量, 表示加了\0
之後fgets
\0
,不必管是否有\n
,這樣能保證資料沒有多餘的\n
-
對正文檔案的
fscanf
等函式大都和標準I/O下的函式用法一樣。除了fgets
2 檔案專題
2.1 fopen
-
fopen
必須要搭配檔案指標使用,如fp = fopen( , )
而且得配合fscanf
等等,但是在關閉檔案之可以同時對檔案和標準輸入輸出進行操作。 -
檔案開啟一定要判斷是否成功。如果不成功,可以使用
perror(const char *s)
它可將 上一個函式(一般是各個庫函式) 發生錯誤的原因輸出到標準裝置(stderr)。引數s所指的字串會先打印出,後面再加上錯誤原因字串。
3 變數專題
3.1 extern
extern a
顯式的說明了a
的儲存空間是在程式的其他地方分配的,在檔案中其他位置或者其他檔案中尋找a
這個變數。