C++学习记录-对字符数组的一些操作

注意包含头文件 <string.h>

一、字符数组连接函数strcat

语法: strcat(指向字符数组1的指针,指向字符数组2的指针)

​ 在visual studio中为 strcat_s

作用:将字符数组2连接到字符数组1的后面,字符数组2保持不变

示例:

1
2
3
4
5
6
7
8
char a[10] = {'a'};
char b[] = { "Hello" };

strcat_s(a, b);

cout << a << " "<<b<<endl;

//a变为 ahello,b还是hello

注意:要保证数组1的长度足够,否则会报错

二、字符数组求长度函数strlen

语法:strlen(指向字符数组的指针)

作用:求字符数组的长度,遇到“占位符\0”就会停下来

示例:

1
2
char a[]={"hello"};
int y=strlen(a);//y=5

三、字符数组复制函数strcpy

语法:strcpy(指向字符数组1的指针,指向字符数组2的指针)

​ 在visual studio中为 strcpy_s

作用:将字符数组2复制,覆盖到字符数组1中,字符数组2保持不变

示例:

1
2
3
4
5
6
char a[10] = { "hello" };
char b[] = { "hi" };

strcpy_s(a, b);

cout << a <<" " <<b<< endl;//a和b都为hi

注意:字符数组1同样要有足够的长度

四、字符数组比较长度函数strcmp

语法:strcmp(指向字符数组1的指针,指向字符数组2的指针)

作用:逐个比较两字符数组的ASCII码值,直到遇到占位符或出现不同。第一个大返回1,第二个大返回-1,相同时返回0

​ 返回值为正,则字符数组1大于字符数组2,返回值为负。则字符数组1小于字符数组2

示例:

1
2
3
4
5
6
char a[] = { "Ahi" };
char b[] = { "Hi" };

int x=strcmp(a, b);

cout << x << endl;//x等于-1

五、求字串函数strstr

语法:strstr(指向字符数组1的指针,指向字符数组2的指针)

作用:判断字符数组2是否为字符数组1的字串如果是则返回字符数组2在字符数组1中的地址(是字符数组1中的地址,是字符数组1中的 地址),若否则返回null

示例:

1
2
3
4
char a[] = { "hello" };
char b[] = { "elli" };
if (strstr(a, b) == NULL) { cout << -1; }
else { cout << strstr(a, b) << endl; } //打印-1
1
2
3
4
char a[] = { "hello" };
char b[] = { "ell" };
if (strstr(a, b) == NULL) { cout << -1; }
else { cout << strstr(a, b) << endl; }//打印ello,因为返回的是字符数组1中的地址,所以会连带打印后面的元素