C語言鞏固之常用函數整理

一、引言

突然發現自己C語言的很多東西,不經常用,就忘了,就包括C語言的很多函數,今天就來詳細整理下

二、常用函數

大致分爲:
1.常用的字符串處理函數
2.常用的內存操作處理函數
3.文件的標準庫函數
4.系統調用函數

常用的字符串處理函數:

1、輸入輸出

/*
putchar輸出一個char
*/
int putchar(int ch);

/*
getchar是從標準輸入設備讀取一個char
*/
int getchar(void);

/*
功能:從標準輸入讀入字符,並保存到s指定的內存空間,直到出現換行符或讀到文件結尾爲止。
參數:
    s:字符串首地址
返回值:
    成功:讀入的字符串
    失敗:NULL
*/ 
char *gets(char *s);

/*
功能:標準設備輸出s字符串,在輸出完成後自動輸出一個'\n'。
參數:
    s:字符串首地址
返回值:
    成功:非負數
    失敗:-1
*/
int puts(const char *string);

/*功能:根據參數format字符串來轉換並格式化數據,然後將結果輸出到str指定的空間中,直到出現字符串結束符 '\0'  爲止。
參數:
    str:字符串首地址
    format:字符串格式,用法和printf()一樣
返回值:
    成功:實際格式化的字符個數
    失敗: - 1
*/
int sprintf(char *str, const char *format, ...);

/*功能:從str指定的字符串讀取數據,並根據參數format字符串來轉換並格式化數據。
參數:
    str:指定的字符串首地址
    format:字符串格式,用法和scanf()一樣
返回值:
    成功:實際讀取的字符個數
    失敗: - 1
*/  
int sscanf(const char *str, const char *format, ...);

2、字符串處理

/*
功能:計算指定指定字符串s的長度,不包含字符串結束符‘\0’
參數:
s:字符串首地址
返回值:字符串s的長度,size_t爲unsigned int類型
*/
size_t strlen(const char *s);

/*
功能:把src所指向的字符串複製到dest所指向的空間中,'\0'也會拷貝過去
參數:
    dest:目的字符串首地址
    src:源字符首地址
返回值:
    成功:返回dest字符串的首地址
    失敗:NULL
注意:此函數不是一個安全的函數,因爲沒有指定copy的大小,可能會造成越界。推薦使用strcpy_s(char *dest,size_t size,const char *src)
*/
char *strcpy(char *dest, const char *src);

/*
功能:比較 s1 和 s2 的大小
參數:
    s1:字符串1首地址
    s2:字符串2首地址
返回值:
    相等:0
    大於:>0
    小於:<0
*/  
int strcmp(const char *s1, const char *s2);

/*功能:將src字符串連接到dest的尾部,‘\0’也會追加過去
參數:
    dest:目的字符串首地址
    src:源字符首地址
返回值:
    成功:返回dest字符串的首地址
    失敗:NULL
*/
char *strcat(char *dest, const char *src);

/*功能:在字符串haystack中查找字符串needle出現的位置
參數:
    haystack:源字符串首地址
    needle:匹配字符串首地址
返回值:
    成功:返回第一次出現的needle地址
*/
char *strstr(const char *haystack, const char *needle);

/*功能:來將字符串分割成一個個片段。當strtok()在參數s的字符串中發現參數delim中包含的分割字符時, 則會將該字符改爲\0 字符,當連續出現多個時只替換第一個爲\0。
參數:
    str:指向欲分割的字符串
    delim:爲分割字符串中包含的所有字符
返回值:
    成功:分割後字符串首地址
    失敗:NULL
注意:在第一次調用時:strtok()必需給予參數s字符串
往後的調用則將參數s設置成NULL,每次調用成功則返回指向被分割出片段的指針
*/
char *strtok(char *str, const char *delim);

/*
功能:atoi()會掃描nptr字符串將字符串轉換成整數
跳過前面的空格字符,直到遇到數字或正負號纔開始做轉換,而遇到非數字或字符串結束符('\0')才結束轉換,並將結果返回返回值。
參數:
    nptr:待轉換的字符串
   返回值:成功轉換後整數
*/
int atoi(const char *nptr);

/*
功能:int value 被轉換的整數
char *string 轉換後儲存的字符數組,int radix 轉換進制數,如2,8,10,16 進制等
參數:
    value:需要轉換的值
    char *str:字符串首地址
    radix:基數,也就是需要轉換的進制數
返回值:函數返回一個指向 str,無錯誤返回。
*/
char*itoa(int value,char*string,int radix);

3、內存操作函數


/*
功能:將s的內存區域的前n個字節以參數c填入
參數:
    s:需要操作內存s的首地址
    c:填充的字符,c雖然參數爲int,但必須是unsigned char , 範圍爲0~255
    n:指定需要設置的大小
返回值:s的首地址
*/
void *memset(void *s, int c, size_t n);


/*
功能:拷貝src所指的內存內容的前n個字節到dest所值的內存地址上。
參數:
    dest:目的內存首地址
    src:源內存首地址,注意:dest和src所指的內存空間不可重疊
    n:需要拷貝的字節數
返回值:dest的首地址
*/
void *memcpy(void *dest, const void *src, size_t n);


/*memmove()功能用法和memcpy()一樣,區別在於:dest和src所指的內存空間重疊時,memmove()仍然能處理,不過執行效率比memcpy()低些。*/
void *memmove(void *dest, const void *src, size_t n);


/*
功能:比較s1和s2所指向內存區域的前n個字節
參數:
    s1:內存首地址1
    s2:內存首地址2
    n:需比較的前n個字節
返回值:
    相等:=0
    大於:>0
    小於:<0
*/
int memcmp(const void *s1, const void *s2, size_t n);


/*
功能:在內存的動態存儲區(堆區)中分配一塊長度爲size字節的連續區域,用來存放類型說明符指定的類型。分配的內存空間內容不確定,一般使用memset初始化。
參數:
    size:需要分配內存大小(單位:字節)
返回值:
成功:分配空間的起始地址
失敗:NULL
*/
void *malloc(size_t size);

/*
功能:爲nmemb個元素的數組分配內存空間,其中,每個元素的長度都是size個字節,分配的內存空間內容全部置零
參數:
    nmemb:需要分配的元素個數
    newsize:元素的大小
返回值:
成功:分配空間的起始地址
失敗:NULL
*/
void *calloc(size_t nmenb, size_t size); 

/*
功能:功能:改變mem_address所指內存區域的大小爲newsize長度
參數:
    ptr:原指針地址
    new_size:需要內存的新大小
返回值:
成功:分配空間的起始地址
失敗:NULL
*/
void *realloc (void *ptr, size_t new_size );
/*
功能:釋放ptr所指向的一塊內存空間,ptr是一個任意類型的指針變量,指向被釋放區域的首地址。對同一內存空間多次釋放會出錯。
參數:
ptr:需要釋放空間的首地址,被釋放區應是由malloc函數所分配的區域。
返回值:無
*/
void free(void *ptr);

4、文件的標準庫函數

/*
功能:將ch轉換爲unsigned char後寫入stream指定的文件中
參數:
    ch:需要寫入文件的字符
    stream:文件指針
返回值:
    成功:成功寫入文件的字符
    失敗:返回-1
*/
int fputc(int ch, FILE * stream);

/*
功能:從stream指定的文件中讀取一個字符
參數:
    stream:文件指針
返回值:
    成功:返回讀取到的字符
    失敗:-1
*/
int fgetc(FILE * stream);

/*
功能:檢測是否讀取到了文件結尾。判斷的是最後一次“讀操作的內容”,不是當前位置內容(上一個內容)。
參數:
    stream:文件指針
返回值:
    非0值:已經到文件結尾
    0:沒有到文件結尾
*/
int feof(FILE * stream);

/*
功能:將str所指定的字符串寫入到stream指定的文件中,字符串結束符 '\0'  不寫入文件。 
參數:
    str:字符串
    stream:文件指針
返回值:
    成功:0
    失敗:-1
*/
int fputs(const char * str, FILE * stream);

/*
功能:從stream指定的文件內讀入字符,保存到str所指定的內存空間,直到出現換行字符、讀到文件結尾或是已讀了size - 1個字符爲止,最後會自動加上字符 '\0' 作爲字符串結束。
參數:
    str:字符串
    size:指定最大讀取字符串的長度(size - 1)
    stream:文件指針
返回值:
    成功:成功讀取的字符串
    讀到文件尾或出錯: NULL
*/
char * fgets(char * str, int size, FILE * stream);

/*
功能:根據參數format字符串來轉換並格式化數據,然後將結果輸出到stream指定的文件中,指定出現字符串結束符 '\0'  爲止。
參數:
    stream:已經打開的文件
    format:字符串格式,用法和printf()一樣
返回值:
    成功:實際寫入文件的字符個數
    失敗:-1
*/
int fprintf(FILE * stream, const char * format, ...);

/*
功能:根據參數format字符串來轉換並格式化數據,然後將結果輸出到stream指定的文件中,指定出現字符串結束符 '\0'  爲止。
參數:
    stream:已經打開的文件
    format:字符串格式,用法和printf()一樣
返回值:
    成功:實際寫入文件的字符個數
    失敗:-1
*/
int fprintf(FILE * stream, const char * format, ...);

/*
功能:移動文件流(文件光標)的讀寫位置。
參數:
    stream:已經打開的文件指針
    offset:根據whence來移動的位移數(偏移量),可以是正數,也可以負數,如果正數,則相對於whence往右移動,如果是負數,則相對於whence往左移動。如果向前移動的字節數超過了文件開頭則出錯返回,如果向後移動的字節數超過了 文件末尾,再次寫入時將增大文件尺寸。
    whence:其取值如下:
        SEEK_SET:從文件開頭移動offset個字節
        SEEK_CUR:從當前位置移動offset個字節
        SEEK_END:從文件末尾移動offset個字節
返回值:
    成功:0
    失敗:-1
    */
int fseek(FILE *stream, long offset, int whence);

/*功能:獲取文件流(文件光標)的讀寫位置。
參數:
    stream:已經打開的文件指針
返回值:
    成功:當前文件流(文件光標)的讀寫位置
    失敗:-1
*/
long ftell(FILE *stream);

/*功能:把文件流(文件光標)的讀寫位置移動到文件開頭。
參數:
    stream:已經打開的文件指針
返回值:
    無返回值
*/
void rewind(FILE *stream);

/*功能:更新緩衝區,讓緩衝區的數據立馬寫到文件中。
參數:
stream:文件指針
返回值:
成功:0
失敗:-1
*/
int fflush(FILE *stream);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章