- 字符串
0个或多个“字符”,“有序”序列,有长度
//0,就是空串
//“abc”,有顺序的
结束符,‘\0’,一个字节
字符串常量用“”括起来
//“China” →‘C’ 'h' 'i' 'n' 'a' '\0'
// " " → ‘\0’
字符串打印
printf("name=%s","Rock");
//用%s匹配字符串
字符串储存
C中,以字符数组储存
- 数组
数组,多个元素的“组合”,每个元素的数据类型必须相同
每个元素在数组中都有一个[下标],即序号,从0开始计算
数组的容量是不能改变的
定义数组
先定义,再使用
实例:
int a[8] //数组名是a,含8个元素,每个元素都是int类型
a[0]=10;
a[1]=20;
printf("%d",a[0]);
数组的初始化
在定义的时候赋予一个值
初始化列表// int a[4]={1,3,4,5};
//int a[]={1,2,3,100};
//printf("数组a占用了%d个字节,一共有%d个元素",sizeof(a),sizeof(a)/sizeof(a[0])};
- 字符串的储存
实例:
#include <stdio.h>
int main(void)
{
char name[8];
name[0] = 'r';
name[1] = 'o';
name[2] = 'b';
name[3] = 'i';
name[4] = 'n';
name[5] = '\0';
printf("%s",name);
return 0;
}
#include <stdio.h>
int main(void)
{
char name[8]="robin";//char name[8]={'r','o','b','i','n','\0'};
printf("%s",name);
return 0;
}
//char name[]="robin";
- 字符串的输入
scanf(%s,name)
数组名称本身就表示一个地址,不需要加地址符号&
遇到空格会阻断
- gets
可以接收字符串中的空格、制表符,但不读取回车符
//gets(name);容易越界
//char name[10];只能储存9个字符,get容易超过9个字符
- fgets
读取一行,直到遇到回车符,读取回车符
//char name[8];
//fget(name,8,stdin);实际读取7个
//fget(name,sizeof(name),stdin);