11.30C语言学习笔记(字符串)
字符串
定义
- 文本处理的对象是字符串,描述的对象的某一特征的数据也常是字符串。(姓名,学号)
- C语言不提供字符串的类型,利用字符数组和字符指针来结合处理字符串。
tip
空格也算字符,字符串末尾系统会不写一个空字符。
法则——字符串必须以空字符 \0
为结尾!
字符串的初始化
数据类型 字符串名 [字符串长度]
={初始化的内容}
完整初始化
char ch[3]={'A','B','C'}
;
(若完整的初始化,可以吧长度省略)
char c1[]={'Hello World!'};
部分初始化(未初始化的位置会用空字符 \0
占位)
char ch[10]={'A','B','C'}
;
综上,与数组的初始化异曲同工。
用字符串常量初始化
用双引号定义边界符
char chi1[14]={“programming!”} 逐字符定义系统
若在原数组增加两个字符,系统会报错(必须以空字符结尾)
二维数组的初始化
目的是存放多个字符串
char ch[4][6]={
{'a','b'},{'b','v','v','d'},{'c'},{'d','d','d','d'}};
a | b | \0 | \0 | \0 | \0 |
---|---|---|---|---|---|
b | v | v | d | \0 | \0 |
c | \0 | \0 | \0 | \0 | \0 |
d | d | d | d | \0 | \0 |
指针与字符串
指针指向的是该字符串的首地址。(规则可以对标指针与数组(https://blog.csdn.net/FriedReich/article/details/121667763))
格式控制符%s在使用的时候,输入加入空格,会自动跳转到下一个字符串。
例如 char c1[],c2[],c3[]
;
scanf("%s,%s,%s",&c1.&c2,&c3);
若遇到终止符,顾名思义,停止输出。
char c1[]={'Hello\0World!'};
printf("%s",c1);
此时只会打印到“Hello”
几个重要的字符串函数
字符串大小的比较——逐一对应的ASCII码比较。
(空字符小于任何一个字符)
调用头文件#include<string.h>
-
puts(数组名)
输出 -
gets(数组名)
输入赋值(以回车换行为结束) -
strcat(str1,str2)
将字符串str2连接到str1之后(此处要注意str1的长度足够) -
strcopy(str1,str2)
将字符串str2的值拷贝到str1中(此处所需注意的同上) -
strcmp(str1,str2)
字符串大小的比较——逐一对应的ASCII码比较。此处的逐一比较可以对标两个数每一位数字的比较,只比较第一个不同的元素。
str1 a b c \0 str2 A b d \0 此处只比较“a”与“A”之间的ASCII码大小,此时前者大于后者
-
strlen(str)
用于输出一个字符串中的有效长度——可以对标sizeof
-
strlwr(str)
转换为小写字母 -
strupr(str)
转换为大写字母