T 開頭函數主要集中在文件定位、文本屬性控制、圖形文本度量、屏幕模式切換、時間處理、臨時文件創建、字符大小寫轉換、時區設置等領域。本文提供完整語法參考與實戰代碼。
函數原型: long tell(int fd);
功能: 返回文件描述符的當前讀寫位置(字節偏移量)。等價於 lseek(fd, 0, SEEK_CUR)。
函數原型: void textattr(int attr);
功能: 直接設置文本屬性字節,高 4 位為背景色,低 4 位為前景色,最高位為閃爍標志。
函數原型: void textbackground(int color);
功能: 僅設置文本背景色 (0-7),不影響前景色。
函數原型: void textcolor(int color);
功能: 僅設置文本前景色 (0-15),不影響背景色。
分別設置低亮度、高亮度、正常亮度文本屬性。
函數原型: int far textheight(const char far *text);
功能: 返回當前字體設置下指定字符串的像素高度,用於換行定位。
函數原型: int far textwidth(const char far *text);
功能: 返回指定字符串在當前字體下的像素寬度,用於居中、對齊計算。
函數原型: void textmode(int mode);
常用模式常量:
BW40 / BW80:黑白模式 40/80 列C40 / C80:彩色模式 40/80 列MONO:單色顯示器模式函數原型: time_t time(time_t *tloc);
功能: 返回自 1970-01-01 00:00:00 UTC 至今的秒數。若參數非 NULL,也將結果存入指向位置。
配合使用實現時間戳與可讀字符串、結構體的相互轉換。
函數原型: void tzset(void);
功能: 讀取環境變量 TZ 並設置全局時區相關變量 (timezone, daylight, tzname),影響 localtime 等函數行為。
示例:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
int main(void) {
putenv("TZ=PST8PDT"); // 設置太平洋時間
tzset();
time_t now = time(NULL);
printf("Current time: %s", asctime(localtime(&now)));
return 0;
}
函數原型: FILE *tmpfile(void);
功能: 創建一個唯一的臨時二進制文件 (模式 wb+),文件關閉或程序結束時自動刪除。
函數原型: char *tmpnam(char *str);
功能: 生成一個不衝突的臨時文件名。若參數為 NULL,使用內部靜態緩衝區;否則寫入用戶提供的緩衝區 (至少 L_tmpnam 字節)。
函數原型:
int tolower(int c);int toupper(int c);功能: 將字符轉換為小寫/大寫。僅對字母字符有效,其他字符原樣返回。注意:參數為 int 以容納 EOF。
示例:
#include <ctype.h>
#include <string.h>
#include <stdio.h>
int main(void) {
char str[] = "Hello World!";
for (size_t i = 0; i < strlen(str); i++) {
str[i] = toupper(str[i]);
}
printf("Upper: %s\n", str); // HELLO WORLD!
for (size_t i = 0; i < strlen(str); i++) {
str[i] = tolower(str[i]);
}
printf("Lower: %s\n", str); // hello world!
return 0;
}
最佳實踐提示:
tmpfile 更安全 (自動清理);tmpnam 存在競態條件風險,現代代碼建議使用 mkstemp (POSIX) 或 GetTempFileName (Windows)。TZ 環境變量後必須調用 tzset 才能生效,影響全進程時間函數行為。ctype.h 函數行為受當前 locale 影響,處理非 ASCII 字符時需注意設置正確 locale。