目录
- 字符串输出函数puts()
- 字符串输入函数gets()
- 字符串连接函数strcat()
- 字符串复制函数strcpy()
- 字符串比较函数strcmp()
- 字符串长度测量函数strlen()
- 字母变大写函数strupr()
- 字母变小写函数strlwr()
- 查找子字符串函数strstr()
引用字符串函数时需包含字符串函数的头文件 “string.h”
当仅使用字符串输入与输出函数时,可不引字符串函数的头文件 “string.h”
1. 字符串输出函数puts()
(1)格式:puts(字符串)
格式中的字符串可以是字符数组名,也可以是字符串常量(一串字符)。
(2)功能:将字符串常量或字符数组中的字符串显示在屏幕(程序运行结果)上。
(3)举例代码:
#include<stdio.h>
int main()
{
char str[] = "Snow_Dragon_L";
puts(str);
puts("Snow_Dragon_L");
return 0;
}
代码运行结果:
由代码运行结果可以看出,字符串输出函数将字符串输出结束后,其会自动换行。
2. 字符串输入函数gets()
(1)格式:gets(字符数组名)
(2)功能:从输入设备(键盘)上输入一个字符串,本函数将得到一个函数值(该字符数组的首地址)。
(3)举例代码:
#include<stdio.h>
int main()
{
char str[30];
printf("输入一个字符串\n");
gets_s(str);
puts(str);
return 0;
}
代码运行结果:
- 由于我所使用的编译器为VS 2019,编译器中输入函数后需加上_s才能使用。
- 由代码输出结果可知,当输入的字符串中含有空格时,输入的字符串空格后的内容仍会在程序运行结果界面显示,即gets函数不以空格为输入结束的标志,而只以回车(Enter)作为输入结束的标志。
3. 字符串连接函数strcat()
(1)格式:strcat(字符串1,字符串2)
格式中的字符串1位置处需为数组名,而字符串2位置处可以是字符数组名,也可以是字符串常量。
(2)功能:将字符串2中的字符串连接到字符串1(内容为字符串)的后面,同时,删去字符串1(内容为字符串)后的字符串结束标志’\0’。
字符串1中的数组空间应足够大,否则不能将被连接的字符串全部装入。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[40], str2[40];
printf("input two string\n");
gets_s(str1);
gets_s(str2);
strcat(str1, str2);
puts(str1);
return 0;
}
代码运行结果:
4. 字符串复制函数strcpy()
(1)格式:strcpy(字符数组名,字符串)
格式中的字符串可为字符数组名,也可为字符串常量。
(2)功能:将字符串复制到字符数组(格式中字符数组名的内容)中,包括字符串结束标志’\0’。
字符数组(格式中字符数组名的内容)的空间应足够大,否则不能将被复制的字符串全部装入。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[40], str2[20];
printf("input a string:\n");
gets_s(str1);
gets_s(str2);
strcpy(str1, str2);
printf("输出结果\n"); //使输出结果与输入项区分
puts(str1);
return 0;
}
代码运行结果:
由代码运行结果可知,使用strcpy函数时,接收被复制字符串的数组里的内容会被删除,输出结果只有被复制的字符串内容。
5. 字符串比较函数strcmp()
(1)格式:strcmp(字符串1,字符串2)
格式中的字符串1与2都可为字符数组名,也可为字符串常量。
(2)功能:按照ASCII码值的大小对两个字符串的元素进行比较,如果字符串1中的元素比字符串2中的元素小(大),则函数返回值小于0(大于0)。两字符串如果相等,则函数返回值为0。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[20], str2[20];
printf("输入被比较的字符串(str1):\n");
gets_s(str1);
printf("输入欲比较的字符串(str2):\n");
gets_s(str2);
printf("%d\n", strcmp(str1, str2));
return 0;
}
代码运行结果:
- 由代码运行结果可知,strcmp函数的比较是从两个字符串的第一个元素开始比较,如果相等则比较两个字符串的下一个元素,直至两个字符串结束,如不相等则直接返回值,不再比较下面的元素。
- 比较的对象不是两个字符串的整体长度或所有元素的ASCII总和。
- 返回值大于0则返回1,小于0则返回-1。
6. 字符串长度测量函数strlen()
(1)格式:strlen(字符串)
格式中的字符串可以为字符数组名,也可为字符串常量。
(2)功能:测量字符串的长度(共有多少个字符),不含字符串结束标志’\0’。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
printf("input a string:\n");
gets_s(str);
printf("字符串长度为%d\n", strlen(str));
return 0;
}
代码运行结果:
中文字符(包括中文标点符号)长度为2,但省略号(……)长度为0。
7. 字母变大写函数strupr()
(1)格式:strupr(字符串)
格式中的字符串可为字符数组名,也可为字符串常量。
(2)功能:将字符串中的小写字母转换成大写字母,如字符为大写字母,其输出结果仍为大写字母。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
printf("input a string:\n");
gets_s(str);
printf("%s\n", _strupr(str));
return 0;
}
由于编译器原因,此处我所使用的的函数名前需加_。
代码运行结果:
8. 字母变小写函数strlwr()
(1)格式:strlwr(字符串)
格式中的字符串可为字符数组名,也可为字符串常量。
(2)功能:将字符串中的大写字母转换成小写字母,如字符为小写字母,其输出结果仍为小写字母。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str[20];
printf("input a string:\n");
gets_s(str);
printf("%s\n", _strlwr(str));
return 0;
}
由于编译器原因,此处我所使用的的函数名前需加_。
代码运行结果:
9. 查找子字符串函数strstr()
(1)格式:strstr(字符串1,字符串2)
格式中的两个字符串都可为字符串数组名,也可为字符串常量。
(2)功能:在字符串1中从左开始查找字符串2,如果查找到字符串2,则从查找到的位置开始一直将字符串内容返回,直至字符串结束。如查找不到字符串2,则返回null。
(3)举例代码:
#include<stdio.h>
#include<string.h>
int main()
{
char str1[40], str2[20];
printf("输入被查找的字符串:\n");
gets_s(str1);
printf("输入欲查找的字符串:\n");
gets_s(str2);
printf("%s\n", strstr(str1, str2)); //函数的三种输入形式
//printf("%s\n", strstr("asnjkxdnuSnow_Dragon_Lebsdfghjkl", "Snow_Dragon_L"));
//printf("%s\n", strstr(str1, "Snow_Dragon_L"));
return 0;
}
代码运行结果: