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

C語言標準庫函數速查:T 開頭函數詳解

     編輯:關於C語言

C語言標準庫函數速查:T 開頭函數詳解

T 開頭函數主要集中在文件定位、文本屬性控制、圖形文本度量、屏幕模式切換、時間處理、臨時文件創建、字符大小寫轉換、時區設置等領域。本文提供完整語法參考與實戰代碼。

文件操作

tell - 獲取文件指針當前位置

函數原型: long tell(int fd);

功能: 返回文件描述符的當前讀寫位置(字節偏移量)。等價於 lseek(fd, 0, SEEK_CUR)。

文本模式屬性控制 (conio.h)

textattr - 設置文本屬性 (前景+背景)

函數原型: void textattr(int attr);

功能: 直接設置文本屬性字節,高 4 位為背景色,低 4 位為前景色,最高位為閃爍標志。

textbackground - 設置背景色

函數原型: void textbackground(int color);

功能: 僅設置文本背景色 (0-7),不影響前景色。

textcolor - 設置前景色

函數原型: void textcolor(int color);

功能: 僅設置文本前景色 (0-15),不影響背景色。

lowvideo / highvideo / normvideo - 亮度控制

分別設置低亮度、高亮度、正常亮度文本屬性。

圖形模式文本度量 (BGI)

textheight - 獲取字符串像素高度

函數原型: int far textheight(const char far *text);

功能: 返回當前字體設置下指定字符串的像素高度,用於換行定位。

textwidth - 獲取字符串像素寬度

函數原型: int far textwidth(const char far *text);

功能: 返回指定字符串在當前字體下的像素寬度,用於居中、對齊計算。

屏幕模式切換

textmode - 設置文本模式

函數原型: void textmode(int mode);

常用模式常量:

  • BW40 / BW80:黑白模式 40/80 列
  • C40 / C80:彩色模式 40/80 列
  • MONO:單色顯示器模式

時間處理

time - 獲取日曆時間

函數原型: time_t time(time_t *tloc);

功能: 返回自 1970-01-01 00:00:00 UTC 至今的秒數。若參數非 NULL,也將結果存入指向位置。

localtime / gmtime / asctime / ctime - 時間轉換

配合使用實現時間戳與可讀字符串、結構體的相互轉換。

tzset - 設置時區環境

函數原型: 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;
}

臨時文件處理

tmpfile - 創建臨時二進制文件

函數原型: FILE *tmpfile(void);

功能: 創建一個唯一的臨時二進制文件 (模式 wb+),文件關閉或程序結束時自動刪除。

tmpnam - 生成唯一臨時文件名

函數原型: char *tmpnam(char *str);

功能: 生成一個不衝突的臨時文件名。若參數為 NULL,使用內部靜態緩衝區;否則寫入用戶提供的緩衝區 (至少 L_tmpnam 字節)。

字符大小寫轉換

tolower / toupper - 字符大小寫轉換

函數原型:

  • 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;
}

最佳實踐提示:

  • 文本屬性函數:僅適用於 DOS 控制台或 Windows 控制台模擬環境,現代 GUI/跨平台程序請使用 ANSI 轉義序列或 ncurses/SDL 等庫。
  • tmpfile/tmpnam:tmpfile 更安全 (自動清理);tmpnam 存在競態條件風險,現代代碼建議使用 mkstemp (POSIX) 或 GetTempFileName (Windows)。
  • tzset:修改 TZ 環境變量後必須調用 tzset 才能生效,影響全進程時間函數行為。
  • 字符轉換:ctype.h 函數行為受當前 locale 影響,處理非 ASCII 字符時需注意設置正確 locale。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved