一、定义
C语言中的字符串是以字符数组的形态存在的
在C语言中,没有字符串类型,字符串实际上是使用空字符\0结尾的一维字符数组。因此,\0是用于标记字符串的结束。
二 、如何创建字符串?
1.通过字符数组来创建字符串,必须手动在末尾添加'\0',
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
// 创建一个字符串
int main()
{char s[] = { 'a','b','c','\0'};printf("%s\n", s); //结果abcreturn 0;
}
2.对于直接字符串常量来说,后面会自动加上一个‘\0’,但是在长度定义时,也要算上它,不算上会出错。字符串常量是不能修改的
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
// 创建一个字符串
int main()
{char s[6] = {"hello"}; //实际长度是6printf("%s\n", s); //结果helloreturn 0;
}
三 字符数组
1.定义
字符数组是用来存放字符数据的数组,字符数组中的一个元素存放一个字符,定义字符数组的方法和定义数值型数组的方法类似
2.字符数组初始化
(1)用单个字符对字符数组初始化
- 如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{char c[10];//定义一个字符数组不初始化printf("%s ", c);return 0;
}
- 如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误
例如: char c[2]={'a','b','c'};
- 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度
例如 : char c[ ]={'a','b','c','d','e','f','\n'};
- 如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')
# define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{char s[10] = { 'a','b','c'};int i = 0;for (i = 0; i < 10; i++){printf("%d ", s[i]); //97 98 99 0 0 0 0 0 0 0}return 0;
}
(2)用字符串常量对字符数组初始化
- char str[6]={"CHINA"};
- char str[6]="CHINA"; //省略{}
- char str[ ]="CHINA" ; // 省略长度值