C语言10-字符串
1. 字符串的定义方式和底层细节
1.1 定义方式
利用字符数组+双引号:
char 数组名[长度] = "xxx";
将字符串地址储存在指针变量(指针+双引号):
char* 指针变量名 = "xxx";
1.2 底层细节
- 在实际储存的时候,C会将字符串保存成字符数组进行保存,并且末尾要加上’\0’
- 数组的长度要么不写,写的话要把结束标记的空间预留出来
- 第一种定义方式利用字符数组定义,其内容可以发生改变
- 第二种定义方式定义字符串,会把底层的字符数组放在只读常量区(不可以修改,可以复用)(复用指:如果创建的新的在只读常量区已经存在,那么会直接引用那一个)
2.字符串数组
2.1 利用二维数组
基本格式:
1 | char strArr[3][y] = |
2.2 利用指针数组
将五个字符串的指针放入一个数组:
1 | char* strArr2[3] = |
3.字符串常见函数
用这些函数记得调用头文件:#include <string.h>
3.1 strlen获取字符串长度
1 | int len1 = strlen(str1); |
- strlen()返回的是整数,不计算结束标记
- windows中默认情况下,一个中文占两个字节
3.2 strcat拼接字符串
1 | strcat(str1, str2); |
- strcat把第二个字符串中的全部内容拷贝到第一个字符串的末尾
- 第一个字符串中剩余的空间可以容纳拼接的字符串前提:第一个字符串是可以被修改的,第一个字符串中剩余
前提:第一个字符串是可以被修改的,第一个字符串中剩余的空间可以容纳拼接的字符串
3.3 strcpy复制字符串
1 | strcpy(str2, str3); |
- 把第二个字符串中的全部内容,拷贝到第一个字符串中,把第一个字符串里面原有的内容给覆盖了
前提:第一个字符串中的空间可以容纳第二个字符串的完整内容
3.4 strcmp比较字符串
1 | int res = strcmp(str1, str2); |
- 返回有两个结果,完全一样:0,只要有一个不一样:非0
3.5 strlwr变小写
1 | _strlwr(str2); |
- 只能转换英文大小写
3.6 strupr变大写
1 | _strupr(str2); |
只能转换英文大小写
4.拓展
4.1 ungetc()
1 | ungetc(返回的字符串, stdin); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zyw4259!
评论