C语言库函数学习(2)

1、strncpy
原型:extern char *strncpy(char *dest, char *src, int n);
功能:把src所指由NULL结束的字符串的前n个字节复制到dest所指的数组中。
说明:如果src的前n个字节不含NULL字符,则结果不会以NULL字符结束。
如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节。
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。

2、strncat
原型:extern char *strncat(char *dest, char *src, int n);
功能:把src所指字符串的前n个字符添加到dest结尾处(覆盖dest结尾处的’\0′)并添加’\0’。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。

3、strncmp
原型:extern int strcmp(char *s1, char *s2, int n);
功能:比较字符串s1和s2的前n个字符。
比较结果:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0

4、strupr
原型:extern char *strupr(char *s);
功能:将字符串s转换为大写形式。将字符串中所有小写字母转换为大写字母。
说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针。

5、strlwr
原型:extern char *strlwr(char *s);
功能:将字符串s转换为小写形式。将字符串中所有大写字母转换为小写字母。
说明:只转换s中出现的大写字母,不改变其它字符。返回指向s的指针。

==========堆分配动态内存==========
6、malloc
原型:extern void *malloc(unsigned int num_bytes);
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
备注:由于malloc函数值的类型为void型指针,因此,可以将其值类型强制转换后赋值给任意类型指针,这样就可以通过操作该类型指针来操作从堆上获得的内存空间。

7、calloc
原型:extern void *calloc(int num_elems, int elem_size);
功能:为具有num_elems个长度为elem_size元素的数组分配内存
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
备注:该函数与malloc函数一个显著的不同是,calloc函数得到的内存空间是经过初始化的,其内容为全0。常用于为数组申请内存。

8、realloc
原型:extern void *realloc(void *mem_address, unsigned int newsize);
功能:改变mem_address所指向内存区域的大小为newsize长度。改变原有堆内存空间大小。
说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
备注:如果newsize小于或等于mem_address之前指向的空间大小,那么,保持原有状态不变。如果newsize大于原来mem_address之前指向的空间大小,那么,系统将重新为mem_address从堆上分配一块大小为newsize的内存空间,同时,将mem_address原来指向空间的内容依次复制到新的内存空间上,mem_address之前指向的空间被释放。

9、free
原型:extern void free(void *p);
功能:释放指针p所指向的的内存空间。
说明:p所指向的内存空间必须是用malloc、calloc、realloc所分配的内存。如果p为NULL或指向不存在的内存块则不做任何操作。
备注:由于形参为void指针,free函数可以接受任意类型的指针实参。