首页 > 其他分享 >C语音学习——字符数组与字符串

C语音学习——字符数组与字符串

时间:2024-11-21 23:17:21浏览次数:3  
标签:字符 语音 s1 char 数组 字符串 str1

目录

1.字符数组的定义

2.字符数组的初始化示例:

二、字符串

1.C语言中的无奈事实

2.字符串中的0元素

3.“字符串变量” — 字符数组

    注意:

4.字符串工具包—string.h

字符串函数

(1)strlen()函数

(2)strcmp()函数

(3)strcpy()函数

(4)strcat()函数


1.字符数组的定义

字符数组是特殊的整数有序集合

每一个整数占用一个字节(范围为:-128 — 127)

  1. 可以用字符字面量对数组元素进行初始化或者赋值
  2. 字符数组常常用来存储可阅读的文本信息

2.字符数组的初始化示例:

字符数组的初始化一般有以下两种格式:

  1. char 字符数组名称[长度] = “字符串值”;
  2. char 字符数组名称[长度] = {‘字符1’,‘字符2’,…,‘字符n’,’\0’};
1.
char c [] = "abc\0de”;

2.
char a [] = {97 , 98 , 99 }; 

char b [] = {'T' , '.' , 'D' , '.' }; 

二、字符串

1.C语言中的无奈事实

C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。

  1. 没有专用的字符串类型(字符串:双引号括起来的有序字符集)
  2. 只能通过字符数组“模拟”字符串变量
  3. 存在字符串字面量,但仅能用于常量使用

例如:

#define DT "D.T."
printf("%s\n", DT);
printf("%s\n", "Software");

2.字符串中的0元素

  1. 整数0即字符串中的0元素(char 是最小的整型)
  2. 0元素对应的字符是‘\0’(转义字符)
  3. ‘ 0 ’ 与 ‘ \0 ’不同,‘ 0 ’表示的是一个非0值,对应的整数是48

示例:

int main()
{
   printf("%d\n", '\0');  //输出0
   printf("%d\n", '0');   //输出48

   return 0;
}

3.“字符串变量” — 字符数组

  1. C语言中通过字符数组定义字符串
  2. 当字符数组存在0元素时,可当作字符串使用
  3. 字符数组中的0元素表示了一个字符串的结束
  4. 字符数组中的元素,不一定是字符串中的元素  如char a [] = "abc\0de" 的字符串元素为 “abc”

    注意:

  1. 可以使用字符串常量进行初始化
  2. 字符串长度 小于 字符数组大小
  3. 一个字符数组不一定是一个字符串
  4. 而一个字符串一定是一个字符数组

4.字符串工具包—string.h

“字符串变量”是否存在运算操作
      不存在,C语言中没有专门的字符串类型,也没有针对字符串的专门运输操作!

如:

	int a = 1;
	int b = 2;
	
	char c[] = "abcd";
	char d[] = "efg";
	
	a + b;    //等于3
	✖c + d;    无法对数组进行加法运算,这是错误的写法

但C语言中有专门的工具包来对字符串进行相关的运算操作,即:string.h

字符串函数

常用的字符串函数如下(strlen,strcmp,strcpy,strcat,atoi):

字符串函数

  1. strlen(s)→ 获取字符串的长度
  2. strcpy(s1,s2)→将s2 中的字符复制到s1,s1← s2
  3. strcat(s1,s2)→将s2追加到s1后面,s1←s1+s2
  4. strcmp(s1,s2)→ 比较 s1 和 s2 是否相等,相等时为0
(1)strlen()函数

strlen()获取字符串的长度,在字符串长度中是不包括‘\0’而且汉字和字母的长度是不一样的。比如:

	char str1[]=“慕课网”;
	char str2[] ={'i','m','o','o'"\e'};            运行结果如下
	printf("字符串str1长度=%d\n",strlen(str1));    字符串str1长度=9
	printf("字符串str2长度=%d\n",strlen(str2));    字符串str2长度=5
(2)strcmp()函数

strcmp()在比较的时候会把字符串先转换成ASCII码再进行比较,返回的结果为0表示s1和s2的ASCII码相等,返回结果为1表示s1比s2的ASCII码大,返回结果为-1表示s1比s2的ASCII码小,例如:

char str1[] = "a";
char str2[] = "b";
char str3[] = "a";                                       运行结果如下:
printf("a的ASCII码是%d\n", ' a ');                       str1的ASCII码是4195992
printf("b的ASCII码是%d\n", ' b ');                       str2的ASCII码是4196016
printf("str1与str2比较结果为%d\n", strcmp(str1,str2));    str1与str2比较结果为-1
printf("str2与str1比较结果为%d\n", strcmp(str2,str1));    str2与str1比较结果为1
printf("str1与str3比较结果为%d\n", strcmp(str1,str3));    str1与str3比较结果为0
(3)strcpy()函数

strcpy()拷贝之后会覆盖原来字符串且不能对字符串常量进行拷贝,比如:

#include <stdio.h>
#include<string.h>
#define PI "imooc"
int main()
{
char str[]="慕课网";
strcpy(str,"I love imooc");
printf("%s\n", str);
/*如果加了一下代码,程序就没有运行结果
strcpy(PI,"I love imooc");
printf(“%s\n",PI);
*/
return 0;
}

该运行结果为
I love imooc 

(4)strcat()函数

strcat在使用时s1与s2指的内存空间不能重叠,且s1要有足够的空间来容纳要复制的字符串,比如:

	char s1 [10] = "Holle ";
	char s2 [] = "World";
	strcat(s1, s2);
	printf("%s\n", s1);

该运行结果为
Holle World

标签:字符,语音,s1,char,数组,字符串,str1
From: https://blog.csdn.net/2301_80366509/article/details/143954277

相关文章

  • 用函数实现:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的
    完整的题目在这里哈:用函数实现:在字符串str中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。要求字符串str只包含数字、大写或小写字母。例如,调用fun_delet()函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH.     时......
  • -语音合成:
    https://swivid.github.io/F5-TTS/-语音合成:用流量匹配伪造流利忠实言语的童话故事家代码;论文摘要本文介绍了F5-TTS,一种基于流匹配和扩散变换器(DiT)的完全非自回归文本转语音系统。它不需要时长模型、文本编码器和音素对齐等复杂设计,只需用填充标记将文本输入填充到与......
  • 代码随想录算法训练营day52 day53| 卡码网101.孤岛的总面积 102.沉没孤岛 103.水
    学习资料:https://www.programmercarl.com/kamacoder/0101.孤岛的总面积.html#思路邻接矩阵是否被遍历过;每个坐标点上的值为0、1、2等等;四个边的考虑;地图的遍历次数都是卡码网的题学习记录:101.孤岛的总面积点击查看代码#用深搜,遍历邻接矩阵的四个边,先遍历所有可遍历的岛屿,......
  • 【Python】0基础学Python——字符串编码、base64编码、不可逆加密、公私钥存储、公钥
    0基础学Python——字符串编码、base64编码、不可逆加密、公私钥存储、公钥加密私钥解密、签名和认证、函数标注类型字符串编码base64编码地址解码-1地址解码-2不可逆加密md5加密sha256加密公私钥存储获取密钥对获取字符串流存储到文件公钥加密私钥解密公钥加密1.字符......
  • 人类级别语音 AI 路线图丨 Voice AI 学习笔记
    Ultravox是一个开源多模态模型,专为实时人工智能对话而设计。他们最近分享了内部的语音AI路线图框架。 这幅路线图描绘了从基础助理到人类级别语音AI的五个阶段,展现了他们对于实现真正自然、富有表现力和影响力的对话交互的愿景。人类级别语音AI路线图ROADMAPTOHUMAN......
  • ChatGPT 开启「眼睛」,实时摄像头对话来了;昆仑万维推出实时语音助手 Skyo丨 RTE 开发者
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • C语言,如何进行多次分割,获取的到多个字符串,组成一个数组
    如"A|B|C|D"根据|分割,得到数组["A","B","C","D"]char*propertyArr[4]={"-1","-1","-1","-1"};custom_string("A|B|C|D","|",propertyArr,4);voidc......
  • 字符串的基本操作(C语言版)
    字符串的判断、查找字符串并返回查找结果一、编写函数:采用顺序结构存储串,编写一个函数substring(strl,str2),用于判定str2是否为strl的子串;编写一个函数,实现在两个已知字符串中找出所有非空最长公共子串的长度和最长公共子串的个数;二、代码演示:1、字符串匹配的源代码:#......
  • 国标GB28181软件LiteGBS国标GB28181公网平台在Android端实现设备接入的语音对讲
    在智能安防领域,GB28181协议已经成为一种广泛应用的通信标准。通过该协议,可以实现不同品牌和型号的安防设备之间的互联互通。而在Android平台上实现GB28181设备接入端的语音广播和语音对讲功能,对于提升安防监控系统的实时性和交互性具有重要意义。而在功能方面,LiteGBS国标GB28181......
  • 写一个加密字符串的方法
    /***加密字符串*@param{string}str需要加密的字符串*@param{string}key加密密钥*@returns{string}加密后的字符串*/functionencryptString(str,key){if(!str){return"";}try{//使用CryptoJS库进行AES加密constkeyUt......