C語言標準庫函數整理

作者:billy
版權聲明:著作權歸作者所有,商業轉載請聯繫作者獲得授權,非商業轉載請註明出處

1. 輸入輸出函數

#include <stdio.h>

類型 函數原型 功能 返回值
文件操作 FILE *fopen(char *filename,char *mode) 以mode指定的方式打開名爲filename的文件 成功,返回文件指針(文件信息區的起始地址),否則返回NULL
- int fclose(FILE *fp) 關閉fp所指的文件,釋放文件緩衝區 出錯返回非0,否則返回0
- int rename(char *oldname,char *newname) 把oldname所指文件名改爲newname所指文件名 成功返回0,出錯返回-1
- void clearer(FILE *fp) 清除與文件指針fp有關的所有出錯信息
- int feof (FILE *fp) 檢查文件是否結束 遇文件結束返回非0,否則返回0
- void rewind(FILE *fp) 將文件位置指針置於文件開頭
- long ftell (FILE *fp) 求出fp所指文件當前的讀寫位置 讀寫位置,出錯返回 -1L
- int fseek (FILE *fp,long offer,int base) 移動fp所指文件的位置指針 成功返回當前位置,否則返回非0
- - - -
文件讀寫 int getc (FILE *fp) 從fp所指文件中讀取一個字符 返回所讀字符,若出錯或文件結束返回EOF
- int fgetc (FILE *fp) 同getc 同getc
- char *fgets(char *buf,int n, FILE *fp) 從fp所指的文件中讀取一個長度爲n-1的字符串,將其存入buf所指存儲區 返回buf所指地址,若遇文件結束或出錯返回NULL
- int putc (int ch, FILE *fp) 把ch中字符輸出到fp指定的文件中 成功返回該字符,否則返回EOF
- int fputc(char ch, FILE *fp) 同putc 同putc
- int fputs(char *str, FILE *fp) 把str所指字符串輸出到fp所指文件 成功返回非負整數,否則返回-1(EOF)
- int fread(char *pt,unsigned size,unsigned n, FILE *fp) 從fp所指文件中讀取長度size爲n個數據項存到pt所指文件 讀取的數據項個數
- int fwrite(char *pt,unsigned size,unsigned n, FILE *fp) 把pt所指向的n*size個字節輸入到fp所指文件 輸出的數據項個數
- int fprintf(FILE *fp, char *format, args,…) 把args,…的值以format指定的格式輸出到fp指定的文件中 實際輸出的字符數
- int fscanf (FILE *fp, char *format,args,…) 從fp所指的文件中按format指定的格式把輸入數據存入到args,…所指的內存中 已輸入的數據個數,遇文件結束或出錯返回0
- - - -
輸入輸出 int getchar(void) 從標準輸入設備讀取下一個字符 返回所讀字符,若出錯或文件結束返回-1
- char *gets(char *s) 從標準設備讀取一行字符串放入s所指存儲區,用’\0’替換讀入的換行符 返回s,出錯返回NULL
- int putchar(char ch) 把ch輸出到標準輸出設備 返回輸出的字符,若出錯則返回EOF
- int puts(char *str) 把str所指字符串輸出到標準設備,將’\0’轉成回車換行符 返回換行符,若出錯,返回EOF
- int printf(char *format,args,…) 把args,…的值以format指定的格式輸出到標準輸出設備 輸出字符的個數
- int scanf(char *format,args,…) 從標準輸入設備按format指定的格式把輸入數據存入到args,…所指的內存中 已輸入的數據的個數

2. 數學函數

#include <math.h>

類型 函數原型 功能 返回值
三角函數 double sin(double x) 計算sin(x)的值,x的單位爲弧度 計算結果
- double cos(double x) 計算cos(x)的值,x的單位爲弧度 計算結果
- double tan(double x) 計算tan(x) 計算結果
反三角函數 double asin(double x) 計算sin-1(x)的值,x在-1~1範圍內 計算結果
- double acos(double x) 計算cos-1(x)的值,x在-1~1範圍內 計算結果
- double atan(double x) 計算tan-1(x)的值 計算結果
雙曲函數 double sinh(double x) 計算x的雙曲正弦函數sinh(x)的值 計算結果
- double cosh(double x) 計算雙曲餘弦cosh(x)的值 計算結果
- double tanh(double x) 計算x的雙曲正切函數tanh(x)的值 計算結果
- - - -
指數對數函數 double exp(double x) 求e的x次方的值 計算結果
- double log(double x) 求㏑x,x>0 計算結果
- double log10(double x) 求log10x,x>0 計算結果
其他計算函數 int abs( int x) 求整數x的絕對值 計算結果
- double fabs(double x) 求雙精度實數x的絕對值 計算結果
- double pow(double x,double y) 計算x的y次方的值 計算結果
- double sqrt(double x) 計算x的開方,x≥0 計算結果
- double ceil(double x) 返回大於或者等於指定表達式的最小整數 計算結果
- double floor(double x) 返回不大於x的最大整數 計算結果
- double atan2(double x) 計算tan-1(x/y)的值 計算結果
- double ldexp(double value, int exp) 計算value乘以2的exp次冪 value * ( 2^exp ) 計算結果
- double frexp(double val,int *exp) 把雙精度val分解尾數和以2爲底的指數n,即val=x*2的n次方,n存放在exp所指的變量中 返回位數x 0.5≤x<1
- double modf(double val,double *ip) 把雙精度val分解成整數部分和小數部分,整數部分存放在ip所指的變量中 返回小數部分
- double fmod(double x,double y) 求x/y整除後的雙精度餘數 計算結果

3. 字符函數

#include <ctype.h>

函數原型 功能 返回值
int isalnum(int ch) 檢查ch是否爲字母或數字 是,返回1;否則返回0
int isalpha(int ch) 檢查ch是否爲字母 是,返回1;否則返回0
int iscntrl(int ch) 檢查ch是否爲控制字符 是,返回1;否則返回0
int isdigit(int ch) 檢查ch是否爲數字 是,返回1;否則返回0
int isgraph(int ch) 檢查ch是否爲ASCII碼值在ox21到ox7e的可打印字符(即不包含空格字符) 是,返回1;否則返回0
int isprint(int ch) 檢查ch是否爲包含空格符在內的可打印字符 是,返回1;否則返回0
int ispunct(int ch) 檢查ch是否爲除了空格、字母、數字之外的可打印字符 是,返回1;否則返回0
int isspace(int ch) 檢查ch是否爲空格、製表或換行符 是,返回1;否則返回0
int isxdigit(int ch) 檢查ch是否爲16進制數 是,返回1;否則返回0
int islower(int ch) 檢查ch是否爲小寫字母 是,返回1;否則返回0
int isupper(int ch) 檢查ch是否爲大寫字母 是,返回1;否則返回0
int tolower(int ch) 把ch中的字母轉換成小寫字母 返回對應的小寫字母
int toupper(int ch) 把ch中的字母轉換成大寫字母 返回對應的大寫字母

4. 字符串函數

#include <string.h>

函數原型 功能 返回值
char *strcat(char *s1,char *s2) 把字符串s2接到s1後面 s1所指地址
int strcmp(char *s1,char *s2) 對s1和s2所指字符串進行比較 s1<s2,返回負數;s1= =s2,返回0;s1>s2,返回正數
char *strcpy(char *s1,char *s2) 把s2指向的串複製到s1指向的空間 s1 所指地址
unsigned strlen(char *s) 求字符串s的長度 返回串中字符(不計最後的’\0’)個數
char *strchr(char *s,int ch) 在s所指字符串中,找出第一次出現字符ch的位置 返回找到的字符的地址,找不到返回NULL
char *strstr(char *s1,char *s2) 在s1所指字符串中,找出字符串s2第一次出現的位置 返回找到的字符串的地址,找不到返回NULL
- - -
void *memcpy(void *destin, void *source, unsigned n) 從源source所指的內存地址的起始位置開始拷貝n個字節到目標destin所指的內存地址的起始位置中 返回一個指向目標存儲區destin的指針
void memmove(void dest, const void* src, size_t count) 由src所指內存區域複製count個字節到dest所指內存區域 返回指向dest的指針
int memcmp(const void *str1, const void *str2, size_t n) 比較內存區域buf1和buf2的前count個字節 s1<s2,返回負數;s1= =s2,返回0;s1>s2,返回正數
void *memchr(const void *str, int c, size_t n) 在參數 str 所指向的字符串的前 n 個字節中搜索第一次出現字符 c(一個無符號字符)的位置 返回一個指向匹配字節的指針,如果在給定的內存區域未出現字符,則返回 NULL
void *memset(void *s, int ch, size_t n) 將s中當前位置後面的n個字節 (typedef unsigned int size_t )用 ch 替換並返回 s。在一段內存塊中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法 返回指向 s 的指針

5. 功能函數

#include <stdlib.h>

類型 函數原型 功能 返回值
隨機數 int rand(void) 產生0~32767的隨機整數 返回一個隨機整數
- void srand(unsigned seed) 用seed爲隨後的隨機數生成設置種子值 返回0~32767的隨機整數
動態存儲分配 void *calloc(unsigned n,unsigned size) 分配n個數據項的內存空間,每個數據項的大小爲size個字節 分配內存單元的起始地址;如不成功,返回0
- void *malloc(unsigned size) 分配size個字節的存儲空間 分配內存空間的地址;如不成功,返回0
- void *realloc(void *p,unsigned size) 把p所指內存區的大小改爲size個字節 新分配內存空間的地址;如不成功,返回0
- void *free(void *p) 釋放p所指的內存區
數值轉換 double atof(const char *nptr) 掃描參數nptr字符串,跳過前面的空格字符,直到遇上數字或正負符號纔開始做轉換,而再遇到非數字或字符串結束時(’\0’)才結束轉換,並將結果返回 返回轉換後的浮點型數
- int atoi(const char *nptr) 把參數 nptr 所指向的字符串轉換爲一個整數(類型爲 int 型) 返回轉換後的長整數,如果沒有執行有效的轉換,則返回零
- long int atol(const char *nptr) 把參數 nptr 所指向的字符串轉換爲一個長整數(類型爲 long int 型) 返回轉換後的長整數,如果沒有執行有效的轉換,則返回零
執行控制 void abort(void) 異常終止一個進程
- void exit(int status) 關閉所有文件,終止正在執行的進程 status作爲送給執行環境的出口值,0表示成功結束,兩個可用的常數爲EXIT_SUCCESS,EXIT_FAILURE
- int atexit (void (*)(void)) 用本函數把一些函數註冊爲結束動作 被註冊函數應當是無參無返回值的函數。註冊正常完成時atexit返回值0,否則返回非零值
系統交互 int system(const char *nptr) 發出一個DOS命令,把參數nptr字符串傳遞給程序的執行環境要求作爲系統命令執行 如以NULL爲參數調用,函數返回非0表示環境裏有命令解釋器。如果s不是NULL,返回值由實現確定
- char *getenv(const char *nptr) 從環境中獲取環境變量nptr的值 如果找不到就返回NULL,具體結果由實現確定
查找排序 void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*cmp)(const void *keyval, const void *datum)) key指向所要查找的元素,base指向進行查找的數組,nmem爲查找長度,一般爲數組長度,size爲每個元素所佔的字節數,一般用sizeof(…)表示,comp指向比較子函數,它定義比較的規則。需要注意的是,數據必須是經過預先排序的,而排序的規則要和comp所指向比較子函數的規則相同 查找成功則返回數組中匹配元素的地址,反之則返回空。對於有多於一個的元素匹配成功的情況,bsearch()未定義返回哪一個
- void qsort(void *base, size_t n, size_t size, int (*cmp)(const void *, const void *)) base指向要排序的數組的第一個元素的指針,nitems由 base 指向的數組中元素的個數,size爲數組中每個元素的大小以字節爲單位,compar指向比較子函數,它定義比較的規則。用qsort可以把這個數組的元素按cmp確定的上升順序重新排列 如果compar返回值小於0(< 0),那麼p1所指向元素會被排在p2所指向元素的左面;如果compar返回值等於0(= 0),那麼p1所指向元素與p2所指向元素的順序不確定;如果compar返回值大於0(> 0),那麼p1所指向元素會被排在p2所指向元素的右面。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章