字符串函数的介绍与使用

目录

  1. 字符串输出函数puts()
  2. 字符串输入函数gets()
  3. 字符串连接函数strcat()
  4. 字符串复制函数strcpy()
  5. 字符串比较函数strcmp()
  6. 字符串长度测量函数strlen()
  7. 字母变大写函数strupr()
  8. 字母变小写函数strlwr()
  9. 查找子字符串函数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;
}

代码运行结果:
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值