parsfnm - 解析檔名至 FCB 結構
char *parsfnm(char *cmdline, struct fcb *fcbptr, int option);
// 範例:從命令列字串填入 FCB
peek / peekb - 讀取記憶體絕對位址
int peek(unsigned segment, unsigned offset);
int peekb(unsigned segment, unsigned offset);
// 範例:讀取鍵盤狀態旗標 (0x0040:0x0017)
qsort - 快速排序通用演算法
void qsort(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *));
// 範例:字串陣列排序
int cmp(const void *a, const void *b) { return strcmp(*(char**)a, *(char**)b); }
qsort(list, 5, sizeof(char*), cmp);
raise - 發送訊號給自身程序
int raise(int sig);
// 範例:預防除零錯誤
if (b == 0) raise(SIGFPE);
rand / srand - 偽亂數產生器
int rand(void);
void srand(unsigned int seed);
// 範例:以時間為種子產生 0-99 亂數
srand((unsigned)time(NULL));
for (int i=0; i<10; i++) printf("%d ", rand() % 100);
randbrd / randbwr - FCB 隨機區塊讀寫
int randbrd(struct fcb *fcb, int reccnt);
int randbwr(struct fcb *fcb, int reccnt);
// 古老 DOS FCB 介面,現代開發不建議使用
strstr - 子字串搜尋
char *strstr(const char *haystack, const char *needle);
// 回傳首次出現位址,未找到回傳 NULL
strtod / strtol / strtoul - 字串轉數值
double strtod(const char *nptr, char **endptr);
long strtol(const char *nptr, char **endptr, int base);
unsigned long strtoul(const char *nptr, char **endptr, int base);
// 比 atoi/atof 更安全,可檢測轉換錯誤
strtok - 字串分割
char *strtok(char *str, const char *delim);
// 首次呼叫傳 str,後續傳 NULL;會修改原字串
// 執行緒不安全,多執行緒請用 strtok_r / strtok_s
strupr / strlwr - 大小寫轉換
char *strupr(char *str); // 轉大寫
char *strlwr(char *str); // 轉小寫
// 就地修改字串,非標準函數
swab - 位元組交換
void swab(const char *from, char *to, int nbytes);
// 相鄰兩位元組對調,用於大小端轉換
system - 執行系統命令
int system(const char *command);
// 範例:system("dir"); 呼叫命令解釋器
// 安全性風險:命令注入,避免處理不可信輸入
重要提醒
parsfnm、peek、randbrd、randbwr、strupr 等為 Borland/DOS 時代產物,現代標準 C 不包含。
qsort、strtod、strtok、system 為 ANSI C 標準,跨平台可用。
rand() 品質較差,嚴肅應用請用 random() (BSD) 或 C++11 <random>。