字符类函数

简介: 字符类函数

字符分类函数

函数解释

1. 字符分类函数是专⻔做字符分类的。


2. 如果字符符合函数分类要求,则返回真;不符合则返回假。


3. 使用字符分类函数时,需要引入<ctype.h>头文件。


4. 字符分类函数的库函数查询:<cctype> (ctype.h) - C++ Reference (cplusplus.com)


islower();//如果是小写则返回真
isupper();//如果是大写则返回真

函数示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
  printf("%d", islower('a'));
  return 0;
}
//2,为真。
//实现把字符串中的小写字母改成大写字母
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
  char arr[] = "I am A student";
  int i = 0;
  while (arr[i] != '\0')
  {
    //if (arr[i] >= 'a' && arr[i] <= 'z')
    if(islower(arr[i]))
    {
      arr[i] -= 32;
    }
    printf("%c", arr[i]);
    i++;
  }
  return 0;
}

字符转换函数

函数解释

1. C语⾔提供了2个字符转换函数。

2. 使用字符分类函数时,需要引入<ctype.h>头文件。

3. 字符分类函数的库函数查询:<cctype> (ctype.h) - C++ Reference (cplusplus.com)

1. tolower()//转化成小写
2. toupper()//转化成大写

函数示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <ctype.h>
int main()
{
  char arr[] = "I am A student";
  int i = 0;
  while (arr[i] != '\0')
  {
    //if (arr[i] >= 'a' && arr[i] <= 'z')
    if (islower(arr[i]))
    {
      arr[i] = toupper(arr[i]);
    }
    printf("%c", arr[i]);
    i++;
  }
  return 0;
}

strlen()函数

函数解释

1. 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包含 '\0' )。


2. 函数里面的字符串必须要以 '\0' 结束,否则返回随机值。


3. 注意函数的返回值为 size_t,是无符号的( 易错 )。


4. strlen的使用需要包含头文件<string.h>.

函数示例

#include <stdio.h>
#include <string.h>
int main()
{
     const char* str1 = "abcdef";
     const char* str2 = "bbb";
     if(strlen(str2)-strlen(str1)>0)
     {
         printf("str2>str1\n");
     } 
     else
     {
         printf("srt1>str2\n");
     }
     return 0;
}
//结果是第一种。

strcpy()函数

函数解释

1. strcpy----string copy,字符串复制。


2. strcpy(arr1,arr2),先把arr1内容清空,再把arr2的内容拷贝到arr1中,返回arr1。


3. arr1必须能修改。


4. arr2必须以'\0'结束。


5. strcpy()函数的使用需要包含头文件<string.h>.

函数示例

strcpy(目标字符串,源字符串);
#include <stdio.h>
#include <string.h>
int main()
{
  char arr2[] = { "hello bit" };
  char arr1[15] = { 0 };
  printf("%s", strcpy(arr1, arr2));//正确
    arr1=arr2;//报错,相当于3=5
  return 0;
}

strcat()函数

函数解释

1. strcat--string contact,字符串拼接函数。


2. 两个字符串必须以 '\0' 结束。(与函数运行原理有关)


3. strcat()函数的使⽤需要包含头文件<string.h>.


4. strcat(arr1,arr2)函数把arr2加在arr1后面,然后得到的是最新的arr1。


5. arr1需要有足够的空间,并且可以改变。

函数示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
  char arr1[20] = "hello ";
  char arr2[10] = "world";
  printf(strcat(arr1, arr2));
  return 0;
}
//输出 hello world

strcmp()函数

函数解释

1. strcmp--string compare,字符串或者数组之间的比较。


2. 字符串不能直接(==)进行比较,需要运用strcmp()函数。


3. strcmp(arr1,arr2);如果arr1>arr2,返回>0的值;如果arr1<arr2,返回<0的值;如果arr1=arr2,返回0。

函数示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
  char arr1[20] = "abce";
  char arr2[10] = "abcd";
  printf("%d",strcmp(arr1, arr2));
  return 0;
}

限制长度的修正

strncpy

1. 拷贝num个字符从源字符串到目标空间。

2. 如果源字符串的长度小于num,则拷贝完源字符串之后,在目标的后边追加0,直到num个。

#include <stdio.h>
#include <string.h>
int main()
{
  char arr1[] = { "hello bit" };
  char arr2[15] = { "woshishei"};
  printf( strncpy(arr2, arr1,3));//只针对双方前三个字符
  return 0;
}

strncat

#include <stdio.h>
#include <string.h>
int main()
{
  char arr1[30] = { "hello bit" };
  char arr2[15] = { "woshishei"};
  printf( strncat(arr2, arr1,5));
  return 0;
}

strncmp

#include <stdio.h>
#include <string.h>
int main()
{
  char arr1[30] = { "abce" };
  char arr2[15] = { "abcd"};
  printf("%d" ,strncmp(arr2, arr1, 3));
  return 0;
}

致谢

  感谢您花时间阅读这篇文章!如果您对本文有任何疑问、建议或是想要分享您的看法,请不要犹豫,在评论区留下您的宝贵意见。每一次互动都是我前进的动力,您的支持是我最大的鼓励。期待与您的交流,让我们共同成长,探索技术世界的无限可能!

相关文章
|
机器学习/深度学习 自然语言处理 算法
基于深度学习的语音识别技术应用与发展
在当今数字化时代,语音识别技术已经成为人机交互领域的重要组成部分。本文将介绍基于深度学习的语音识别技术在智能助手、智能家居和医疗健康等领域的应用与发展,同时探讨该技术在未来的潜在应用和发展方向。
470 4
|
Java 关系型数据库 MySQL
高校宿舍报修管理系统的设计与实现(论文+源码)_kaic
高校宿舍报修管理系统的设计与实现(论文+源码)_kaic
|
存储 机器学习/深度学习 算法
Adam-mini:内存占用减半,性能更优的深度学习优化器
论文提出一种新的优化器Adam-mini,在不牺牲性能的情况下减少Adam优化器的内存占用。
462 10
Adam-mini:内存占用减半,性能更优的深度学习优化器
|
10月前
|
人工智能 运维 Devops
基于云效落地平台工程企业级最佳实践
本文介绍了平台工程作为DevOps演进的必然方向,探讨了其建设过程中面临的挑战及解决方案。文中首先分析了平台工程与DevOps的关系,强调了其在提升价值交付和降低团队心智负担方面的作用。接着,通过云效作为基础设施,详细阐述了其如何帮助企业构建高效的研发平台,并分享了两个实际案例:一个是200人规模的互联网企业,另一个是2000人规模的金融行业企业。最后,展望了平台工程的未来发展方向,包括组件化开发、AI技术的应用以及智能化场景的融入。碧桂园生活服务集团也分享了其在平台工程领域的实践经验和未来思考,强调了标准化、自动化、可靠性和智能化四大原则的重要性。
272 10
|
数据采集 Python 数据可视化
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
[Python] 数据预处理(缺失值、异常值、重复值) [相关方法参数说明、代码示例、相关概念](三)
|
传感器 编解码 索引
SFNC —— 图像格式控制(三)(上)
SFNC —— 图像格式控制(三)
276 3
|
安全 Java API
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
SpringBoot 实现 elasticsearch 索引操作(RestHighLevelClient 的应用)
326 1
|
数据可视化 测试技术 uml
【掌握绘图艺术】用PlantUML绘制完美UML图表,开发者的福音
【掌握绘图艺术】用PlantUML绘制完美UML图表,开发者的福音
3416 2
|
前端开发 关系型数据库 MySQL
OceanBase数据库常见问题之bootstrap时报错如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
算法 网络虚拟化 网络架构
精通网络设计:生成树根桥配置详解
【4月更文挑战第22天】
782 0