浅谈字符串函数

1、长度不受限制的字符串函数

长度不受限制的字符串函数,如strcmp、strcpy、strcat这类的函数,都是以'\0'作为结束的标志,所以是存在一定的使用隐患的,程序员如果编写程序不当,往往会出现越界访问的情况。

所以,为了相对更加安全的使用,我们引入长度受限制的字符串函数。

2、长度受限制的字符串函数

长度受限制的字符串函数,如strncmp、strncpy、strncat这类的函数,使用的方法与效果与长度不受限制的字符串函数类似,只不过多一个限制长度的参数——要操作的字节数。

A、strncmp

来看一看下面这段代码:

比较str1和str2两个字符串,使用strncmp进行比较,规定比较3个字节,即比较到第3位,故最终的输出的结果应为0。

B、strncpy

来看下面这段代码:

此处使用strncpy函数进行拷贝,规定拷贝的字节数为5个字节,也就是说将hello拷贝过去,因而最终输出的结果应为hello。

特别说明一下,strncpy函数将内容拷贝过去时是不会自带\0的,这个可以通过下例进行说明:

C、strncat

来看以下这段代码:

使用strncat函数,将从str2这个地址处开始后5个字节的内容拷贝到str1字符串的内容之后,故输出结果如下所示:

特别说明,使用strncat函数,拷贝过去时会自带\0,这个可以通过以下代码进行验证:

3、字符分类函数

字符串分类函数有很多,例如:

isupper:用于判断是否为大写字母

islower:用于判断是否为小写字母

isalpha:用于判断是否为字母

isdigit:用于判断是否为数字字符

isalnum:综合isalpha和isdigit 

字符串分类函数有很多,在此不一一列举,这些函数都包含在头文件ctype.h中

4、字符转换函数

字符转换函数只有两个: toupper和tolower。

toupper是将小写字母转换为大写字母,tolower则相反,两者都包含在头文件ctype.h中。

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中,可以使用scanf函数来读取字符串。在引用\[1\]中的示例代码中,使用了scanf_s函数来读取字符串。scanf_s函数的用法是scanf_s("%s", str, (unsigned int)sizeof(str)),其中str是用来存储字符串的字符数组,sizeof(str)表示str数组的大小。这样可以确保读取的字符串不会超出数组的范围。另外,在C++11中,不推荐使用scanf和gets函数,因为它们被认为是不安全的。推荐使用scanf_s和gets_s函数来读取字符串。\[2\] 另一种读取字符串的方法是使用string类。在引用\[3\]的示例代码中,使用了string类来接收字符串输入。可以使用cin对象的>>运算符来读取字符串,例如cin >> s,其中s是一个string对象。这种方法可以方便地读取包含空格的字符串。 #### 引用[.reference_title] - *1* *2* [浅谈C/C++字符串输入scanf、gets、cin、getline、getchar](https://blog.csdn.net/qq_14824921/article/details/124356747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C/C++ 中输入字符串的几种方式](https://blog.csdn.net/m0_64604482/article/details/129249732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值