1文字配列の初期化
1.1指定された文字配列の長さの初期化
例えば:
char s1[5] = { 'C','h','i','n','a' };
char s2[6] = { "China" }; //系统默认在字符串后面加上一个字符串结束标志符'\0',所以最少需要6个长度的字符数组才能容纳
1.2文字配列の長さは、初期化文字または文字列の長さによって決まります
例えば:
char s1[] = { 'C','h','i','n','a' }; //字符数组s1长度为5
char s2[] = { "China" }; //字符数组s2长度,系统默认在字符串后面加上一个字符串结束标志符'\0'
2文字列の入力と出力
2.1 printf印刷文字配列
例えば:
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文字列入力
例えば:
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文字列の長さ
例えば:
//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紐縫い機能
例えば:
char s1[10] = { "Chi" };
char s2[10] = { "na" };
strcat(s1, s2); //将s2中的字符串拼接到字符串s1后面
printf("%s\n", s1); //打印 "China"
3.3文字列の代入関数
例えば:
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文字列比較関数
例えば:
//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不相等");
}