字符串处理函数1

简介: 一、字符数组二、字符串处理函数

字符串处理函数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 <string.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)   拷贝字符串:strcpystrncpy

 

strcpy:

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

 

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

 

strncpy:

 

原型:char *strncpy (char * __dest, const char *__src, size_t __n);


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


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

 

 

代码:

#include <stdio.h>

#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)   连接字符串:strcatstrncat

 

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 <stdio.h>

#include <string.h>

int main( )

{

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

char str2[40];

 

strncpy(str2strl, 5);

str2[5] = ‘\0’;

 

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

 

return 0 ;

}

 

#include <stdio.h>

#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)   比较字符串:strcmpstrncmp

 

strcmp:

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

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

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

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

 

strncmp:

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

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

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

 

代码:

 

#include <stdio.h>

#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;

}

相关文章
|
Ubuntu
Ubuntu系统镜像下载,国内镜像站大全(山大/清华/阿里/浙大/中科大...)
装Ubuntu,是很多理工科同学入门的第一个挑战,首先我们就需要找到一个能用的iso镜像,根据你的网络环境的不同,不同的站点下载速度会不一样,下面列举一下几个比较好用的,都是来自Ubuntu官方推荐镜像站链接导航国内分区
10641 1
|
8月前
|
人工智能 开发工具 C++
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
本文介绍了如何利用阿里云通义灵码AI程序员的Qwen2.5-Max模型,在VS Code中一键生成扫雷小游戏。通过安装通义灵码插件并配置模型,输入指令即可自动生成包含游戏逻辑与UI设计的Python代码。生成的游戏支持难度选择,运行稳定无Bug。实践表明,AI工具显著提升开发效率,但人机协作仍是未来趋势。建议开发者积极拥抱新技术,同时不断提升自身技能以适应行业发展需求。
22585 18
利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例
|
前端开发 NoSQL Serverless
Serverless 应用引擎操作报错合集之阿里函数计算中,出现"Unhandled promise rejection"的错误如何解决
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
277 1
|
安全 网络协议 应用服务中间件
内网ip申请SSL证书实现https访问
内网IP地址虽不能直接申请公网SSL证书,但可通过IP SSL证书保障数据安全。流程包括:确定固定内网IP,选择支持内网IP的CA,注册申请证书,生成CSR,验证IP所有权,下载部署证书至Web服务器,测试HTTPS访问,确保配置正确及证书有效。此方法适用于内网环境,提升数据传输安全性。
内网ip申请SSL证书实现https访问
|
Rust 前端开发 JavaScript
Tauri 开发实践— Tauri 怎么样
Tauri 是一个用于构建高效、小型二进制文件的框架,适用于所有主流桌面及移动平台。开发人员可以利用任何可编译为 HTML、JavaScript 和 CSS 的前端框架构建应用,并借助 Rust、Swift 或 Kotlin 进行后端开发。Tauri 采用三层架构,包括 tauri-app、WRY(跨平台 Webview 库)和 TAO(跨平台窗口管理器)。相较于 Electron,Tauri 使用系统内置浏览器引擎执行 Web APP,具有更小的资源占用和更高性能。详情见:[Tauri 官网](https://tauri.app/)。
1240 0
Tauri 开发实践— Tauri 怎么样
|
存储 网络协议 Linux
GIGE 协议摘录 —— 设备发现(一)
GIGE 协议摘录 —— 设备发现(一)
895 3
|
机器学习/深度学习 自然语言处理
多语言模型在实际应用中有哪些优势和局限性?
多语言模型在实际应用中有哪些优势和局限性?
|
SQL 存储 JSON
StarRocks进阶
【6月更文挑战第1天】StarRocks支持四种表类型:明细表、聚合表、更新表(正被主键表取代)和主键表。建表后类型不可修改,排序键需先于其他列定义,不支持BITMAP和HLL类型。主键表具有唯一非空约束的主键,适合实时更新和高效查询。明细表用于追加新数据,不支持修改。聚合表用于聚合统计,排序键需唯一。表引擎默认为OLAP,也可连接到外部数据源如MySQL、Hive等。数据类型包括数值、字符串、日期和半结构化类型如JSON。此外,还支持多种函数、DDL操作和HTTP SQL API。
1652 0
|
传感器 存储 编解码
STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
1780 0
STM32入门开发: 编写DS18B20温度传感器驱动(读取环境温度、支持级联)
|
JSON iOS开发 数据格式
在 VScode 中设置快捷键快速添加注释(文件头部、文件函数)
在编写代码的过程中,为了增加代码的可读性和维护性,我们通常会添加注释来解释代码的作用和功能。为了提高效率,我们可以在 VScode 中设置快捷键,以便快速添加注释,包括文件头部和函数注释。下面是详细的设置步骤:
6794 1
在 VScode 中设置快捷键快速添加注释(文件头部、文件函数)