常用C語言庫函數
1. 記憶體操作函數
(int *)malloc(100*sizeof(int)); // #include<stdlib.h>
void *memcpy(void *destin, const void* src, size_t count ); 傳回值指向目标存儲區
void *memmove( void* dest, const void* src, size_t count ); 傳回值指向目标存儲區
void * memset(void * dest,int ch,size_t count); 傳回值指向被指派的位址區域
void *malloc(size_t size); 傳回值指向被配置設定的區域位址
//安全函數版, 安全函數增加目标位址的長度校驗和傳回值
errno_t memcpy_s(void *dest, size_t destMax, const void *src, size_t count);
errno_t memmove_s(void *dest, size_t destMax, const void *src, size_t count);
errno_t memset_s(void *dest,rsize_t destsz,int ch,rsize_t count)
2. 字元串操作函數
size_t strlen(char const* str); 計算字元串長度,不包括 '\0' 結束符。本函數無安全函數版本
size_t strnlen(const char *str, size_t maxlen); 直到碰到第一個字元串結束符'\0'或計數器到達以下的maxlen為止,然後傳回計數器值 //不常用,此函數有安全函數版本
char *strcpy(char* dest, const char *src); 傳回目的位址 strcpy把含有'\0'結束符的字元串複制到另一個位址空間
char *strncpy(char *dest, const char *src, int count); 複制前count個位元組,傳回目的位址。不會自動添加'\0'符号。
char *strcat(char* dest, const char *src);
char *strncat(char *dest, const char *src, int count);
int
strcmp
(
const
char
*s1,
const
char
*s2); 一直比較,直到出現不同的字元或者'\0',
若str1=str2,則傳回零;若str1<str2,則傳回負數;若str1>str2,則傳回正數
//安全函數版本
errno_t strcpy_s(char *dest, rsize_t destsz, const char * src);
errno_t strncpy_s(char* dest, rsize_t destsz, char * src, int count);
errno_t strcat_s(char *dest, rsize_t destsz, const char * src);
errno_t strncat_s(char* dest, rsize_t destsz, char * src, int count);
3. 格式化輸出
printf("% d % d\n", curLength, maxLength); // #include<stdio.h>
sprintf(s, "%d", 123); //把整數123列印成一個字元串儲存在s中
int printf(const char *format, ...); 成功傳回輸出的字元個數,失敗傳回負數
int sprintf(char *string, char *format [,argument,...]); 成功傳回寫入的字元個數,失敗傳回負數
int sprintf_s(char* strDest, size_t destMax, const char* format, ...) 成功傳回寫入的字元個數,失敗傳回負數
int snprintf(char* strDest, size_t count, const char* format, ..);成功傳回寫入的字元個數,失敗傳回負數
int snprintf_s(char* strDest, size_t destMax, size_t count, const char* format, ..);成功傳回寫入的字元個數,失敗傳回負數
4. 格式化輸入
int scanf(const char * restrict format,...); 成功傳回輸入的字元個數,失敗或遇到檔案結束,則傳回EOF,end of file。
scanf函數傳回成功讀入的資料項數,讀入資料時遇到了“檔案結束”則傳回EOF
int scanf_s(const char* restrict format, ...);
scanf_s()用于讀取字元串時,必須提供一個數字以表明最多讀取多少位字元,以防止溢出。輸入整數時,則沒有差別。
如下所示:
scanf_s("%d", &i);
scanf_s("%c", &c, 1);
scanf_s("%s", string, sizeof(string));