字符串处理函数strcpy(),strcmp(),strlen(),strcat()

头文件:

#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=0while(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表示没有找到

猜你喜欢

转载自blog.csdn.net/weixin_45454859/article/details/102917651
今日推荐