常用C语言库函数
1. 内存操作函数
(int *)malloc(100*sizeof(int)); // #include
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
//安全函数版本
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
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));