字符串处理函数(1)|学习笔记

简介: 快速学习字符串处理函数

开发者学堂课程【你的第一门 C 语言课字符串处理函数(1)】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/444/detail/5469


字符串处理函数(1)


内容介绍: 

一、 字符数组

二、字符串处理函数

 

一、字符数组 

字符串常量:”FishC 小甲鱼,C 工作室”

字符数组:

例子1、

int main

{

char str[10];

str[0] = 'F';

str[1] = 'i ';

str[2] = 's ';

str[3] = 'h';

str[4] = 'c';

str[5] = '\0';

....-

}

例子2、

int main

{

//初始化字符数组的每个元素

char str1[10] = { 'F', 'i'o's', 'h', 'c', '\0'};

//可以不写元素的个数,因为编译器会自动计算

char str3[] = i 'F', 'i', 's', 'h', 'C', '\0'};

//使用字符串常量初始化字符数组

char str4[] = { "FishC"}; 

//使用字符串常量初始化,可以省略大括号

char str5[] = "FishC";

}


二、字符串处理函数

1) 获取字符串的长度: strlen

原型:size_t strlen (const char *__s);
功能:返回一个字符串(__src)的长度,即字节(符)数,这里仅考虑 ASCII 字符;

#include <stdio.h>

#include .h>

int main( )

{

char str[] "I Love FishC.com!";

printf("sizeof str = %d\n",sizeof(str));

printf("strlen str = %u\n" ,strLen(str));

return 0;

}

2) 拷贝字符串:strcpy 和 strncpy

strcpy:

原型:char *strcpy (char * __dest, const char * __src);
功能:将一个字符串(__src)拷贝到另一个字符串缓冲区中(__dest),并返回拷贝后的字符串指针; 

注意:
1. 必须保证拷贝后的缓冲区即上例中 str2的大小足够,否则造成内存溢出到未分配的地址,容易产生各种未知错误;
2. 由于该函数原理是逐字节复制,所以如果 str1和 str2的空间有重叠,则会造成覆盖。

strncpy:

原型:char *strncpy (char * __dest, const char *__src, size_t __n);
功能:将一个字符串(__src)拷贝到另一个字符串缓冲区中(__dest),拷贝最多不超过__n 字节,并返回拷贝后的字符串指针;

注意: strncpy 这个函数并不会自动的在字符串结尾加’\0’,需要自己去增加。

代码:

#include

#include <string.h>

int main( )

{

char str1[] = "original String" ;

char str2[] = "New String";

char str3[100] ;

strcpy(str1, str2) ;

strcpy(str3,"Copy Successful") ;

printf("strl: %s\n”, strl) ;

printf("str2: %s\n", str2);

printf("str3: %s\n”,str3) ;

return 0 ;

}

3) 连接字符串:strcat 和 strncat

strcat:

原型:char *strcat (char *__dest, const char *__src);
功能:将一个字符串(__src)拼接到另一个字符串缓冲区中(__dest),并返回拼接后的字符串指针;

注意:需要保证 str1有足够的存储空间,否则,程序会顺着内存地址往后写,破坏其他内存数据。
strncat:

原型:char *strncat (char *__dest, const char *__src, size_t __n);
功能:将一个字符串(__src)拼接到另一个字符串缓冲区中(__dest)最多不超过__n个字节,并返回拼接后的字符串指针;

代码:

#include

#include <string.h>

int main( )

{

char strl[] = "To be or not to be";

char str2[40];

strncpy(str2,strl, 5);

str2[5] = ‘\0’;

printf("str2: %s\n", str2);

return 0 ;

}

#include

#include <string.h>

int main( )

char strl[] = "I Love”;

char str2[] = "FishC.com!" ;

strcat(str1,””);

strcat(strl, str2) ;

printf("strl: %s\n", str1);

return 0 ;

4) 比较字符串:strcmp 和 strncmp

strcmp:

原型: int strcmp (const char *__s1, const char *__s2);

功能:比较字符串__s1和字符串__s2,返回比较结果,如果相等,则返回0;

比较方式:两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇’\0’为止;

返回结果:当s1s2时,返回值>0; 

strncmp:

原型: int strncmp (const char *__s1, const char *__s2, size_t __n);
功能:比较字符串__s1和字符串__s2__n个字符,返回比较结果,如果相等,则返回0;

比较方式: 两个字符串自左向右逐个字符相比(按 ASCII 值大小相比较),直到出现不同的字符或遇’\0’为止;

返回结果:当s1时,返回值<0;s1=s2时,返回值=0;当s1>s2时,返回值>0;

代码:

#include

#include <string.h>

int main( )

char strl[] = "FishC.com!" ;

char str2[] = "FishC.com !

if (!strcmp(strl, str2) )

{

printf("两个字符事完全一致1 \n" );

}

else

{

printf("两个字符串存在差异! \n")

}

return 0;

}

相关文章
|
12月前
|
缓存 监控 负载均衡
提高服务器CPU使用率
提高服务器CPU使用率
1152 8
|
Ubuntu 安全 Linux
Grub2启动项的修改和相关操作命令
**GRUB2**是Linux的主要引导加载程序,用于启动时显示菜单。要修改启动项,应编辑`/etc/default/grub`,然后运行`grub-mkconfig -o /boot/grub/grub.cfg`更新配置,最后确保`grub.cfg`只读。若需修复引导问题,可启动到Ubuntu Live CD/DVD,挂载根和boot分区,重新安装GRUB2,并根据需要修复`grub.cfg`或Windows引导项。遵循此指南,能安全管理GRUB2并解决引导问题。
|
资源调度 运维 监控
启发式算法在监控软件中的用途
启发式算法在监控软件中的运用可以帮助解决复杂的优化和决策问题。与传统的精确算法相比,启发式算法更加适用于大规模、高维度和实时性要求较高的监控场景。
590 0
|
SQL 监控 容灾
【RDS】搭建高可用架构
RDS提供各类高可用功能,例如独享型规格、高可用系列、多可用区、跨地域备份恢复等等。
662 0
【RDS】搭建高可用架构
|
Kubernetes 数据库 Docker
Kubernetes部署实操教程
之前,我们基本都是单体Web应用程序:大型的代码库,随着新的功能和特性不断发展,最后它们都会变成巨大的,缓慢移动的,难以管理的巨人。 现在,越来越多的开发人员,架构师和DevOps专家认为,使用微服务比使用大型单体应用更好。
6533 0
|
3天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
14天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1305 5
|
13天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1333 87