首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> 關於C

《C與指標》第1章 快速上手:標準 I/O、常見陷阱與編程技巧

     編輯:關於C

核心函式速覽

函式用途
printf / scanf格式化輸出/輸入
putchar / getchar單字元輸出/輸入
puts / gets字串輸出/輸入(gets 不安全,建議用 fgets)

三個關鍵符號辨析

  • NUL:字串結束字元 '\0'(ASCII 0),非預處理符號。
  • NULL:stdio.h 定義的空指標常數,本質是 (void*)0。
  • EOF:stdio.h 定義的檔案結束標誌,通常為 -1(int 型)。

四大常見警告(必須避免)

  1. scanf 缺少 &:標量參數(如 int a; scanf("%d", &a);)必須取址。陣列名本身是地址,不需加 &。
  2. printf 格式字串誤用於 scanf:scanf("%d\n", &a) 中 \n 會導致掃描器吞掉後續空白,造成掛起。
  3. 邏輯與 && 誤寫為位元與 &:if (a > 0 & b > 0) 雖能通過編譯,但語義錯誤(位元運算優先級高、不短路)。
  4. 判斷相等誤用賦值 =:if (a = 5) 永真且修改 a,正確是 ==。習慣寫 if (5 == a) 讓編譯器報錯。

六大編程技巧提升可讀性與效率

  1. 用 #include 統一聲明:函式原型放入頭檔,避免重複聲明錯誤。
  2. 用 #define 命名常數:#define MAX 100 而非魔術數字。
  3. 陣列下標前檢查邊界:防止越界訪問。
  4. 在 while/if 中蘊含賦值:
    while ((ch = getchar()) != EOF && ch != '\n') ;
    消除冗餘賦值行,大牛閱讀無障礙。
  5. 空迴圈體寫分號:while (cond) ; 分號不可少,否則下一句被納入迴圈。
  6. 確保陣列不越界:輸入迴圈需檢查「行結束」或「陣列滿」;輸出時僅寫入可容納範圍。

習題精選:驗證大括號配對


#include 
#include 

int main() {
    int balance = 0;
    int ch;
    while ((ch = getchar()) != EOF) {
        if (ch == '{') balance++;
        else if (ch == '}') {
            if (balance == 0) { puts("wrong!"); return 1; }
            balance--;
        }
    }
    if (balance != 0) puts("wrong!");
    return 0;
}

結構化程式設計的基石:良好的風格、正確的 I/O 處理、嚴謹的邊界檢查。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved