头文件:
#include<string.h>
strcpy():字符串复制
strcpy(目的字符数组名,源字符数组名)
把原字符数组复制到目的字符数组中
目的字符数组名,必须写成数组名格式;而源字符数组名,可以是字符数组名,也可以是一个字符串常量
strcpy(str1,str2); //把str2的复制到str1中
返回值:返回str1的地址,作用:实现链式操作,
int len = strlen (strcpy (str1, str2 ) )
复制一个字符串的常见操作:
char *dst=(char*0malloc(strlen(src)+1);
//strlen()得到的是纯内容的长度
//注意一定要+1,包括“\0”;
strcpy(dst,src);
自己构造函数:
int indx=0;
while(src[idx]='\0'){
dst[idx]=src[ide];
idx++;
}
dst[idx]='\0';
//while(src[idx]){
// dst[idx]=src[ide];
// idx++;
//}这样更方便
return dst;
strcmp():字符串比较
strcmp(字符数组名1,字符数组名2)
功能:按照ASCII码的顺序比较两个数组中的字符串,并由函数返回值返回比较结果
字符串1=字符串2,返回0;
字符串1<字符串2,返回负数;
字符串1>字符串2,返回正数;
注:字符串比较不能使用关系运算符,也不能用赋值运算符进行赋值得到数据
if(strcmp(str1,str2)!=0)
strlen()函数:
作用:计算指定字符串str的实际长度,不含字符串结束标志’\0’
注:strlen 的返回结果是 size_t 类型(即无符号整型)
使用:
int len,a;
len=strlen(a);
与sizeof()的区分:
char x[]="0\00abc";
printf("a=%d,b=%d",sizeof(x),strlen(x));
输出:a=6,b=1;
这是因为:strlen遇到’\0’则结束,在字符串中’‘仍是转义符号,所以这里’\00’代表空字符
char x[]="0\06ING";
printf("%d %d\n",sizeof(x),strlen(x));
输出:a=6,b=5;
这是因为:’\06’转换成了ASCII码中第六个字符,因此这里不是空字符了,strlen继续读下去,一共就五个字符。
sizeof()测字符串所占的储存空间,包含字符串结束标志
strcat(a,b)函数:
作用:把字符数组b中的字符串连接到字符数组a中字符串后面,并删去字符串a后的第一个字符串结束标志’\0’
即:
char a[20]="ABCD\0EFG\0",b[]="IJK";
printf("!%s\n",a);
strcat(a,b);
printf("%s\n",a);
结果:
!ABCD
ABCDIJK //从第一个\0处开始连接
strchr():在字符串中找字符
char* strchr(const char *s,int c)
char* strrchr(const char *s,int c)
//返回null表示没有找到