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

C語言標準庫函數完整參考指南:從檔案操作到記憶體管理

     編輯:關於C語言

前言

C語言標準庫提供了豐富的函數,涵蓋輸入輸出、字串處理、記憶體管理、數學運算、檔案操作、時間日期、進程控制等核心功能。本文系統整理了常用庫函數的原型、功能、參數、返回值及頭檔案,作為開發者的快速查閱手冊。

檔案與目錄操作函數

底層檔案操作(Unix/Linux風格)

函數功能關鍵參數返回值頭檔案
open()開啟檔案路徑、存取模式(O_RDONLY/O_WRONLY/O_RDWR等)、權限檔案描述符/ -1fcntl.h, io.h
close()關閉檔案檔案描述符0/ -1io.h
read()讀取檔案描述符、緩衝區、位元組數實際讀取位元組數/ -1io.h
write()寫入檔案描述符、緩衝區、位元組數實際寫入位元組數/ -1io.h
lseek()移動檔案指標描述符、偏移量、起始點(SEEK_SET/SEEK_CUR/SEEK_END)新位置偏移量/ -1Lio.h

標準I/O流操作(ANSI C標準)

函數功能關鍵參數返回值頭檔案
fopen()開啟流檔名、模式("r"/"w"/"a"/"rb"/"wb"等)FILE* / NULLstdio.h
fclose()關閉流FILE*0 / EOFstdio.h
fread()讀取資料塊緩衝區、元素大小、元素個數、流實際讀取元素數stdio.h
fwrite()寫入資料塊緩衝區、元素大小、元素個數、流實際寫入元素數stdio.h
fseek()移動流位置流、偏移量、起始點0 / 非0stdio.h
fprintf()格式化輸出到流流、格式字串、參數列表輸出位元組數 / EOFstdio.h
fscanf()格式化輸入自流流、格式字串、位址列表成功轉換項目數 / EOFstdio.h
fgets()讀取一行字串緩衝區、最大字元數、流字串指標 / NULLstdio.h
feof()檢查檔案結束FILE*非0(結束) / 0stdio.h

目錄操作

  • mkdir()/rmdir():建立/刪除目錄
  • chdir():改變當前目錄
  • getcwd():取得當前工作目錄完整路徑
  • findfirst()/findnext():檔案搜尋(配合ffblk結構)

記憶體管理函數

函數功能關鍵特性頭檔案
malloc()分配記憶體不初始化,返回void*stdlib.h, alloc.h
calloc()分配並歸零元素個數×大小,自動清零stdlib.h, calloc.h
realloc()調整記憶體大小保留原資料,可能移動位址stdlib.h
free()釋放記憶體必須是malloc/calloc/realloc返回的指標stdlib.h, alloc.h
farcalloc()/farmalloc()遠堆疊分配(16位系統)支援>64KB塊,需遠指標alloc.h

字串與字元處理

函數功能備註
strcpy()/strncpy()字串複製後者限制長度,較安全
strcat()/strncat()字串連接注意緩衝區溢出風險
strcmp()/strncmp()字串比較返回<0, =0, >0
strlen()字串長度不含結束符\0
strtok()字串分割修改原字串,非執行緒安全
sprintf()/sscanf()格式化字串輸出/輸入類似printf/scanf但針對字串
atoi()/atol()/atof()字串轉整數/長整數/浮點數錯誤返回0,無法區分"0"與錯誤
itoa()/ltoa()/gcvt()數值轉字串itoa/ltoa支援指定基數(2-36)

主控台與鍵盤輸入輸出

函數功能回顯頭檔案
getchar()從stdin讀字元有回顯,需Enterstdio.h
getch()無回顯讀字元無回顯,立即返回conio.h
getche()有回顯讀字元有回顯,立即返回conio.h
kbhit()檢查鍵盤輸入非阻塞,有按鍵返回非0conio.h
putchar()輸出字元到stdout宏實現stdio.h
putch()直接輸出字元到主控台conio.h
cgets()讀取字串到緩衝區str[0]=最大長度, str[1]=實際長度, str[2]起存內容conio.h

數學運算函數(math.h)

  • 三角函數:sin(), cos(), tan()
  • 對數指數:log(), log10(), exp(), pow(), sqrt()
  • 取整函數:ceil()(向上), floor()(向下)
  • 絕對值:abs()(int), labs()(long), fabs()(double)

時間日期函數(time.h)

  • time():取得當前時間(秒數,自1970-01-01)
  • clock():程序運行CPU時間
  • gettimeofday():微秒精度時間(Unix/Linux)
  • ctime(), asctime(), strftime():時間格式化
  • DOS環境專用:getdate(), gettime(), setdate(), settime()

進程控制與執行

函數族功能關鍵差異
exec*()載入並執行新程式l=參數列表, v=參數陣列, p=搜尋PATH, e=傳遞環境變數
spawn*()建立子進程執行父進程繼續運行,DOS/Windows專用
system()執行Shell命令透過命令解釋器執行
exit()/_exit()終止進程前者執行清理,後者直接退出
atexit()註冊退出處理函數可註冊多個,反序執行

中斷與硬體存取(DOS/嵌入式專用)

  • int86()/int86x():執行8086軟中斷(通用/帶段暫存器)
  • intr():執行中斷(使用REGPACK結構)
  • geninterrupt():產生軟中斷(需先設定偽變數)
  • inport()/inportb():從I/O埠讀取字/位元組
  • outport()/outportb():向I/O埠寫入字/位元組
  • peek()/peekb():讀取記憶體字/位元組
  • poke()/pokeb():寫入記憶體字/位元組
  • getvect()/setvect():讀取/設定中斷向量
  • enable()/disable():開啟/關閉中斷(巨集)

圖形介面函數(graphics.h - BGI庫)

  • 初始化:initgraph(), detectgraph(), closegraph(), restorecrtmode()
  • 繪圖:line(), rectangle(), circle(), putpixel(), putimage()
  • 屬性:setcolor(), setlinestyle(), setfillstyle(), settextstyle()
  • 文字:outtext(), outtextxy(), textwidth(), textheight()
  • 視口:setviewport(), clearviewport()
  • 雙緩衝動畫:setactivepage(), setvisualpage()

其他實用函數

  • 位元操作:_rotl(), _rotr(), _lrotl(), _lrotr()(循環移位)
  • 環境變數:getenv(), putenv()
  • 路徑處理:fnmerge(), fnsplit(), searchpath()
  • 錯誤處理:perror(), strerror(), errno全域變數
  • 斷言:assert()(debug版生效)
  • 訊號處理:signal(), raise()
  • 可變參數:va_start(), va_arg(), va_end()(stdarg.h)

使用建議與最佳實踐

  1. 優先使用ANSI標準函數(stdio.h, stdlib.h, string.h等),提高程式碼可移植性。
  2. 檔案操作檢查返回值,特別是fopen, malloc, realloc等可能失敗的函數。
  3. 避免使用gets()、strcpy()、sprintf()等不安全函數,改用fgets(), strncpy(), snprintf()。
  4. 注意平台差異:conio.h, dos.h, graphics.h等為Borland/Turbo C擴展,非標準C。
  5. 記憶體管理配對:每個malloc/calloc必須對應free,避免洩漏。
  6. 善用man page或MSDN查閱詳細規格,本文僅供快速參考。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved