作者: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所指向元素的右面。 |