1. 字符串介绍
- 存放字符(char)的数组称为字符数组。
- 在C语言中,使用NULL(’\0’)字符终止的一维字符数组被称作字符串。
- 字符串的各个元素为字符,并且各个字符时依次存放的。
- 字符串的变量名代表该数组的首地址。
2. 使用方法
2.1 定义方法
char 字符串变量名[字符数量];
2.2 初始化方法有两种
(1)可以按照普通数组方式初始化
char 字符串变量名[字符数量] = {字符1,字符2,....,'\0'};
如:
char str[6] = {'H','e','l','l','o','\0'};
(2)使用字面量直接进行字符串的初始化
char 字符串变量名[] = 字符串字面量;
如:
char str[6] = “Hello”;//或者char str[] = “Hello” ;
注意 :
(1)字符串的最后一个字符必须是“\0”,在初始化时要注意给"\0"预留空间。
(2)通过字面量初始化过的字符串是不能更改的,而普通的初始化方法初始化的字符串是可以更改的。
2.3 输入输出
字符串的输入输出使用的函数为:scanf() 和printf(),占位符为 %s。
#include <stdio.h>
int main(){
char str[10];
printf("请输入字符串:");
scanf("%s",str);
printf("您输入的字符串为:%s\n",str);
}
2.4 字符串的访问
- 字符串的访问与数组的访问方式一样,通过下标/索引方式访问,通过字符数组的名字+索引的方式可以实现对字符数组的访问及修改。
字符数组名[索引]
例如:
// 打印索引为[0]的字符
printf("%c\n", str[0]);
// 修改索引为[1]的字符
str[1] = 'F';
// 打印修改后的字符串
printf("%s\n",str[1]);
2.5 字符串的遍历
- 基本方法:使用for循环对字符数组进行遍历
#include <stdio.h>
int main(){
//char str[6] = {'H','e','l','l','o','\0'};
char str[] = "Hello";
for (int i=0; '\0' != str[i]; ++i)
{ // 依次生成字符数组索引
printf( "%c\n",str[i]); // 访问数组的每一个字符,访问单个字符使用%c
}
printf( "%s\n",str); //,访问整个字符数组的占位符使用%s
}
2.6 赋值
(1)使用遍历方式给字符数组赋值
#include <stdio.h>
int main(){
char str1[] = "Hello";
char str2[6];
for (int i=0; i<6; ++i){
str2[i] = '\0';
}
for (int i=0; '\0' != str1[i]; ++i)
{ // 按照字符数组索引赋值给新的字符数组
str2[i] = str1[i];
}
printf( "%s\n",str2);
}
(2)使用 strcpy() 函数给字符数组赋值
#include <stdio.h>
#include <string.h>
int main(){
char str1[] = "Hello";
char str2[6];
strcpy(str2,str1);
printf( "%s\n",str2);
}
注意:
- 字符数组不能使用赋值符号(=)进行直接赋值
- 在使用遍历的方式对字符数组进行赋值时,被赋值的字符数组的长度要大于原始的字符数组的长度,否则赋值后就会出错;
- 当两个字符数组的长度相等时,需要先对被赋值的字符数组进行初始化,对于未初始化的字符数组赋值后容易出现错误;
- 字符串的结尾是’\0’;
- 有些时候,字符串声明时没有初始化,这时字符串里的值是随机值。需要手动赋值。赋值方式如下所示:
char str2[6];
for (int i=0; i<6; ++i){
str2[i] = '\0';