字符串处理—FY的蓝桥

字符

字符简述

char 称为字符类型,只能用单引号’ ‘来包围,不能用双引号" “包围。而字符串只能用双引号” "包围,不能用单引号’ '包围。
char 变量在内存中存储的是字符对应的 ASCII 码值。所以以%c读入的字符可以用%d输出对应的ASCII码值,ASCII码表如下(图源百度百科):
ASCII码表
ASCII码表在竞赛中最多的应用是什么呢?就是大小写转换,基本上我们只需要知道ASCII码表中的1,a和A的位置在哪就行了。对字符进行相应的加减就可以进行大小写的转换,不记得也可以通过编译器打印来看出来。

字符串

字符串顾名思义就是一串字符,我们在对字符串操作时需要调用一个新的库
#include<string.h>
当然,在你只需要读入字符串的时候不需要这个库。

字符串读入

scanf读法

scanf我们通常用来读取类似于单词的一整串字符,比如**“ddsfk541tegdfasd”**
里面的字符有多么乱都不归我们管,我们只需要知道他是连续的就可以,具体操作为:
scanf("%s",str);
在读入字符串的时候,str前不需要加取地址符&,原因是字符串的读取类似于字符指针,这个以后有机会再讲。需要注意的是scanf读不进空格!,空格会被类似于回车读取,在字符串中途读入空格会提前结束scanf读取,在字符串前的空格会提示重新读取。

gets读法

gets()为stdio.h库中的函数,也是读入字符串,关键是gets可以读入空格,只有在回车时才会退出读取,理论上gets读取是无限的,所以在使用gets读取时要注意读取字符串的长度,注意空间不要越界。具体操作为:
gets(str);
gets的使用范围比较广,需要注意的是在连续使用gets或者gets和scanf混合使用时需要注意关于回车的操作,应该用一个getchar()去抵消。

字符串操作函数

别的不说,先把string.h库给写上头文件。

strcmp

字符串比较函数,具体用法为:
strcmp(str1,str2);
其中str1和str2是两个字符串,如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。在竞赛中经常使用这种方法去进行字符串比较,当然你也可以通过构造一个函数,进行遍历比较也行。可以尝试自己构造一下这个函数,

strcpy

字符串复制函数,具体用法为:
strcpy(str1,str2);
意思是将str2赋值给str1,具体是通过传址操作的,我们不需要去了解,需要注意的是str1的空间必须足够。

strlen

字符串长度函数,具体用法为:
strlen(str);
意思是返回字符串长度,是整型。这个函数也比较常用,通常在回文字符串判断时使用,需要注意的是,字符串的储存是从0地址开始,所以字符串终止地址是strlen(str)-1,当然,有的读取字符串包含末尾的‘\0’,这个是不会被strlen读取的。

在竞赛中,字符的考查是经常出现的,之后我会间歇性的补充题目,一般的字符串类型题目都是对一串字符进行单一字符更改或者权值判断或者最简单的回文判断,这些都是利用到strlen函数,所以在只考虑部分点得分时,对strlen这个函数的把控就得到位了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值