1 字符数组初始化
1.1 指定字符数组长度初始化
EG:
char s1[5] = { 'C','h','i','n','a' };
char s2[6] = { "China" }; //系统默认在字符串后面加上一个字符串结束标志符'\0',所以最少需要6个长度的字符数组才能容纳
1.2 字符数组长度由初始化字符或字符串长度确定
EG:
char s1[] = { 'C','h','i','n','a' }; //字符数组s1长度为5
char s2[] = { "China" }; //字符数组s2长度,系统默认在字符串后面加上一个字符串结束标志符'\0'
2 字符串的输入及输出
2.1 printf打印字符数组
EG:
char s1[5] = { 'C','h','i','n','a' };
char s2[6] = { "China" };
printf("s1: %s\n", s1); //打印内容不确定,因为字符串的结束标志位'\0'
printf("s2: %s\n", s2); //打印"China"
2.2 字符串输入
EG:
char s1[20];
char s2[20];
char s3[20];
scanf("%s%s%s", s1, s2, s3); //每个字符串以换行符或者空格分隔,并且自动在每个字符串后面加上'\0'
cout << s1 << endl;
cout << s2 << endl;
cout << s3 << endl;
3 常见字符处理函数
3.1 字符串的长度
EG:
//strlen(s) 函数返回的字符串的长度(与存储的内容有关),单位是字节数
char s1[20] = { 'C','h','i','n','a' };
char s2[20] = { "China" };
char s3[20] = { "我爱中国" };
printf("s1的长度:%d\n", strlen(s1)); //长度不确定
printf("s1的长度:%d\n", strlen(s2)); //打印9,字符串的长度计算:从字符串开始直到遇到'\0',不包括'\0'
printf("s1的长度:%d\n", strlen(s3)); //返回的字符串的长度单位是字节
//补充 strlen与sizeof的区别
//strlen是一个函数,sizeof 是一个关键字
//strlen返回字符串的长度(与存储内容有关),sizeof返回内存的实际长度(与存储内容无关)
3.2 字符串拼接函数
EG:
char s1[10] = { "Chi" };
char s2[10] = { "na" };
strcat(s1, s2); //将s2中的字符串拼接到字符串s1后面
printf("%s\n", s1); //打印 "China"
3.3 字符串的赋值函数
EG:
char s1[10] = "123";
char s2[10] = "678"; //定义时可以使用字符串常量进行初始化
//s1 = "678"; //不可以使用字符串常量为字符数组赋值
strcpy(s1, "456"); //将"456"挪到s1执行的内存,s1中原来的内容被覆盖
puts(s1);
strcpy(s1, s2);
puts(s1);
3.4 字符串比较函数
EG:
//strcmp(s1,s2) 函数用法:
//1. s1 == s2 返回0
//2. s1 < s2 返回正整数
//3. s1 > s2 返回负整数
//strcmp函数一般不用来比较字符串大小,常用于比较字符串是否相等
char s1[] = "123";
char s2[] = "123";
if (strcmp(s1, s2) == 0)
{
puts("s1和s2相等");
}
else
{
puts("s1和s2不相等");
}