所謂程式 (program),是指一個可以獨立執行的檔案。 例如 ls、cat、grep 都是程式。 程式可以由許多種不同的方法創造出來。 在此,我們要介紹的是,利用 C 程式語言撰寫原始碼, 經過 C 編譯器產生程式。 在這一開頭的幾篇教材內,我們必須要先介紹一些術語和觀念。 所以,在進度上比較緩慢,請讀者不要著急。
一套由 C 語言寫的程式,是由若干個原始碼檔案所組成。 對初學者而言,程式都只由一個原始碼檔案組成。 例如 hello.c 是一個 C 語言原始碼 (C source code) 檔案。
#include <stdio.h> /* 第一個 C 程式 (hello.c) */ main() { printf("hello, world\n"); }
如果一列的第一格是 #,這一整列就屬於檔頭部分。 注意,必須第一格就是 #。所以
#include <stdio.h>屬於檔頭部分。
凡是由 /* 開始,一直到 */ 為止的任何文字, 包括 /* 和 */ 在內,都是註解。 顧名思義,註解文字是用來寫註解的。註解是給人看的,不是給編譯器看的。 所以註解文字不會被編譯到程式裡面去。
/* 第一個 C 程式 (hello.c) */屬於註解部分。
註解可以出現在原始碼檔案的任何位置,例如
#include <stdio.h> /* 這是檔頭部分 */是可以的。註解可以包含 linefeed 字元,因此註解文字可以超過一行,例如
#include <stdio.h> /* 這是檔頭部分這樣也是可以的。 但是,註解裡面不能再出現 /* 符號,例如
我們以後再解釋 stdio.h 是什麼意思 */
/* 註解是由 /* 符號開頭的 */這樣是不可以的。
除了檔頭和註解以外的字元,全部被當做是語句。
很多初學者記不得 stdio.h,現在我們又不便解釋。請背誦起來。 為了方便記憶,暫時只解釋 std 是 standard 的意思,io 是「輸入/輸出」 input/output 的縮寫,而 h 是檔頭 (header) 的縮寫。 有些人或書籍的作者,會告訴您這一句不必寫也沒問題。 目前是沒問題,但是以後會有問題。所以請按照本教材的說明來做。
習題
#include <stdio.h> #define BUFSIZE 1025 /* 函式的宣告 */ int getline(char[]); /* 列出每列的字元個數 (不含 linefeed) 及每列的內容 */ main() { int n; char buf[BUFSIZE]; /* 宣告暫存佇列 */ while ((n = getline(buf)) > 0) printf("%6d: %s", n-1, buf); return 0; } /* get a line, return line length */ getline(char line[]) { /* 注意,不宣告序列維度 */ int c, i; for (i=0; i<BUFSIZE-1 && (c=getchar()) != EOF && c != '\n'; ++i) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; }