分类: LINUX
2012-07-10 09:40:49
字符串处理库提供了许多有用的函数,分别用来操作字符串数据、比较字符串、在字符串中查找字符和其他字符串、标记字符串(将字符串划分为逻辑段)和确定字符串的长度。
本章说明了字符串处理库的字符串操作函数,讲师将总结这些函数,每个函数(strncpy除外)都在结果之后追加空字符。
Char *strcpy(char *s1,const char* s2)将字符串s2复制到数组s1中,返回s1的值
Char *strncpy(char *s1,const char* s2,size_tn)将字符串s2中的最多n个字符复制到数组s1中,返回s1的值
Char *strcat(char *s1,const char* s2)将字符串s2追加在s1之后,s2的第一个字符将覆盖s1的空字符,返回s1的值
Char *strcpy(char *s1,const char* s2,size_tn)将字符串s2最多n字符追加到数组s1中,s2的第一个字符覆盖s1的空字符,返回s1的值
注意,函数strncpy和strncat规定的参数类型是size_t。类型size_t是标准定义的类型,作为运算符sizeof返回值的类型。
函数strcpy将它的第2参数复制到第1个参数中,函数strncpy和strcpy类似,只是strncpy规定了从字符串复制到数组中的字符个数,注意,函数strncpy并不需要复制第2个参数的空字符,仅仅在要复制的字符个数比字符串长度至少小1的情况下,才复制空字符。例如,如果test是第2个参数,则仅仅在strcpy的第3个参数长度至少为5的情况下,才能复制空字符,如果第3个参数大于5,则在写入第3个参数规定的字符个数之后,在数组后追加空字符。
下面里仁嵌入式培训学院进一步讲解使用strcpy将数组x中的整个字符串复制到数组y中,并使用strncpy将数组x的前14个字符复制到数组z中。因为程序中对strncpy的调用并没有写入空字符,因此在数组z之后追加了空字符(‘\0’).
/*使用strcpy和strncpy */
#include
#include
Int main()
{
Char x []=“Happy Birthday to you”;//初始化字符数组x
Char y [25]; //创建字符数组y
Char z [15];//创建字符数组z
/*将x中的内容复制到y*/
Printf(“%s%s\n%s%s\n”,“the string in array x is:”x,“the string in array y is:”strcpy(y,x));
//复制x中的前14个字符到z中,不复制空字符
Strncpy(z,x,14);
Z[14]=‘\0’; //结束z中的字符串
Print(“the string in array z is:%s\n”,z)
Return 0 ; //表示程序成功结束
}//函数main结束
The string in array x is:Happy birthday to you
The string in array y is: happy birthday to you
The string in array z is:happy birthday to you
函数strcat将第2个参数追加到第1个参数之后,第2个参数的第1个字符将取代第1个参数中结束字符串的空字符(‘\0’).程序员必须确保用于存储第1个字符串的数组有足够的空间来存储第1个字符串、第2个字符串和空字符,函数strncat将来自第2个字符串的指定个数的字符串追加到第1个字符串中,并在结果后自动追加空字符。里仁嵌入式培训学院讲解函数strcat和函数strncat的使用。
//使用strcat和strncat
#include
#include
Int main()
{
Char s1[20]=“happy”;//初始化字符数组s1
Char s2[]=“” ;//初始化字符数组
Char s3[40]=“”;//初始化字符串数组s3
Printf(“strncat(s3,s1,6)=%s\n”,strncat(s3,s1,6));//将s1连接到s3
Printf(“strcat(s3,s1)=%s\n”,strcat(s3,s1));
Return 0; //表示程序成功结束
}//函数main结束
S1=happy
S2=
Strcat(s1,s2)=happy
Strncat(s3,s1,6)=happy
Strcat(s3,s1)=happy happy
转载源地址: