1.什么是字符串
1.1 定义 ASCII码表中的所有字符任意组合,形成字符串
1.2 其它说明
- 一个中文汉字表示两个字符
- 字符串用 “ ” 括起来
- 同样地,字符串也可以定义成字符数组的形式存放
- 任何字符串
末尾存在隐藏的\0;
反斜杠0后面的内容系统认为不存在
反斜杠0不计算在字符串长度内
2.字符串的输入输出
2.1 字符串的专有输入输出函数
- 字符串的输入用gets_s(变量名,长度);
- 字符串的输出用puts(变量名);
2.2 scanf与gets_s的区别
- scanf不仅可以输入字符串,也可以输入其它类型变量;
- gets_s只能用来对字符串进行输入
- scanf 在读取字符串的时候于遇到空格会结束
- gets_s只有遇到回车才表示结束
2.3 printf 与 puts 的区别
- printf能输出包含字符串在内的各种变量
- puts只能输出字符串
3.字符串涉及到的函数
3.1 字符串连接函数-strcat()
- strcat=string catenate
- 语法格式:strcat(字符串1,字符串2);
- 作用:将字符串2的内容添加到字符串1的后面
- 说明:字符串1末尾的\0会被删除,
要注意组合起来的文本是否会越界(越过字符串1的数据长度界限)
strcat()的返回值是字符串1的地址
3.2 字符串复制函数-strcpy()
- strcpy=sting copy
- 语法格式:strcpy(字符串1,字符串2);
- 作用:字符串2的内容赋值给字符串1,并且字符串1的内容被覆盖掉
- 注意:字符串1的长度要足够的长,否则字符串2无法全部赋值进字符串1中
3.3 字符串比较函数-strcmp()
- strcmp=string compare
- 语法格式:strcmp(字符串1,字符串2);
- 作用:将两个字符串的字符从第0个开始比较,相同返回值为1,不同返回值为0
3.4 判断字符串子串-strstr()
- strstr=string string
- 语法格式:strstr(字符串1,字符串2);
- 作用:判断字符串2,是否包含在字符串1中,包含返回1,不包含返回0
4.其它说明
- 数组大小不代表数组元素的个数
- gets与gets_s的区别体现在VS的版本上,gets_s是VS2015以后版本使用
- 在使用字符串函数时,要加头文件#include<string.h>
- ‘’ 与 “” 的区别,前者表示字符,后者表示字符串
4.实例代码
#include<stdio.h>
#include<iostream>
#include<string.h>//与字符串相关的头文件
int main()
{
char str[128] = { 'h','s','s','ddd' };//赋值方式一:但是一般不会用
char str1[128] = "hell world";//赋值方式二:常用
// '' 表示字符 "" 表示字符串
char str2[] = "hello world";//有十二个字符,因为所有字符串末尾会有一个\0作为结尾
char str3[20] = "hello\0world";//考虑字符串只考虑\0前面的部分,后面部分无效
printf("用于说明反斜杠0后面的内容不存在%s\n", str3);
printf("\nstr3字符串长度%d\n", strlen(str3));//字符长度不包括反斜杠0
puts(str1);
printf("\n");
char str4[100] = "liu tong xue zui bang";
char str5[100] = "xu tong xue zui mei li";
strcat(str4, str5);
puts(str4);
printf("\nstrcat函数的结果是%s\n",str4);
char str6[100] = "你是最棒的";
char str7[100] = "你是最优秀的";
char str8[100] = "棒";
if (strstr(str6, str8))
{
printf("\nstr6中的字符包含str8中的字符\n");
}
else
{
printf("\nstr6中的字符 不 包含str8中的字符\n");
}
system("pause");
return 0;
}