头文件
#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
----摘自算法笔记,稍加改动,仅作为学习笔记,如有侵权,请联系删除,谢谢