c語言實用功能庫函數#include


實用函數<stdlib.h>

在頭文件<stdlib.h>中說明了用於數值轉換、內存分配以及具有其他相似任務的函數。

1 atof

#include <stdlib.h>

double atof(const char *str);

把字符串str轉換成double類型。等價於:strtod(str, (char**)NULL)。

2 atoi

#include <stdlib.h>

int atoi(const char *str);

把字符串str轉換成int類型。等價於:(int)strtol(str, (char**)NULL, 10)。

3 atol

#include <stdlib.h>

long atol(const char *str);

把字符串str轉換成long類型。等價於:strtol(str, (char**)NULL, 10)。

4 strtod

#include <stdlib.h>

double strtod(const char *start, char **end);

把字符串start的前綴轉換成double類型。在轉換中跳過start的前導空白符,然后逐個讀入構成數的字符,任何非浮點數成分的字符都會終止上述過程。如果end不為NULL,則把未轉換部分的指針保存在*end中。

如果結果上溢,返回帶有適當符號的HUGE_VAL,如果結果下溢,那么函數返回0。在這兩種情況下,errno均被置為ERANGE。

5 strtol

#include <stdlib.h>

long int strtol(const char *start, char **end, int radix);

把字符串start的前綴轉換成long類型,在轉換中跳過start的前導空白符。如果end不為NULL,則把未轉換部分的指針保存在*end中。

如果radix的值在2到36間之間,那么轉換按該基數進行;如果radix為0,則基數為八進制、十進制、十六進制,以0為前導的是八進制,以0x或0X為前導的是十六進制。無論在哪種情況下,串中的字母是表示10到radix-1之間數字的字母。如果radix是16,可以加上前導0x或0X。

如果結果上溢,則依據結果的符號返回LONG_MAX或LONG_MIN,置errno為ERANGE。

6 strtoul

#include <stdlib.h>

unsigned long int strtoul(const char *start, char **end, int radix);

與strtol()類似,只是結果為unsigned long類型,溢出時值為ULONG_MAX。

7 rand

#include <stdlib.h>

int rand(void);

產生一個0到RAND_MAX之間的偽隨機整數。RAND_MAX值至少為32767。

8 srand

#include <stdlib.h>

void srand(unsigned int seed);

設置新的偽隨機數序列的種子為seed。種子的初值為1。

9 calloc

#include <stdlib.h>

void *calloc(size_t num, size_t size);

為num個大小為size的對象組成的數組分配足夠的內存,並返回指向所分配區域的第一個字節的指針;如果內存不足以滿足要求,則返回NULL。

分配的內存區域中的所有位被初始化為0。

10 malloc

#include <stdlib.h>

void *malloc(size_t size);

為大小為size的對象分配足夠的內存,並返回指向所分配區域的第一個字節的指針;如果內存不足以滿足要求,則返回NULL。

不對分配的內存區域進行初始化。

11 realloc

#include <stdlib.h>

void *realloc(void *ptr, size_t size);

將ptr指向的內存區域的大小改為size個字節。如果新分配的內存比原內存大,那么原內存的內容保持不變,增加的空間不進行初始化。如果新分配的內存比原內存小,那么新內存保持原內存區中前size字節的內容。函數返回指向新分配空間的指針。如果不能滿足要求,則返回NULL,原ptr指向的內存區域保持不變。

如果ptr為NULL,則行為等價於malloc(size)。

如果size為0,則行為等價於free(ptr)。

12 free

#include <stdlib.h>

void free(void *ptr);

釋放ptr指向的內存空間,若ptr為NULL,則什么也不做。ptr必須指向先前用動態分配函數malloc、realloc或calloc分配的空間。

13 abort

#include <stdlib.h>

void abort(void);

使程序非正常終止。其功能類似於raise(SIGABRT)。

14 exit

#include <stdlib.h>

void exit(int status);

使程序正常終止。atexit函數以與注冊相反的順序被調用,所有打開的文件被刷新,所有打開的流被關閉。status的值如何被返回依具體的實現而定,但用0表示正常終止,也可用值EXIT_SUCCESS和EXIT_FAILURE。

15 atexit

#include <stdlib.h>

int atexit(void (*func)(void));

注冊在程序正常終止時所要調用的函數func。如果成功注冊,則函數返回0值,否則返回非0值。

16 system

#include <stdlib.h>

int system(const char *str);

把字符串str傳送給執行環境。如果str為NULL,那么在存在命令處理程序時,返回0值。如果str的值非NULL,則返回值與具體的實現有關。

17 getenv

#include <stdlib.h>

char *getenv(const char *name);

返回與name相關的環境字符串。如果該字符串不存在,則返回NULL。其細節與具體的實現有關。

18 bsearch

#include <stdlib.h>

void *bsearch(const void *key, const void *base, size_t n, size_t size,  int (*compare)(const void *, const void *));

在base[0]...base[n-1]之間查找與*key匹配的項。size指出每個元素占有的字節數。函數返回一個指向匹配項的指針,若不存在匹配則返回NULL。

函數指針compare指向的函數把關鍵字key和數組元素比較,比較函數的形式為:

int func_name(const void *arg1, const void *arg2);

arg1是key指針,arg2是數組元素指針。

返回值必須如下:

  • arg1 < arg2時,返回值<0;
  • arg1 == arg2時,返回值==0;
  • arg1 > arg2時,返回值>0。

數組base必須按升序排列(與compare函數定義的大小次序一致)。

19 qsort

#include <stdlib.h>

void qsort(void *base, size_t n, size_t size, int (*compare)(const void *, const void *));

對由n個大小為size的對象構成的數組base進行升序排序。

比較函數compare的形式如下:

int func_name(const void *arg1, const voie *arg2);

其返回值必須如下所示:

  • • arg1 < arg2,返回值<0;
  • • arg1 == arg2,返回值==0;
  • • arg1 > arg2,返回值>0。

20 abs

#include <stdlib.h>

int abs(int num);

返回int變量num的絕對值。

21 labs

#include <stdlib.h>

long labs(long int num);

返回long類型變量num的絕對值。

22 div

#include <stdlib.h>

div_t div(int numerator, int denominator);

返回numerator/denominator的商和余數,結果分別保存在結構類型div_t的兩個int成員quot和rem中。

23 ldiv

#include <stdlib.h>

ldiv_t div(long int numerator, long int denominator);

返回numerator/denominator的商和余數,結果分別保存在結構類型ldiv_t的兩個long成員quot和rem中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM