C/C++基本函数之strlen(),strcmp(),strcpy(),strcat()

头文件

#include<string.h> // C
#include<csting>  // C++

1.strlen()

strlen() 可以得到字符数组中第一个\0前的字符的个数,格式如下:

strlen(字符数组);
#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char str[10];
	gets(str);
	printf("%d",strlen(str));
	return 0;
}
//输入:abc
//输出:3

2.strcmp()

strcmp()函数返回两个字符串大小的比较结果,比较原则是字典序,格式如下:

strcmp(字符数组1,字符数组2);

字典序即字符串在字典中的顺序。举例:
若str1=“afg”; str2=“bdc”; 则str1<str2(依次比较相对应的位置,因为第一个位置上的 a<b,所以后边直接都不用比较了)
若str1=“aab”,str2=“aac”; 则str1<str2(因为b<c)
strcmp()返回结果:
①若str1<str2,则返回一个负整数(不同编译器处理不同,不一定是-1)
②若str1==str2,则返回0
③若str1>str2,则返回一个正整数(不同编译器处理不同,不一定是+1)

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char str1[15]="Dear Mozart",str2[15]="Canon";
	int t=strcmp(str1,str2);
	if(t<0)
		printf("str1 < str2");
	else if(t==0)
		printf("str1 = str2");
	else
		printf("str1 > str2");
	return 0;
}
// 输出: str1 > str2

3.strcpy()

strcpy() 将一个字符串复制给另一个字符串,格式如下:

strcpy(字符串组1,字符串组2)

note:
1.是把字符串组2复制给字符串组1,这里的“复制”包括了结束符 \0;
2."字符串组1"必须写成数组名形式(如str1),"字符串组2"可以是字符数组名,也可以是一个字符串常量。例如:
strcpy(str1,"China");
3.如果在复制前未对str1数组初始化或赋值,则str1各字节中的内容是无法预知的,复制时将str2中的字符串和其后的’\0’一起复制到字符数组1中,取代字符数组1中的前面6个字符,最后4个字符并不一定是’\0’,而是str1中原有的最后4个字节的内容;
4.不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。例如:

str1="China"; //错误!!!不能用赋值语句将一个字符串常量直接赋给一个字符数组
str1=str2; // 错误!!!不能用赋值语句将一个字符数组直接赋给另一个字符数组

只能用strcpy()函数将一个字符串复制到另一个字符数组中去。
用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。例如:

// 下面都是正确的
char a[5],c1,c2;
c1='A',c2='B';
a[0]='C';[1]='h';a[2]='i';a[3]='n';a[4]='a';

5.strcpy(str1,str2,5)
将字符串2中前面5个字符复制到字符数组1中,取代str1中原有的最前面2个字符。但复制的字符个数n不应多于str1中原有的字符(不包括’\0’)。

【例题1】

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char str1[50],str2[50];
	gets(str1);
	gets(str2);
	strcpy(str1,str2);
	puts(str1);
	return 0;
}

输入:

abcd
nihao

输出:

nihao

【例题2】

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char str[100]="How do you do";
	strcpy(str+strlen(str)/2,"es she");
	//第一个参数的地址为 (字符数组str首地址+6),也就是将 "es she" 复制给 (字符数组str首地址+6)往后的数据
	printf("%s\n",str);
	return 0;
}

输出:
在这里插入图片描述

4.strcat()

strcat() 把一个字符串接到另一个字符串后面,格式如下:

strcat(字符数组1,字符数组2)

note:
1.把字符数组2 接到 字符数组1 后面;
2.函数调用后得到一个函数值——字符数组1的地址;
3.连接前两个字符串的后面都有’\0’,连接时将字符串1后面的’\0’取消,只在新串最后保留’\0’。

#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char str1[50],str2[50];
	gets(str1);
	gets(str2);
	strcat(str1,str2);
	puts(str1);
	return 0;
}

输入:

nihao,
tongxue

输出:

nihao,tongxue

----摘自算法笔记,稍加改动,仅作为学习笔记,如有侵权,请联系删除,谢谢

猜你喜欢

转载自blog.csdn.net/xiaoyue_/article/details/114903738