1. 程式人生 > 其它 >Advanced-C-language-gramma

Advanced-C-language-gramma

1 輸入專題

1.1 scanf

強烈推薦這篇部落格,一定要去看看:scanf函式讀取緩衝區資料的問題

  1. scanf(" ");如果雙引號裡面的空格可以跳過廣義上的空格,等價於迴圈+getchar

  2. scanf("%[^\n]")表示一直讀入直到\n;^表示"非",[^\n]使用%[^\n]就可以讀取一行,直到碰到\n才結束讀入

  3. scanf("%*[^\n]%*c")表示跳過一行字串,*表示該輸入項讀入後不賦予任何變數。%c可以把\n吸收掉,防止影響後續輸入。

  4. fgets(c, n, fp)gets 不同,第一、fgets 需要加最大輸入長度n這個參量, 表示加了 \0 之後 fgets

    能讀入的最大長度。因此需要在讀入的最末尾主動賦值為 \0 ,不必管是否有 \n,這樣能保證資料沒有多餘的 \n

  5. 正文檔案fscanf 等函式大都和標準I/O下的函式用法一樣。除了 fgets

2 檔案專題

2.1 fopen

  1. fopen 必須要搭配檔案指標使用,如 fp = fopen( , ) 而且得配合 fscanf 等等,但是在關閉檔案之可以同時對檔案和標準輸入輸出進行操作。

  2. 檔案開啟一定要判斷是否成功。如果不成功,可以使用 perror(const char *s) 它可將 上一個函式(一般是各個庫函式) 發生錯誤的原因輸出到標準裝置(stderr)。引數s所指的字串會先打印出,後面再加上錯誤原因字串。

3 變數專題

3.1 extern

extern a顯式的說明了a的儲存空間是在程式的其他地方分配的,在檔案中其他位置或者其他檔案中尋找a這個變數。