头文件:string.h
一、计算字符串长度函数:strlen ()
不把\0计算在内
二、字符串粘贴函数:strcat ()
格式:strcat (str1, str2);
把str2的一份拷贝添加到str1的结尾,使str1变成一个新的字符串,而str2不改变
strcat ()函数的返回值是指向char的指针,也就是新的str1字符串第一个字符的地址
组合之后的str1的存储空间应+1以用来存放空字符
弊端:str2不会去考虑str1是否能够容纳它,可能出现溢出
三、限制粘贴大小的字符串粘贴函数:strncat ()
格式:strncat (str1, str2, int n);
把str2的内容加在str1后面,直到加到n个字符或者遇到空字符为止,由先达到的来终止添加
四、字符串比较函数:strcmp ()
格式:strcmp (str1, str2);
如果str1、str2两个字符串参数完全相同,则函数返回0;
不相同的话,返回值按照一下规则:从str1[0]和str2[0]开始比较,在ASCII中,如果str1[0]的位置在str2[0]的前面,那么是str1[0]-str2[0],是负值;如果str1[0]的位置在str2[0]的后面,那么是str1[0]-str2[0],是正值;如果第一对是相同的,直到找到一对不相同的为止。
只是比较字符串,所以可以用来比较放在不同大小数组里的字符串
比较字符串参数,不能比较字符’A’之类的
五、指定字符串比较长度的函数:strncmp ();
格式:strncmp (str1, “astro”, int n);
比较str1和”astro”两个字符串前n个字符
六、字符串复制函数:strcpy ()
格式:strcpy (str1, str2);
str2可以是一个已声明的指针、数组名或字符串常量。
str1必须初始化,指向空间大道足够容纳复制字符串的数据对象,比如说一个数组。
声明为一个数组,那么为数据分配存储空间,声明为一个指针,只为一个地址分配存储空间
返回值是第一个参数的值,是一个字符的地址,不过不用指向数组的开始,就可以只复制数组的一部分。
例: char * ps;
char copy [] = “Be the best that you can be.”;
char * orig = “beast”;
ps = strcpy (copy + 7, orig);
puts (copy); //Be the beast
puts (ps); //beast
把”beast"复制到copy数组的第8个字符处,beast后面的空字符\0代替了copy中that的t,ps指向了copy数组的第8个字符,遇到空字符。
七、指明最大可复制的字符数的函数:strncpy ()
格式:strncpy (target, source, n);
从source把n-1个字符或者空字符之前的字符复制到target,为什么不是n个字符呢,因为如果source的前n个字符中没有空字符,那么可能最终的字符串里面就没有空字符了,所以要少复制一个字符,可以把空字符放在最后的内存空间中。
八、sprintf ()
格式:sprintf (str1, “%s, %-12s: $6.2f\n”,”Teddy”, “Behr”, 2000);
把Teddy, Behr : $2000.00存放进字符串数组str1中
第一个参数str1只是目标字符串的地址
剩下的和printf ()一样
sprintf ()函数的原型在头文件stdio.h中,不在头文件string.h中
如果要用puts (str1)的话,如果只需要1个换行符,那么可以把sprintf ()中的换行符删除 |
|