欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言基本函數(shù)



一.內(nèi)存操作函數(shù):

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)金鳳免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

(1)

頭文件:#include <string.h>
memset() 函數(shù)用來將指定內(nèi)存的前n個(gè)字節(jié)設(shè)置為特定的值,其原型為:
    void * memset( void * ptr, int value, size_t num );
參數(shù)說明:

  • ptr 為要操作的內(nèi)存的指針。

  • value 為要設(shè)置的值。你既可以向 value 傳遞 int 類型的值,也可以傳遞 char 類型的值,int 和 char 可以根據(jù) ASCII 碼相互轉(zhuǎn)換。

  • num 為 ptr 的前 num 個(gè)字節(jié),size_t 就是unsigned int。

【函數(shù)說明】memset() 會(huì)將 ptr 所指的內(nèi)存區(qū)域的前 num 個(gè)字節(jié)的值都設(shè)置為 value,然后返回指向 ptr 的指針。

【返回值】返回指向 ptr 的指針。


(2)

頭文件:#include <string.h>
memcpy() 用來復(fù)制內(nèi)存,其原型為:
    void * memcpy ( void * dest, const void * src, size_t num );
memcpy() 會(huì)復(fù)制 src 所指的內(nèi)存內(nèi)容的前 num 個(gè)字節(jié)到 dest 所指的內(nèi)存地址上。
memcpy() 并不關(guān)心被復(fù)制的數(shù)據(jù)類型,只是逐字節(jié)地進(jìn)行復(fù)制,這給函數(shù)的使用帶來了很大的靈活性,可以面向任何數(shù)據(jù)類型進(jìn)行復(fù)制。
需要注意的是:

  • dest 指針要分配足夠的空間,也即大于等于 num 字節(jié)的空間。如果沒有分配空間,會(huì)出現(xiàn)斷錯(cuò)誤。

  • dest 和 src 所指的內(nèi)存空間不能重疊(如果發(fā)生了重疊,使用 memmove() 會(huì)更加安全)。

與 strcpy() 不同的是,memcpy() 會(huì)完整的復(fù)制 num 個(gè)字節(jié),不會(huì)因?yàn)橛龅健癨0”而結(jié)束。
【返回值】返回指向 dest 的指針。注意返回的指針類型是 void,使用時(shí)一般要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。


(3)

頭文件:#include <string.h>
定義函數(shù):int memcmp (const void *s1, const void *s2, size_t n);
函數(shù)說明:memcmp()用來比較s1 和s2 所指的內(nèi)存區(qū)間前n 個(gè)字符。
字符串大小的比較是以ASCII 碼表上的順序來決定,次順序亦為字符的值。memcmp()首先將s1 第一個(gè)字符值減去s2 第一個(gè)字符的值,若差為0 則再繼續(xù)比較下個(gè)字符,若差值不為0 則將差值返回。例如,字符串"Ac"和"ba"比較則會(huì)返回字符'A'(65)和'b'(98)的差值(-33)。
返回值:若參數(shù)s1 和s2 所指的內(nèi)存內(nèi)容都完全相同則返回0 值。s1 若大于s2 則返回大于0 的值。s1 若小于s2 則返回小于0 的值。


(4)

頭文件:#include <string.h>
定義函數(shù):void * memccpy(void *dest, const void * src, int c, size_t n);
函數(shù)說明:memccpy()用來拷貝src 所指的內(nèi)存內(nèi)容前n 個(gè)字節(jié)到dest 所指的地址上。與memcpy()不同的是,memccpy()會(huì)在復(fù)制時(shí)檢查參數(shù)c 是否出現(xiàn),若是則返回dest 中值為c 的下一個(gè)字節(jié)地址。
返回值:返回指向dest 中值為c 的下一個(gè)字節(jié)指針。返回值為0 表示在src 所指內(nèi)存前n 個(gè)字節(jié)中沒有值為c的字節(jié)。


(5)

頭文件:#include <stdlib.h>
malloc() 函數(shù)用來動(dòng)態(tài)地分配內(nèi)存空間(如果你不了解動(dòng)態(tài)內(nèi)存分配,請(qǐng)查看:C語言動(dòng)態(tài)內(nèi)存分配及變量存儲(chǔ)類別),其原型為:
void* malloc (size_t size);
【參數(shù)說明】size 為需要分配的內(nèi)存空間的大小,以字節(jié)(Byte)計(jì)。
【函數(shù)說明】malloc() 在堆區(qū)分配一塊指定大小的內(nèi)存空間,用來存放數(shù)據(jù)。這塊內(nèi)存空間在函數(shù)執(zhí)行完成后不會(huì)被初始化,它們的值是未知的。如果希望在分配內(nèi)存的同時(shí)進(jìn)行初始化,請(qǐng)使用 calloc() 函數(shù)。
【返回值】分配成功返回指向該內(nèi)存的地址,失敗則返回 NULL。
由于申請(qǐng)內(nèi)存空間時(shí)可能有也可能沒有,所以需要自行判斷是否申請(qǐng)成功,再進(jìn)行后續(xù)操作。


(6)

頭文件:#include <stdlib.h>
calloc() 函數(shù)用來動(dòng)態(tài)地分配內(nèi)存空間并初始化為 0,其原型為:
    void* calloc (size_t num, size_t size);
calloc() 在內(nèi)存中動(dòng)態(tài)地分配 num 個(gè)長(zhǎng)度為 size 的連續(xù)空間,并將每一個(gè)字節(jié)都初始化為 0。所以它的結(jié)果是分配了 num*size 個(gè)字節(jié)長(zhǎng)度的內(nèi)存空間,并且每個(gè)字節(jié)的值都是0。
【返回值】分配成功返回指向該內(nèi)存的地址,失敗則返回 NULL。


(7)

頭文件:#include <stdlib.h>
calloc() 函數(shù)是給一個(gè)已經(jīng)分配了地址的指針重新分配空間,參數(shù)ptr為原有的空間地址,newsize是重新申請(qǐng)的地址長(zhǎng)度。其原型為:

   void*  realloc(void * ptr, unsigned newsize)

realloc函數(shù)將ptr的內(nèi)存大小增加到newsize。

返回值:分配成功返回指向該內(nèi)存的地址,失敗則返回 NULL。


(8)

頭文件:#include <stdlib.h>
free() 函數(shù)用來釋放動(dòng)態(tài)分配的內(nèi)存空間,其原型為:
    void free (void* ptr);
free() 可以釋放由 malloc()、calloc()、realloc() 分配的內(nèi)存空間,以便其他程序再次使用。
【參數(shù)說明】ptr 為將要釋放的內(nèi)存空間的地址。
free() 只能釋放動(dòng)態(tài)分配的內(nèi)存空間,并不能釋放任意的內(nèi)存。下面的寫法是錯(cuò)誤的:

int a[10];// ...free(a);

如果 ptr 所指向的內(nèi)存空間不是由上面的三個(gè)函數(shù)所分配的,或者已被釋放,那么調(diào)用 free() 會(huì)有無法預(yù)知的情況發(fā)生。
如果 ptr 為 NULL,那么 free() 不會(huì)有任何作用。
注意:free() 不會(huì)改變 ptr 變量本身的值,調(diào)用 free() 后它仍然會(huì)指向相同的內(nèi)存空間,但是此時(shí)該內(nèi)存已無效,不能被使用。所以建議將 ptr 的值設(shè)置為 NULL,例如:

free(ptr);ptr = NULL;


(9)

頭文件:#include <string.h>
定義函數(shù):void * memchr(const void *s, char c, size_t n);
函數(shù)說明:memchr()從頭開始搜尋s 所指的內(nèi)存內(nèi)容前n 個(gè)字節(jié),直到發(fā)現(xiàn)第一個(gè)值為c 的字節(jié),則返回指向該字節(jié)的指針。
返回值:如果找到指定的字節(jié)則返回該字節(jié)的指針,否則返回0。


(10)

頭文件:#include <string.h>
memmove() 用來復(fù)制內(nèi)存內(nèi)容,其原型為:
    void * memmove(void *dest, const void *src, size_t num);
memmove() 與 memcpy() 類似都是用來復(fù)制 src 所指的內(nèi)存內(nèi)容前 num 個(gè)字節(jié)到 dest 所指的地址上。不同的是,memmove() 更為靈活,當(dāng)src 和 dest 所指的內(nèi)存區(qū)域重疊時(shí),memmove() 仍然可以正確的處理,不過執(zhí)行效率上會(huì)比使用 memcpy() 略慢些。src和dst所指內(nèi)存區(qū)域如果重疊,復(fù)制后src的內(nèi)容會(huì)被更改。

memmove代碼實(shí)現(xiàn):

void * my_memmove(void * dst,const void * src,int count)
{
   void * ret = dst;
   if (dst <= src || (char *)dst >= ((char *)src + count))
   {
      while (count--)
      {
        *(char *)dst = *(char *)src;
            dst = (char *)dst + 1;
            src = (char *)src + 1;
        }
   }
   else
   {
      dst = (char *)dst + count - 1;
      src = (char *)src + count - 1;
      while (count--)
      {
        *(char *)dst = *(char *)src;
        dst = (char *)dst - 1;
        src = (char *)src - 1;
      }
   }
   return(ret);
}
int main()
{
   char a[12];
   puts((char *)my_memmove(a,"ammana_babi",16));
   system("pause");
   return 0;
}


(11)

頭文件:#include <unistd.h>    #include <sys/mman.h>
定義函數(shù):void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize);
函數(shù)說明:mmap()用來將某個(gè)文件內(nèi)容映射到內(nèi)存中,對(duì)該內(nèi)存區(qū)域的存取即是直接對(duì)該文件內(nèi)容的讀寫。

c語言基本函數(shù)返回值:若映射成功則返回映射區(qū)的內(nèi)存起始地址,否則返回MAP_FAILED(-1),錯(cuò)誤原因存于errno 中。
錯(cuò)誤代碼:

  • EBADF  參數(shù)fd 不是有效的文件描述詞。

  • EACCES  存取權(quán)限有誤。如果是MAP_PRIVATE 情況下文件必須可讀,使用MAP_SHARED 則要有PROT_WRITE 以及該文件要能寫入。

  • EINVAL  參數(shù)start、length 或offset 有一個(gè)不合法。

  • EAGAIN  文件被鎖住,或是有太多內(nèi)存被鎖住。

  • ENOMEM  內(nèi)存不足。


(12)

頭文件:#include <unistd.h>       #include <sys/mman.h>
定義函數(shù):int munmap(void *start, size_t length);
函數(shù)說明:munmap()用來取消參數(shù)start 所指的映射內(nèi)存起始地址,參數(shù)length 則是欲取消的內(nèi)存大小。當(dāng)進(jìn)程結(jié)束或利用exec 相關(guān)函數(shù)來執(zhí)行其他程序時(shí),映射內(nèi)存會(huì)自動(dòng)解除,但關(guān)閉對(duì)應(yīng)的文件描述詞時(shí)不會(huì)解除映射。
返回值:如果解除映射成功則返回0,否則返回-1。錯(cuò)誤原因存于errno 中錯(cuò)誤代碼EINVAL參數(shù) start 或length 不合法。


(13)

頭文件:#include <unistd.h>
定義函數(shù):size_t getpagesize(void);
函數(shù)說明:返回一分頁(yè)的大小,單位為字節(jié)(byte)。此為系統(tǒng)的分頁(yè)大小,不一定會(huì)和硬件分頁(yè)大小相同。
返回值:內(nèi)存分頁(yè)大小。
附加說明:在 Intel x86 上其返回值應(yīng)為4096bytes。



二.字符串操作函數(shù):

(1)

頭文件:#include <string.h>
strlen()函數(shù)用來計(jì)算字符串的長(zhǎng)度,其原型為:
    unsigned int strlen (char *s);
【參數(shù)說明】s為指定的字符串。
strlen()用來計(jì)算指定的字符串s 的長(zhǎng)度,不包括結(jié)束字符"\0"。
【返回值】返回字符串s 的字符數(shù)。
注意一下字符數(shù)組,例如
    char str[100] = "http://see.xidian.edu.cn/cpp/u/biaozhunku/";
定義了一個(gè)大小為100的字符數(shù)組,但是僅有開始的11個(gè)字符被初始化了,剩下的都是0,所以 sizeof(str) 等于100,strlen(str) 等于11。
如果字符的個(gè)數(shù)等于字符數(shù)組的大小,那么strlen()的返回值就無法確定了,例如
    char str[6] = "abcxyz";
strlen(str)的返回值將是不確定的。因?yàn)閟tr的結(jié)尾不是0,strlen()會(huì)繼續(xù)向后檢索,直到遇到'\0',而這些區(qū)域的內(nèi)容是不確定的。
注意:strlen() 函數(shù)計(jì)算的是字符串的實(shí)際長(zhǎng)度,遇到第一個(gè)'\0'結(jié)束。如果你只定義沒有給它賦初值,這個(gè)結(jié)果是不定的,它會(huì)從首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是變量聲明后所占的內(nèi)存數(shù),不是實(shí)際長(zhǎng)度,此外sizeof不是函數(shù),僅僅是一個(gè)操作符,strlen()是函數(shù)。


(2)

頭文件:#include <string.h>
定義函數(shù):char *strcpy(char *dest, const char *src);
函數(shù)說明:strcpy()會(huì)將參數(shù)src 字符串拷貝至參數(shù)dest 所指的地址。
返回值:返回參數(shù)dest 的字符串起始地址。
附加說明:如果參數(shù) dest 所指的內(nèi)存空間不夠大,可能會(huì)造成緩沖溢出(buffer Overflow)的錯(cuò)誤情況,在編寫程序時(shí)請(qǐng)?zhí)貏e留意,或者用strncpy()來取代。


(3)

頭文件:#include <string.h>
strcmp() 用來比較字符串(區(qū)分大小寫),其原型為:
    int strcmp(const char *s1, const char *s2);
【參數(shù)】s1, s2 為需要比較的兩個(gè)字符串。
字符串大小的比較是以ASCII 碼表上的順序來決定,此順序亦為字符的值。strcmp()首先將s1 第一個(gè)字符值減去s2 第一個(gè)字符值,若差值為0 則再繼續(xù)比較下個(gè)字符,若差值不為0 則將差值返回。例如字符串"Ac"和"ba"比較則會(huì)返回字符"A"(65)和'b'(98)的差值(-33)。
【返回值】若參數(shù)s1 和s2 字符串相同則返回0。s1 若大于s2 則返回大于0 的值。s1 若小于s2 則返回小于0 的值。
注意:strcmp() 以二進(jìn)制的方式進(jìn)行比較,不會(huì)考慮多字節(jié)或?qū)捵止?jié)字符;如果考慮到本地化的需求,請(qǐng)使用 strcoll() 函數(shù)。


(4)

頭文件:#include <string.h>
strcoll() 函數(shù)根據(jù)環(huán)境變量LC_COLLATE來比較字符串,其原型為:
    int strcoll( const char * str1, const char * str2 );
【參數(shù)說明】str1、str2 是要進(jìn)行比較的兩個(gè)字符串。
函數(shù)說明:strcoll() 會(huì)依環(huán)境變量 LC_COLLATE 所指定的文字排列次序來比較 s1 和 s2 字符串。
默認(rèn)情況下,LC_COLLATE 為"POSIX"或"C",strcoll() 和 strcmp() 一樣根據(jù)ASCII比較字符串大小。
對(duì)于設(shè)置了 LC_COLLATE 語言環(huán)境的情況下,則根據(jù) LC_COLLATE 設(shè)置的語言排序方式進(jìn)行比較。例如,漢字會(huì)根據(jù)拼音進(jìn)行比較。
【返回值】若字符串 str1 和 str2 相同則返回0。若 str1 大于 str2 則返回大于 0 的值,否則返回小于 0 的值。


(5)

頭文件:#include <string.h>
strcat() 函數(shù)用來連接字符串,其原型為:
    char *strcat(char *dest, const char *src);
【參數(shù)】dest 為目的字符串指針,src 為源字符串指針。
strcat() 會(huì)將參數(shù) src 字符串復(fù)制到參數(shù) dest 所指的字符串尾部;dest 最后的結(jié)束字符 NULL 會(huì)被覆蓋掉,并在連接后的字符串的尾部再增加一個(gè) NULL。
注意:dest 與 src 所指的內(nèi)存空間不能重疊,且 dest 要有足夠的空間來容納要復(fù)制的字符串。
【返回值】返回dest 字符串起始地址。


(6)

頭文件:#include <string.h>
strncpy()用來復(fù)制字符串的前n個(gè)字符,其原型為:
    char * strncpy(char *dest, const char *src, size_t n);
【參數(shù)說明】dest 為目標(biāo)字符串指針,src 為源字符串指針。
strncpy()會(huì)將字符串src前n個(gè)字符拷貝到字符串dest。
不像strcpy(),strncpy()不會(huì)向dest追加結(jié)束標(biāo)記'\0',這就引發(fā)了很多不合常理的問題,將在下面的示例中說明。
注意:src 和 dest 所指的內(nèi)存區(qū)域不能重疊,且 dest 必須有足夠的空間放置n個(gè)字符。
【返回值】返回字符串dest。


(7)

頭文件:#inclue <string.h>
strncat()用于將n個(gè)字符追加到字符串的結(jié)尾,其原型為:
    char * strncat(char *dest, const char *src, size_t n);
【參數(shù)說明】dest為目標(biāo)字符串,src為源字符串,n為要追加的字符的數(shù)目。
strncat()將會(huì)從字符串src的開頭拷貝n 個(gè)字符到dest字符串尾部,dest要有足夠的空間來容納要拷貝的字符串。如果n大于字符串src的長(zhǎng)度,那么僅將src全部追加到dest的尾部。
strncat()會(huì)將dest字符串最后的'\0'覆蓋掉,字符追加完成后,再追加'\0'。
【返回值】返回字符串dest。


(8)

頭文件:#include <string.h>
strstr()函數(shù)用來檢索子串在字符串中首次出現(xiàn)的位置,其原型為:
    char *strstr( char *str, char * substr );
【參數(shù)說明】str為要檢索的字符串,substr為要檢索的子串。
【返回值】返回字符串str中第一次出現(xiàn)子串substr的地址;如果沒有檢索到子串,則返回NULL。


(9)

頭文件:#include <string.h>
strchr() 用來查找某字符在字符串中首次出現(xiàn)的位置,其原型為:
    char * strchr (const char *str, int c);
【參數(shù)】str 為要查找的字符串,c 為要查找的字符。
strchr() 將會(huì)找出 str 字符串中第一次出現(xiàn)的字符 c 的地址,然后將該地址返回。
注意:字符串 str 的結(jié)束標(biāo)志 NUL 也會(huì)被納入檢索范圍,所以 str 的組后一個(gè)字符也可以被定位。
【返回值】如果找到指定的字符則返回該字符所在地址,否則返回 NULL。
返回的地址是字符串在內(nèi)存中隨機(jī)分配的地址再加上你所搜索的字符在字符串位置。設(shè)字符在字符串中首次出現(xiàn)的位置為 i,那么返回的地址可以理解為 str + i。
提示:如果希望查找某字符在字符串中最后一次出現(xiàn)的位置,可以使用 strrchr() 函數(shù)。


(10)

頭文件:#include <string.h>
strrchr() 函數(shù)用于查找某字符在字符串中最后一次出現(xiàn)的位置,其原型為:
    char * strrchr(const char *str, int c);
【參數(shù)】str 為要查找的字符串,c 為要查找的字符。
strrchr() 將會(huì)找出 str 字符串中最后一次出現(xiàn)的字符 c 的地址,然后將該地址返回。
注意:字符串 str 的結(jié)束標(biāo)志 NUL 也會(huì)被納入檢索范圍,所以 str 的組后一個(gè)字符也可以被定位。
【返回值】如果找到就返回該字符最后一次出現(xiàn)的位置,否則返回 NULL。
返回的地址是字符串在內(nèi)存中隨機(jī)分配的地址再加上你所搜索的字符在字符串位置。設(shè)字符在字符串中首次出現(xiàn)的位置為 i,那么返回的地址可以理解為 str + i。


(11)

頭文件:#include <string.h>
定義函數(shù):char * strtok(char *s, const char *delim);
函數(shù)說明:strtok()用來將字符串分割成一個(gè)個(gè)片段。參數(shù)s 指向欲分割的字符串,參數(shù)delim 則為分割字符串,當(dāng)strtok()在參數(shù)s 的字符串中發(fā)現(xiàn)到參數(shù)delim 的分割字符時(shí)則會(huì)將該字符改為\0 字符。在第一次調(diào)用時(shí),strtok()必需給予參數(shù)s 字符串,往后的調(diào)用則將參數(shù)s 設(shè)置成NULL。每次調(diào)用成功則返回下一個(gè)分割后的字符串指針。
返回值:返回下一個(gè)分割后的字符串指針,如果已無從分割則返回NULL。


(12)

頭文件:#include <string.h>
定義函數(shù):char * strdup(const char *s);
函數(shù)說明:strdup()會(huì)先用maolloc()配置與參數(shù)s 字符串相同的空間大小,然后將參數(shù)s 字符串的內(nèi)容復(fù)制到該內(nèi)存地址,然后把該地址返回。該地址最后可以利用free()來釋放。
返回值:返回一字符串指針,該指針指向復(fù)制后的新字符串地址。若返回NULL 表示內(nèi)存不足。


(13)

頭文件:#include <ctype.h>
定義函數(shù):int toupper(int c);
函數(shù)說明:若參數(shù) c 為小寫字母則將該對(duì)應(yīng)的大寫字母返回。
返回值:返回轉(zhuǎn)換后的大寫字母,若不須轉(zhuǎn)換則將參數(shù)c 值返回。


(14)

頭文件:#include <stdlib.h>
定義函數(shù):int tolower(int c);
函數(shù)說明:若參數(shù) c 為大寫字母則將該對(duì)應(yīng)的小寫字母返回。
返回值:返回轉(zhuǎn)換后的小寫字母,若不須轉(zhuǎn)換則將參數(shù)c 值返回。


(15)

頭文件:#include <ctype.h>
定義函數(shù):int toascii(int c);
函數(shù)說明:toascii()會(huì)將參數(shù)c 轉(zhuǎn)換成7 位的unsigned char 值,第八位則會(huì)被清除,此字符即會(huì)被轉(zhuǎn)成ASCII碼字符。
返回值:將轉(zhuǎn)換成功的ASCII 碼字符值返回。


(16)

atol() 函數(shù)的名字源于“ascii to long”,用來將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)(long),其原型為:
    long atol(const char * str);
【函數(shù)說明】atol() 會(huì)掃描參數(shù) str 字符串,跳過前面的空白字符(例如空格,tab縮進(jìn)等,可以通過 isspace() 函數(shù)來檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
【返回值】返回轉(zhuǎn)換后的長(zhǎng)整型數(shù)(long);如果 str 不能轉(zhuǎn)換成 long 或者 str 為空字符串,那么將返回 0。
溫馨提示:ANSI C 規(guī)范定義了 stof()、atoi()、atol()、strtod()、strtol()、strtoul() 共6個(gè)可以將字符串轉(zhuǎn)換為數(shù)字的函數(shù),大家可以對(duì)比學(xué)習(xí);使用 atol() 與使用strtol(nptr, NULL, 10) 結(jié)果相同。另外在 C99 / C++11 規(guī)范中又新增了5個(gè)函數(shù),分別是 atoll()、strtof()、strtold()、strtoll()、strtoull()。在此不做介紹,請(qǐng)大家自行學(xué)習(xí)。


(17)

頭文件:#include <stdlib.h>
atoi() 函數(shù)用來將字符串轉(zhuǎn)換成整數(shù)(int),其原型為:
int atoi (const char * str);
【函數(shù)說明】atoi() 函數(shù)會(huì)掃描參數(shù) str 字符串,跳過前面的空白字符(例如空格,tab縮進(jìn)等,可以通過 isspace()函數(shù)來檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
【返回值】返回轉(zhuǎn)換后的整型數(shù);如果 str 不能轉(zhuǎn)換成 int 或者 str 為空字符串,那么將返回 0。


(18)

頭文件:#include <stdlib.h>
函數(shù) atof() 用于將字符串轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)(double),其原型為:
double atof (const char* str);
atof() 的名字來源于 ascii to floating point numbers 的縮寫,它會(huì)掃描參數(shù)str字符串,跳過前面的空白字符(例如空格,tab縮進(jìn)等,可以通過 isspace() 函數(shù)來檢測(cè)),直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,而再遇到非數(shù)字或字符串結(jié)束時(shí)('\0')才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。參數(shù)str 字符串可包含正負(fù)號(hào)、小數(shù)點(diǎn)或E(e)來表示指數(shù)部分,如123. 456 或123e-2。
【返回值】返回轉(zhuǎn)換后的浮點(diǎn)數(shù);如果字符串 str 不能被轉(zhuǎn)換為 double,那么返回 0.0   。



三.文件操作函數(shù):

詳情可以參考我的另一篇博客:http://10704527.blog.51cto.com/10694527/1763701



四.數(shù)學(xué)函數(shù):

(1)

頭文件:#include <math.h>
sqrt() 用來求給定值的平方根,其原型為:
    double sqrt(double x);
【參數(shù)】x 為要計(jì)算平方根的值。
如果 x < 0,將會(huì)導(dǎo)致 domain error 錯(cuò)誤,并把全局變量 errno 的值為設(shè)置為 EDOM。
【返回值】返回 x 平方根。
注意,使用 GCC 編譯時(shí)請(qǐng)加入-lm。


(2)

頭文件:#include <math.h>
pow() 函數(shù)用來求 x 的 y 次冪(次方),其原型為:
    double pow(double x, double y);
pow()用來計(jì)算以x 為底的 y 次方值,然后將結(jié)果返回。設(shè)返回值為 ret,則 ret = xy。
可能導(dǎo)致錯(cuò)誤的情況:

  • 如果底數(shù) x 為負(fù)數(shù)并且指數(shù) y 不是整數(shù),將會(huì)導(dǎo)致 domain error 錯(cuò)誤。

  • 如果底數(shù) x 和指數(shù) y 都是 0,可能會(huì)導(dǎo)致 domain error 錯(cuò)誤,也可能沒有;這跟庫(kù)的實(shí)現(xiàn)有關(guān)。

  • 如果底數(shù) x 是 0,指數(shù) y 是負(fù)數(shù),可能會(huì)導(dǎo)致 domain error 或 pole error 錯(cuò)誤,也可能沒有;這跟庫(kù)的實(shí)現(xiàn)有關(guān)。

  • 如果返回值 ret 太大或者太小,將會(huì)導(dǎo)致 range error 錯(cuò)誤。

錯(cuò)誤代碼:

  • 如果發(fā)生 domain error 錯(cuò)誤,那么全局變量 errno 將被設(shè)置為  EDOM;

  • 如果發(fā)生 pole error 或 range error 錯(cuò)誤,那么全局變量 errno 將被設(shè)置為 ERANGE。

注意,使用 GCC 編譯時(shí)請(qǐng)加入-lm。


(3)

頭文件:#include <stdlib.h>
定義函數(shù):int abs (int j);
函數(shù)說明:abs()用來計(jì)算參數(shù)j 的絕對(duì)值,然后將結(jié)果返回。
返回值:返回參數(shù)j 的絕對(duì)值結(jié)果。


(4)

頭文件:#include <math.h>
log() 函數(shù)返回以 e 為底的對(duì)數(shù)值,其原型為:
    double log (double x);
log()用來計(jì)算以e為底的 x 的對(duì)數(shù)值,然后將結(jié)果返回。設(shè)返回值為 ret,則
x = eret
如果 x 為負(fù)數(shù)或 0,則會(huì)發(fā)生錯(cuò)誤并設(shè)置 errno 值。錯(cuò)誤代碼:

  • EDOM:參數(shù)x 為負(fù)數(shù);

  • ERANGE:參數(shù)x 為零值,零的對(duì)數(shù)值無定義。

注意:使用 GCC 編譯時(shí)請(qǐng)加入-lm。


(5)

頭文件:#include <math.h>
log10() 返回以10為底的對(duì)數(shù)值,其原型為:
    double log10(double x);
log10()用來計(jì)算以10為底的 x 的對(duì)數(shù)值,然后將結(jié)果返回。設(shè)返回值為 ret,則
x = 10ret
返回值:返回參數(shù)x 以10 為底的對(duì)數(shù)值。
如果 x 為負(fù)數(shù)或 0,則會(huì)發(fā)生錯(cuò)誤并設(shè)置 errno 值。錯(cuò)誤代碼:

  • EDOM:參數(shù)x 為負(fù)數(shù);

  • ERANGE:參數(shù)x 為零值,零的對(duì)數(shù)值無定義。

注意:使用 GCC 編譯時(shí)請(qǐng)加入-lm。



本文名稱:c語言基本函數(shù)
鏈接地址:http://chinadenli.net/article22/pihgcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃營(yíng)銷型網(wǎng)站建設(shè)、小程序開發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站建設(shè)、虛擬主機(jī)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名