目录
一、字符数组
1、定义
1)用于存放字符型数据的数组称为字符数组。
2)在C语言中,字符数组中的一个元素只能存放一个字符。
一般形式:
1)char 数组名 [常量表达式]; 一维字符数组
2)char 数组名[常量表达式1][常量表达式2]; 二维字符数组
2、初始化
char c[10]={‘I’,’ ‘,’a’,’m’,’ ‘,’h’,’a’,’p’,’p’,’y’};
char diamond[5][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};
注意:① 如果定义时不初始化,元素值不确定;
② 如果提供的字符个数大于数组长度,则按语法错误处理;如果字符个数小于数 组长度,后面的元素自动为空字符(‘\0’);
③ 如果提供的字符个数与数组长度相同时,可省略数组长度,系统会自动确定元 素个数。适合字符个数较多时。
字符数组的初始化可以用字符串常量来初始化
char [10] = "hello";
//要注意这个字符串的长度为5,但是它需要6个数组长度,因为字符串会有一个'\0'结束符
区分初始化和赋值的概念:
字符数组只能逐个赋值,不能一次性进行赋值
char ch [] = "Hello"; //初始化
char ch[10]; ch = "hello"; //error,报错
3、引用字符数组元素
引用字符数组中的一个元素,得到一个字符。
例:输出一个字符串。
#include <stdio.h>
void main()
{char c[11]={'I',' ','a','m',' ','a',' ','b','o','y','.'};
int i;
for(i=0;i<11;i++)
printf("%c",c[i]);
printf("\n");
}
输出结果为:I am a boy
二、字符串和字符串结束的标志
1、C语言规定,字符串以字符'\0'作为结束标志
2、 编译系统对字符串常量自动加一个'\0'作为结束标志
3、 程序中往往通过判断'\0'来检测字符串是否结束
4、 '\0'的ASCII码为0,不是一个可显示的字符,是“空操作符”,什么都不做,不会增加有效字符,仅是一个供判别的标志
三、字符数组的输入输出
1、字符串的输入:scanf
格式符 %c用于输入输出一个字符。
格式符 %s用于输入输出一个字符串。
例:char ch[10]; scanf("%c",&ch[0]); //需要循环输入
char ch[10]; scanf("%s",ch); printf("%s\n",ch) //字符串输入
注意:采用scanf输入字符串的时候,要求字符串不能有空格,否则字符串遇到空格就结束了。
2、注意事项
1)在用格式说明符%s为字符型数组输入数据时, 字符串的分隔符是空格符,因此,如果在输入的字符串中包括空格符时,只截取空格前的部分作为赋给字符数组的字符串。
2)在为字符型数组输入字符串时,输入字符串的长度不要大于数组的长度,否则越界系统不提示,用户自己负责。特别要注意的是,字符串中还有一个字符串结束符,它虽然不计入字符串的长度中,但它实际需要占一个字节空间(即占一个字符元素的空间)。
四、字符串处理函数
1、puts函数
功能:输出一个字符串。(字符串中可以包含转义字符)
使用方法:puts(数组名)
char str[ ] = "hello!\nHow are you!";
puts(str);
2、fgets函数
功能:从键盘输入一个字符串到字符数组,并返回字符数组的地址。
使用方法:fgets(字符数组名,数组大小,stdin)
include <stdio.h>
int
int main()
{
char s[80];
printf("输入数据");
fgets(s,80,stdin);
printf("输出数据");
puts(s);
return 0;
}
3、strcat函数
功能:将字符串2连接到字符串1的后面,并返回字符串1的地址。
使用方法:strcat(字符数组1,字符串2)
注意:① 字符数组1的长度必须足够大,以便能容纳被连接的字符串。
② 连接后系统将自动取消字符串1后面的结束符'\0'。
③ “字符串2”可以是字符数组名,也可以是字符串常量,如:strcat(s1,"cdef")。
char s1[20]= "abcd";
char s2[ ]="cdef";
printf("%s\n",strcat(s1,s2));
4、strcpy函数
功能:字符串2拷贝到字符数组1中。
使用方法:strcpy(字符数组1,字符串2)
注意:① 字符数组1的长度必须足够大,以便能容纳字符串2。
② “字符串2”可以是字符数组名,也可以是字符串常量,如 strcpy(s1,"abcde")。
③ 字符串只能用拷贝函数,不能用赋值语句进行赋值。
④ 可以用strncpy函数将字符串2中的前若干个字符拷贝到字符数组1中。如:strncpy(str1,str2,3);将str2中前3个字符拷贝到str1中,取代str1前3个字符。
5、strcmp
功能:比较两个字符串对应位置字符ASCII的大小。
这个函数的返回值如下:若字符串1=字符串2,则返回值为0。
若字符串1>字符串2,则返回值为正整数。
若字符串1<字符串2,则返回值为负整数。
使用方法:strcmp(字符串1,字符串2)
注意:① 执行这个函数时,自左到右逐个比较对应字符的ASCII码值,直到发现了不同字符或字符串结束符'\0'为止。
② 对字符串不能用数值型比较符。
③ “字符串1”与“字符串2”可以是字符数组名,也可以是字符串常量。
6、strlen函数
功能:测试字符串中包含的字符的实际个数。不含‘\0’。
使用方法:strlen(字符串)
在使用这个函数时,“字符串”可以是字符数组名,也可以是字符串常量。
注意:要清楚strlen和sizeof的区别(不清楚的可以看这里http://t.csdnimg.cn/102na)
标签:字符,函数,嵌入式,char,数组名,数组,字符串,C语言 From: https://blog.csdn.net/weixin_46432503/article/details/140499474