14、字符串处理函数

目录

一、字符串复制

二、字符串连接

三、字符串比较

四、字符串大小写转换

五、获得字符串长度


一、字符串复制

在字符串处理函数中包含strcpy函数,该函数可用于复制特定长度的字符串到另一个字符串中。其语法格式如下:

35a48451d2934f978cca8bf0b12cd976.png

功能:把源字符数组中的字符串复制到目的字符数组中,字符串结束标志“\0”也一同复制。

注意

(1)要求目的字符数组有足够的长度,否则不能全部装入所复制的字符串。

(2)“目的字符数组名”必须写成数组名形式;而“源字符数组名”可以是字符数组名,也可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。

(3)不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。

例1:定义了两个字符数组,分别用于存储源字符数组和目的字符数组,然后获取用户为两个字符数组赋值的字符串,并分别输出两个字符数组

#include<stdio.h>
int main() {
	char s1[30], s2[30];  //定义字符串变量
	printf("输入目的字符串:\n");  //提示信息
	gets(s1);  //输入目的字符串
	printf("输入源字符串:\n");  //提示信息
	gets(s2);  //输入源字符串

	printf("输出目的字符串:\n");  //输出结果
	puts(s1);
	printf("输出源字符串:\n");  //输出结果
	puts(s2);
	strcpy(s1, s2);  //调用strcpy函数实现字符串复制
	printf("调用strcpy函数进行字符串复制:\n");
	printf("复制字符串之后的目的字符串:\n");
	puts(s1);  //输出复制后的目的字符串
	return 0;  //结束,无用时可省略
}

运行结果:

6333755ac27a4ce19b646b6f65b54fd7.png

二、字符串连接

字符串连接就是将一个字符串连接到另一个字符串的末尾,使其组合成一个新的字符串。在字符串处理函数中,strcat函数就具有字符串连接的功能。其语法格式如下:

b458fa1fc7a24279ae69369d3e3d25a7.png

功能:把源字符数组中的字符串连接到目的字符数组中字符串的后面,并删去目的字符数组中原有的串结束标志“\0”。

注意:目的字符数组应有足够的长度,否则很可能无法装下连接后的字符串。

例2:定义两个字符数组,分别为存储源字符数组和目的字符数组,然后获取用户为两个字符数组赋值的字符串,并分别输出两个字符数组

#include<stdio.h>
int main() {
	char s1[30], s2[30];  //定义字符串变量
	printf("输入目的字符串:\n");  //提示信息
	gets(s1);  //输入目的字符串
	printf("输入源字符串:\n");  //提示信息
	gets(s2);  //输入源字符串

	printf("输出目的字符串:\n");  //输出结果
	puts(s1);
	printf("输出源字符串:\n");  //输出结果
	puts(s2);
	strcat(s1, s2);  //调用strcpy函数实现字符串复制
	printf("调用strcat函数进行字符串连接:\n");
	printf("字符串连接之后的目的字符串:\n");
	puts(s1);  //输出复制后的目的字符串
	return 0;  //结束,无用时可省略
}

运行结果:

3b1301b2315a486d8e968d42909bb662.png

注意:字符串复制实质上是用源字符数组中的字符串覆盖目的字符数组中的字符串,而字符串连接则不存在覆盖的问题,只是单纯地将源字符数组中的字符串连接到目的字符数组的字符串的后面。

三、字符串比较

字符串比较就是将一个字符串与另一个字符串从首字母开始,按照ASCII码的顺序逐个进行比较。在字符串处理函数中,strcmp函数就具有在字符串间进行比较的功能。其语法格式如下:

52e0eeedda7e49c79d2152420b0eaea3.png

功能:按照ASCII码顺序比较两个数组中的字符串,并返回比较结果。返回值如下:

  • 字符串1=字符串2,返回值为0。
  • 字符串1>字符串2,返回值为正数。
  • 字符串1<字符串2,返回值为负数。

注意:当两个字符串进行比较时,若出现不同的字符,则以第一个不同字符的比较结果作为整个比较的结果。

例3:定义4个字符数组,分别用来存储用户名、密码、用户输入的用户名及密码字符串,然后调用strcmp函数比较用户输入的用户名和密码是否正确

#include<stdio.h>
int main() {
	char user[20] = { "yangyang" };  //设置用户名字符串
	char password[20] = { "nb" };  //设置密码字符串
	char ustr[20], pwstr[20];  //定义待检测用户名,密码字符串
	int i = 0;

	while (i < 3) {
		printf("输入用户名:\n");  //提示信息
		gets(ustr);  //输入用户名字符串
		printf("输入密码:\n");  //提示信息
		gets(pwstr);  //输入密码字符串
		//对输入的用户名进行检测
		if (strcmp(user, ustr)) {
			printf("用户名输入错误!\n");  //提示错误信息
		}
		else {
			//对输入的密码进行检测
			if (strcmp(password, pwstr)) {
				printf("密码输入错误!\n");  //提示错误信息
			}
			else {
				printf("欢迎使用!\n");
				break;
			}
		}
		i++;
	}
	if (i == 3) {
		printf("输入字符串错误3次!\n");  //提示错误信息
	}
	return 0;  //结束,无用时可省略
}

运行结果:

1b81485f6cdc4ae1a26127db29f0abbe.png

四、字符串大小写转换

字符串的大小写转换需要使用struprstrlwr函数。

strupr函数的语法格式如下:

4ab84b14e0f24fa19eeb92120b8d0545.png

功能:将字符串中的小写字母转换成大写字母,其他字母不变。

strlwr函数的语法格式如下:

c99a0c8f0ca2491c81fe7957f9cc1297.png

功能:将字符串中的大写字母转换成小写字母,其他字母不变。

例4:定义两个字符数组,分别用来存储要转换的字符串和转换后的字符串,然后根据用户输入的操作指令,判断应调用strupr函数还是strlwr函数,进行大小写转换

#define _CRT_SECURE_NO_WARNINGS  //便于调用scanf
#include<stdio.h>
#include<string.h>  //便于进行字符串处理
#pragma warning(disable:4996)  //便于调用strupr,strlwr
int main() {
	char text[20], change[20];  //定义字符串变量
	int n;  //定义整数型变量
	int i = 0;
	//while循环
	while (3) {  //循环次数为3
		printf("输入转换大小写方式(1表示大写,2表示小写,0表示退出):\n");
		scanf("%d", &n); 
		if (n == 1)  //如果是1则进行大写转换
		{
			printf("输入一个字符串:\n");  //输入要转换的字符
			scanf("%s", &text);  //输入要转换的字符
			strcpy(change, text);  //复制要转换的字符
			strupr(change);  //字符串大写转换
			printf("转换成大写字母的字符串为:%s\n", change);  //输出转换后的字符串
		}
		else if(n==2)  //如果数值为2
		{
			printf("输入一个字符串:\n");  //输入要转换的字符
			scanf("%s", &text);  //输入要转换的字符
			strcpy(change, text);  //复制要转换的字符
			strlwr(change);  //字符串大写转换
			printf("转换成小写字母的字符串为:%s\n", change);  //输出转换后的字符串
		}
		else if (n == 0) {  //如果数值为0
			break;   //跳出循环
		}
	}
	return 0;  //结束,无用时可省略
}

运行结果:

82eb81d7e32545818b17ac38123b7c4c.png

五、获得字符串长度

在使用字符串时,有时需要动态获得字符串的长度,通过循环来判断字符串结束标志“\0”虽然也能获得字符串的长度,但是实现起来相对较烦琐,这时可以使用strlen函数来计算字符串的长度。strlen函数的语法格式如下:

9a5cc887d8ef4227af6de31d27b47122.png

功能:计算字符串的实际长度(不含字符串结束标志“\0”),函数返回值为字符串的实际长度。

例5:定义两个字符数组,用来存储用户输入的字符串,然后调用strlen函数计算字符串长度,调用strcat函数将两个字符串连接在一起,并再次调用strlen函数计算连接后的字符串长度

#define _CRT_SECURE_NO_WARNINGS  //便于调用scanf
#include<stdio.h>
#include<string.h>  //便于进行字符串处理
int main() {
	char text[20], connect[20];  //定义字符串变量
	int n;  //定义整数型变量
	
	printf("输入一个字符串:\n");  //提示信息
	scanf("%s", &text);  //获取输入字符串
	n = strlen(text);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	printf("再输入一个字符串:\n");  //提示信息
	scanf("%s",&connect);  //获取输入字符串
	n = strlen(connect);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	//连接字符串
	strcat(text, connect);
	printf("将两个字符串进行连接:%s\n", text);  //计算连接后的字符串
	n = strlen(text);  //计算字符串长度
	printf("字符串长度为:%d\n", n);  //输出字符串长度
	return 0;  //结束,无用时可省略
}

运行结果:

b1044ee9ca8c45c686db49053bea524f.png

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值