| 函式 | 用途 |
|---|---|
| printf / scanf | 格式化輸出/輸入 |
| putchar / getchar | 單字元輸出/輸入 |
| puts / gets | 字串輸出/輸入(gets 不安全,建議用 fgets) |
'\0'(ASCII 0),非預處理符號。stdio.h 定義的空指標常數,本質是 (void*)0。stdio.h 定義的檔案結束標誌,通常為 -1(int 型)。int a; scanf("%d", &a);)必須取址。陣列名本身是地址,不需加 &。scanf("%d\n", &a) 中 \n 會導致掃描器吞掉後續空白,造成掛起。&& 誤寫為位元與 &:if (a > 0 & b > 0) 雖能通過編譯,但語義錯誤(位元運算優先級高、不短路)。=:if (a = 5) 永真且修改 a,正確是 ==。習慣寫 if (5 == a) 讓編譯器報錯。#define MAX 100 而非魔術數字。while ((ch = getchar()) != EOF && ch != '\n') ;while (cond) ; 分號不可少,否則下一句被納入迴圈。
#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 處理、嚴謹的邊界檢查。