[英]difference between header files “<stdio.h>” and “<stdlib.h>”
C編程中的header文件“ <stdio.h>
”和“ <stdlib.h>
”有什么區別?
一個有一組 function 聲明、常量、宏和類型定義,另一個有一組不同的 function 聲明、常量、宏和類型定義。 如果您想查看內容,可以使用簡單的文本編輯器打開文件。
stdio
代表標准輸入/輸出,其內容通常但不完全與輸入 output 操作有關,無論是硬件或物理設備,還是系統支持的文件。 可以在此處找到可用的函數聲明、宏和類型定義的列表:
功能:
文件操作:
remove - 刪除文件
重命名 - 重命名文件
tmpfile - 打開一個臨時文件
tmpnam - 生成臨時文件名
文件訪問:
fclose - 關閉文件
fflush - 刷新 stream
fopen - 打開文件
freopen - 使用不同的文件或模式重新打開 stream
setbuf - 設置 stream 緩沖區
setvbuf - 更改 stream 緩沖
格式化輸入/輸出:
fprintf - 將格式化數據寫入 stream
fscanf - 從 stream 讀取格式化數據
printf - 將格式化數據打印到標准輸出
scanf - 從標准輸入讀取格式化數據
snprintf - 將格式化的 output 寫入大小緩沖區
sprintf - 將格式化數據寫入字符串
sscanf - 從字符串中讀取格式化數據
vfprintf - 將格式化數據從變量參數列表寫入 stream
vfscanf - 從 stream 讀取格式化數據到變量參數列表中
vprintf - 將變量參數列表中的格式化數據打印到標准輸出
vscanf - 將格式化數據讀入變量參數列表
vsnprintf - 將變量參數列表中的格式化數據寫入大小緩沖區
vsprintf - 將變量參數列表中的格式化數據寫入字符串
vsscanf - 將格式化數據從字符串讀取到變量參數列表中
字符輸入/輸出:
fgetc - 從 stream 獲取字符
fgets - 從 stream 獲取字符串
fputc - 將字符寫入 stream
fputs - 將字符串寫入 stream
getc - 從 stream 獲取字符
getchar - 從標准輸入中獲取字符
獲取 - 從標准輸入獲取字符串
putc - 將字符寫入 stream
putchar - 將字符寫入標准輸出
puts - 將字符串寫入標准輸出
ungetc - 從 stream 中獲取字符
直接輸入/輸出:
fread - 從 stream 讀取數據塊
fwrite - 將數據塊寫入 stream
文件定位:
fgetpos - 在 stream 中獲取當前 position
fseek - 重新定位 stream position 指示器
fsetpos - 設置 stream 的 position 指標
ftell - 在 stream 中獲取當前 position
倒帶 - 將 stream 的 position 設置為開頭
錯誤處理:
clearerr - 清除錯誤指示器
feof - 檢查文件結束指示符
ferror - 檢查錯誤指示器
perror - 打印錯誤信息
宏:
BUFSIZ - 緩沖區大小
EOF - 文件結束
FILENAME_MAX - 文件名的最大長度
FOPEN_MAX - 同時打開的流的潛在限制
L_tmpnam - 臨時文件名的最小長度
NULL-Null指針(宏)
TMP_MAX - 臨時文件數
另外:_IOFBF、_IOLBF、_IONBF(與 setvbuf 一起使用)和 SEEK_CUR、SEEK_END 和 SEEK_SET(與 fseek 一起使用)。
類型:
文件 - Object 包含控制 stream 的信息
fpos_t - Object 包含在文件中指定 position 的信息
size_t - 無符號整數類型
stdlib
代表標准庫,它具有通用功能,包括動態 memory 管理、隨機數生成、通信、算術、搜索、排序和轉換等。可用的函數聲明、宏和類型定義列表可以在這里找到:
功能
字符串轉換
atof - 將字符串轉換為雙精度
atoi - 將字符串轉換為 integer
atol - 將字符串轉換為長 integer
atoll - 將字符串轉換為長 integer
strtod - 將字符串轉換為雙精度
strtof - 將字符串轉換為浮點數
strtol - 將字符串轉換為長 integer
strtold - 將字符串轉換為長雙精度
strtoll - 將字符串轉換為 long long integer
strtoul - 將字符串轉換為無符號長 integer
strtoull - 將字符串轉換為無符號長長 integer
偽隨機序列生成
rand - 生成隨機數
srand - 初始化隨機數生成器
動態 memory 管理
calloc - 分配和零初始化數組
免費 - 釋放 memory 塊
malloc - 分配 memory 塊
realloc - 重新分配 memory 塊
環境
abort - 中止當前進程
atexit - 設置 function 在退出時執行
at_quick_exit - 設置 function 在快速退出時執行
exit - 終止調用進程
getenv - 獲取環境字符串
quick_exit - 快速終止調用進程
system - 執行系統命令
_Exit - 終止調用進程
搜索和排序
bsearch - 數組中的二進制搜索
qsort - 對數組元素進行排序
Integer 算術
abs - 絕對值
div - 積分除法
實驗室 - 絕對值
ldiv - 積分除法
llabs - 絕對值
lldiv - 積分除法
多字節字符
mblen - 獲取多字節字符的長度
mbtowc - 將多字節序列轉換為寬字符
wctomb - 將寬字符轉換為多字節序列
多字節字符串
mbstowcs - 將多字節字符串轉換為寬字符串
wcstombs - 將寬字符串轉換為多字節字符串
宏常量
EXIT_FAILURE - 失敗終止代碼
EXIT_SUCCESS - 成功終止代碼
MB_CUR_MAX - 多字節字符的最大大小
NULL - Null 指針
RAND_MAX - rand 返回的最大值
類型
div_t - div 返回的結構
ldiv_t - ldiv 返回的結構
lldiv_t - lldiv 返回的結構
size_t - 無符號整數類型
區分這兩個 header 文件的一種簡單方法是“<stdio.h>”包含 printf() 和 scanf() 的聲明,而“<stdlib.h>”包含 malloc() 和 free() 的聲明。 In that sense, the main difference in these two header files can considered that, while “<stdio.h>” contains header information for 'File related Input/Output' functions, “<stdlib.h>” contains header information for 'Memory分配/釋放'功能。
它們有不同的內容。
C 標准庫分為幾個主要區域,每個區域都有一個單獨的 header 文件。
stdio.h
(標准 I/O)包含宏定義、類型定義和 function 聲明,用於處理文本和二進制 I/O( printf
、 scanf
、 fopen
、 getchar
等)的例程。
stdlib.h
(standard library) contains macro definitions, type definitions, and function declarations for routines dealing with memory management, text-to-numeric conversions, random numbers, etc. ( malloc
, calloc
, strtol
, rand
, etc.).
標准輸出
C library to perform Input/Output operations Input and Output operations can also be performed in C++ using the C Standard Input and Output Library (cstdio, known as studio. h in the C language). 該庫使用流來操作物理設備,例如鍵盤、打印機、終端或系統支持的任何其他類型的文件。 流是與這些統一交互的抽象; 所有流都具有相似的屬性,與物理媒體的個體特征無關。
流在 cstdio 庫中作為指向 FILE 對象的指針進行處理。 指向 FILE object 的指針唯一標識 stream,並在涉及該 stream 的操作中用作參數。
還存在三個標准流:stdin、stdout 和 stderr,它們是為使用該庫的所有程序自動創建和打開的。
標准庫文件
<stdlib.h> 庫(用於標准庫)提供了回答各種問題的函數。 首先,這個庫將允許您通過在堆中分配或釋放 memory 來動態管理 memory。 它還允許您與運行程序的操作系統進行交互。 該庫還提供了許多其他實用功能,用於在數據類型、算法(排序、二分搜索、偽隨機數的生成等)和其他一些可能性之間進行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.