1. 程式人生 > >慢慢總結C語言一些常用函式

慢慢總結C語言一些常用函式

fgets
標頭檔案:    #include <stdio.h>
函式原型:char *fgets(char *s, int size, FILE *stream);
返回值:    成功時s指向哪返回的指標就指向哪,出錯或者讀到檔案末尾時返回NULL。
說明:        fgets從指定的檔案中讀一行字元到呼叫者提供的緩衝區中。

gets
標頭檔案:    #include <stdio.h>
函式原型:char *gets(char *s);
返回值:    成功時s指向哪返回的指標就指向哪,出錯或者讀到檔案末尾時返回NULL。
說明:        gets從標準輸入讀一行字元到呼叫者提供的緩衝區中。

popen
標頭檔案:    #include <stdio.h>
函式原型:FILE * popen(const char *command , const char *type );

返回值:    如果呼叫fork()或pipe()失敗,或者不能分配記憶體將返回NULL,否則返回標準I/O流。

                    popen()沒有為記憶體分配失敗設定errno值。

                    如果呼叫fork()或pipe()時出現錯誤errno被設為相應的錯誤型別。

                    如果type引數不合法,errno將返回EINVAL。

說明:        popen()函式通過建立一個管道,呼叫fork()產生一個子程序,

                    執行一個shell以執行命令來開啟一個程序。

                    這個管道必須由pclose()函式關閉,而不是fclose()函式。

                    pclose()函式關閉標準I/O流,等待命令執行結束,然後返回shell的終止狀態。

                    如果shell不能被執行,則pclose()返回的終止狀態與shell已執行exit一樣。

              type引數只能是讀或寫中的一種,得到的返回值(標準I/O流)也具有和type相應的只讀或只寫型別。

                    如果type是"r"則檔案指標連線到command的標準輸出;

                    如果type是"w"則檔案指標連線到command的標準輸入。

              command引數是一個指向以NULL結束的shell命令字串的指標。

                    這行命令將被傳到bin/sh並使用-c標誌,shell將執行這個命令。

              popen()的返回值是個標準I/O流,必須由pclose終止。而這個流是單向的(只能用於讀或寫)。

                    向這個流寫內容相當於寫入該命令的標準輸入,命令的標準輸出 和呼叫popen()的程序相同;

                    與之相反的,從流中讀資料相當於讀取命令的標準輸出,命令的標準輸入和呼叫popen()的程序相同。


pclose
標頭檔案:    #include <stdio.h>
函式原型:int pclose(FILE *stream);
返回值:    若成功返回shell的終止狀態(也即子程序的終止狀態),若出錯返回-1,錯誤原因存於errno中。
說明:        見"popen"說明。

strlen
標頭檔案:    #include <string.h>
函式原型:extern int strlen(char *s);
返回值:    返回s的長度,不包括結束符NULL。
說明:        計算字串s的(unsigned int型)長度。

atof
標頭檔案:    #include <stdlib.h>
函式原型:double atof(const char* str);
返回值:    返回轉換後的浮點數;如果字串 str 不能被轉換為 double,那麼返回 0.0。

說明:        atof() 的名字來源於 ascii to floating point numbers 的縮寫,它會掃描引數str字串,

                    跳過前面的空白字元(例如空格,tab縮排等,可以通過 isspace() 函式來檢測),

                    直到遇上數字或正負符號才開始做轉換,而再遇到非數字或字串結束'\0'才結束轉換,

                    並將結果返回。

                    引數str 字串可包含正負號、小數點或E(e)來表示指數部分, 如123. 456 或123e-2。


atoi
標頭檔案:    #include <stdlib.h>
函式原型:int atoi(const char *nptr); 
返回值:    返回整型數。否則,返回零。

說明:        數nptr字串,如果第一個非空格字元存在,是數字或者正負號則開始做型別轉換,

                   之後檢測到非數字(包括結束符 \0) 字元時停止轉換。


memcpy
標頭檔案:    #include <string.h>
函式原型:extern void *memcpy(void *dest, void *src, unsigned int count);
返回值:    函式返回指向dest的指標。
說明:        由src所指記憶體區域複製count個位元組到dest所指記憶體區域,src和dest所指記憶體區域不能重疊。

memset
標頭檔案:    #include <string.h>
函式原型:extern void *memset(void *buffer, int c, int count);
返回值:    其返回值為指向buffer的指標。

說明:        把buffer所指記憶體區域的前count個位元組設定成字元c,

                    它是對較大的結構體或陣列進行清零操作的一種最快方法。


sprintf
標頭檔案:#include <stdio.h>
函式原型:int sprintf(char *buffer, const char *format [, argument] … );
返回值:字串長度 strlen。
說明:把格式化的資料寫入某個字串,注意可變引數的使用。

strchr
標頭檔案:    #include <string.h>
函式原型:extern char *strchr(char *str,char character);
返回值:    返回指向第一次出現字元character位置的指標,如果沒找到則返回NULL。

說明:        從字串str中尋找字元character第一次出現的位置,

                    str為一個字串的指標,character為一個待查詢字元。


scanf
標頭檔案:    #include <stdio.h>
函式原型:int scanf(char *format[,argument,...]);
返回值:    scanf()函式返回成功賦值的資料項數,出錯時則返回EOF。

說明:        scanf()函式是通用終端格式化輸入函式,它從標準輸入裝置(鍵盤) 讀取輸入的資訊。

                    可以讀入任何固有型別的資料並自動把數值變換成適當的機內格式。

                    其呼叫格式為: scanf("<格式化字串>",<地址表>);
                    其控制串由三類字元構成:
                            1。格式化說明符;
                            2。空白符;
                            3。非空白符;

                 (A)格式化說明符
                            格式字元           說明
                            %a                 讀入一個浮點值(僅C99有效) 
                            %A                 同上
                            %c                 讀入一個字元
                            %d                 讀入十進位制整數
                            %i                  讀入十進位制,八進位制,十六進位制整數
                            %o                 讀入八進位制整數
                            %x                 讀入十六進位制整數
                            %X                同上
                            %c                 讀入一個字元
                            %s                 讀入一個字串
                            %f                  讀入一個浮點數
                            %F                 同上
                            %e                 同上
                            %E                 同上
                            %g                 同上
                            %G                 同上
                            %p                 讀入一個指標
                            %u                 讀入一個無符號十進位制整數
                            %n                 至此已讀入值的等價字元數

                            %[]                 掃描字元集合

                            %%                讀%符號

                   附加格式說明字元表
                            修飾符                            說明
                            L/l 長度修飾符               輸入"長"資料
                            h 長度修飾符                 輸入"短"資料
                            W 整型常數                   指定輸入資料所佔寬度
                            * 星號                             空讀一個數據 
                            hh,ll同上h,l但僅對C99有效。

                 (B)空白字元

                            空白字元會使scanf()函式在讀操作中略去輸入中的一個或多個空白字元,

                            空白符可以是space,tab,newline等等,直到第一個非空白符出現為止。

                 (C)非空白字元
                            一個非空白字元會使scanf()函式在讀入時剔除掉與這個非空白字元相同的字元。

sscanf
標頭檔案:    #include <stdio.h>
函式原型:int sscanf(const char *buffer,const char *format,[argument ]...);
返回值:    失敗返回0 ,否則返回格式化的引數個數。
說明:        sscanf會從buffer裡讀進資料,依照format的格式將資料寫入到argument裡。
                    第二個引數可以是一個或多個 {%[*] [width] [{h | I | I64 | L}]type | ' ' | '\t' | '\n' | 非%符號}。
                    注:

                           1、 * 亦可用於格式中, (即 %*d 和 %*s) 加了星號 (*) 表示跳過此資料不讀入,

                                  也就是不把此資料讀入引數中。

                           2、{a|b|c}表示a,b,c中選一,[d],表示可以有d也可以沒有d。
                           3、width表示讀取寬度。

                           4、{h | l | I64 | L}:引數的size,通常h表示單位元組size,I表示2位元組 size,

                                 L表示4位元組size(double例外),l64表示8位元組size。

                           5、type :這就很多了,就是%s,%d之類。

                           6、特別的:%*[width] [{h | l | I64 | L}]type 表示滿足該條件的被過濾掉,

                                 不會向目標引數中寫入值。

                   如:
                           sscanf("123456 abcdedf", "%[^ ]", buf);

                     printf("%s/n", buf);

                           結果為:123456


isspace
標頭檔案:    #include <ctype.h>
函式原型:extern int isspace(int c);

返回值:    當c為空白符時,返回非零值,否則返回零。

                    空白符指空格、水平製表、垂直製表、換頁、回車和換行符。

說明:        判斷字元c是否為空白符。

strcmp
標頭檔案:    #include <string.h>
函式原型:int strcmp(const char *s1, const char *s2);

返回值:    若引數s1 和s2 字串相同則返回0。s1 若大於s2 則返回大於0 的值。

                    s1 若小於s2 則返回小於0 的值。

說明:        s1, s2 為需要比較的兩個字串。

                    字串大小的比較是以ASCII 碼錶上的順序來決定,此順序亦為字元的值。

                    strcmp()首先將s1 第一個字元值減去s2 第一個字元值,

                    若差值為0 則再繼續比較下個字元,若差值不為0 則將差值返回。


strcoll
標頭檔案:    #include <string.h>
函式原型:int strcoll( const char * str1, const char * str2 );
返回值:    若字串 str1 和 str2 相同則返回0。若 str1 大於 str2 則返回大於 0 的值,否則返回小於 0 的值。

說明:        strcoll() 會依環境變數 LC_COLLATE 所指定的文字排列次序來比較 s1 和 s2 字串。

                    預設情況下,LC_COLLATE 為"POSIX"或"C",strcoll() 和 strcmp() 一樣根據ASCII 比較字串大小。

                    對於設定了 LC_COLLATE 語言環境的情況下,

                    則根據 LC_COLLATE 設定的語言排序方式進行比較, 例如,漢字會根據拼音進行比較。