深入浅出:字符数组与字符串的区别与应用

创始人
2024-12-31 04:35:15
0 次浏览
0 评论

数组跟字符串有什么联系和区别

简而言之,由于数组是连续的内存,字符串也是连续的内存,因此字符数组和字符串具有大致相同的属性:chararray[4]={"abc"};//有字符串结束标志,数组不能跨越。
borderchar*p;p=array;//这样就可以使用指针p来操作字符数组的数组了。
此时p指向数组第一个元素的地址。
“ABC”;pt指针也指向a。
也可以计算地址。
不同之处在于字符串可以使用字符串函数(get、puts、strlen、strcmp等)。
实用的字符串函数使字符串处理更加方便。
此外,字符使用ascll代码存储在内存中。
打印%d格式的字符意味着打印对应的ascll代码。
\(字符ascll代码)可以通过这种方式引用字符。
它并不全面,但对于常用的功能来说已经足够了。
字符串处理函数:字符串函数可分为字符串输出(puts)、输入(gets)、合并(stract)、复制(strcpy)、比较(strcmp)、转换、复制和搜索(strchr)。
注意:在本章的示例中,该字符串可以替换为指针。
1字符串输出函数puts:格式:puts(字符数组名);功能:将一串字符数组打印到显示器上。
示例:#includemain(){chara[]="madeinchina\r\niswell";puts(a);}注意:puts()函数可以使用转义字符。
put可以完全替换为:printf函数printf一般用于格式化输出。
put()函数用于将字符串写入标准输出设备(屏幕)并换行。
字符串变量(字符串数组)名称或字符串指针。
put()函数与printf("%s\n",s)具有相同的功能。
例4:main(){chars[20],*f;/*定义字符串数组和指针变量*/strcpy(s,"Hello!TurboC2.0");/*分配字符串数组变量*/f="谢谢你“;/*字符串指针变量赋值*/puts(s);puts(f);}2获取字符串输入函数:格式:get(字符数组名);功能:从标准输入设备键盘输入字符串。
;该函数获取字符数组首地址的函数值。
示例:#includemain(){chara[15];printf("inputastring:\r\n");gets(a);puts(a);}注意:gets函数需要它不需要t以“结尾。
这与scanf函数不同。
gets()函数gets()函数用于从标准输入设备(键盘)读取字符串。
回车结束,却返回。
汽车符号不属于该字符串。
调用格式为:获取;其中s是字符串变量(字符串数组名称或字符串指针)。
gets(s)函数与scanf("%s",&s)类似,但并不完全相同。
我在使用scanf("%s",&s)函数输入字符串时遇到问题。
如果输入空格,则将其视为输入字符,如果字符串结束,则将空格后面的字符视为下一个条目,但gets()函数会获取整个输入字符串直至回车符。
例5main(){chars[20],*f;printf("名字是什么?\n");gets(s);/*等待输入字符串直到回车符结束*/puts(s);/*输出输入的字符串。
*/puts("Howoldareyou?");gets(f);puts(f);}3字符串拼接函数strcat:格式:strcat(字符数组名1,字符数组名2)功能:将字符数组2中的字符串拼接起来转换为字符连接到数组1。
字符串1中的字符串结束标记'\0'删除。
返回值是数组1的首地址。
所以数组1应该有足够的长度。
示例:#include#includemain(){staticchara[]="mynameis";charb[15];printf("inputyourname\r\n");gets(b);strcat(a,b);puts(a);}4字符串复制函数strcpy:格式:strcpy(字符数组名1,字符数组名2);功能:Put字符数组将2中的字符串复制到字符数组1中。
字符编号名称2也可以是字符串常量。
这相当于将一个字符串分配给一个字符数组。
示例:#include#includemain(){chara[20];charb[]="madeinchina";strcpy(a,b);puts(a);}注意:必需字符数组1必须有足够的长度。
5字符串比较功能:注:1、逐字比较,确定对应字符的ASCII码值。
2.比较某些字符以确定其大小,然后立即退出。
输出非零。
3.如果字符串相同,strcmp输出0。
格式:strcmp(字符数组名1,字符数组名2)功能:按ASCII码顺序比较两个数组中的字符串,并返回比较结果。
您将得到作为函数返回值的结果。
字符串1=字符串2,返回值=0;字符串1>字符串2,返回值>0;字符串1<字符串2,返回值<0>示例:#include#includemain(){intk;chara[20];charb[]="ilovechina";printf("inputsstring\r\n");gets(a);k=strcmp(a,b);if(k==0)printf("a=b\r\n");if(k>0)printf("a>b\r\n");if(k<0>strncmp:格式:strncmp(字符数组名1,字符数组名2,intlength);功能:比较字符串1和字符串2的第一个长度字符。
字符串1=字符串2,返回值=0;返回值>0;字符串1<字符串2,返回值<0>#includemain(){intk;char*a="Ilovechina";char*b="Iamhappy";k=strncmp(a,b,6);if(k>0)printf("测试ngbissgreaterthanstringa\r\n");if(k<0 xss=clean>#include;main(){intk;chara[]="ilovechina";k=strlen(a);printf("thelengthofstringis:%d\r\n",k);}注意:不能对字符串strchr使用==或!=:格式:strchr(字符)数组名称),要查找的字符);:查找字符串中第一次出现的字符,返回指向该字符出现位置的指针,如果该字符不存在,则返回NULL。
#include#includemain(){chara[30];char*p,c='n';strcpy(a,"Ilovechina");p=strchr(a,c);if(p)printf("thecharacter%cisatposition%d\r\n",c,p-a);elseprintf("thecharacterisnotfound:\r\n");}注意:在最后一句中第三次(p-a)用法。

字符串与字符数组的区别是什么?

我同意处理上述网络有不同的方法,所以我会做得更好。
1.String"ABC"//这是一个字符串常量(也称为字符串文字)。
0'是一个空字符,没有字符。
当编译器找不到字符时,它将停止处理。
在编程中,你也将字符串放入待处理的字符串数组中:charstr1[]="ABC";//编译器会自动计算字符串的长度charstr2[20]="ABC";//这是一个字符用双逗号括起来的字符串数组的内容被视为字符串位置的索引,将数组名称视为指向数组位置的指针。
您还可以像这样初始化字符串数组:charstr3[4]={'A','B','C','\0'};从而适应字符'\0':没有最后一个空字符,这不是一个字符串,而是一个字符数组,所有初始元素自动属于空字符'\0'。
不要像这样初始化数组:chardont[]={'A','B','C'};记忆力上没有天赋。
2、字符数组字符数组和字符串数组最大的区别就是处理范围不同。
字符串数组在找到空字符时就终止,而字符数组的长度可以根据程序的需要进行控制。
但与字符串数组一样,数组的最后一个字符也必须是空字符。
无法完成以下初始化:charstr4[1]={'A','B'};//错误:初始值设置。
声明数组(包括字符数组)时,数组大小必须是整数值。
在C99可以添加到服装的可变长度之前,必须通过添加由整型常量组成的表达式将尺寸设置为整型常量。
intn=8;charstr5[2*sizeof(int)+1];//有效charstr6[n];//设置c99后有效的变量长度,不超过限制,开发者可以根据需要以编程方式处理该字符。
与字符串处理不同的是,当遇到空字符时,编译器会继续处理空字符后面的数据。
例如:charstr7[3]={'A','\0','C'};str7[1]='B';
热门文章
1
Python字符串大小写转换方法汇总与示... python如何定义函数将小写转换为大写1.全部转换为大写:upper()用法:...

2
Java基础面试题:NIO、AIO与IO... 「2022最新版」Java基础面试题总结(60道题含答案解析)“一个强大的元编程...

3
深入解析JavaScript:Windo... javascript中的最高层是window吗?下面包扣哪些对象?给个层次结构图...

4
JavaScript中字符串与数值相加技... SQL如何让字符串与数值相加你好,这样写:rtrim()删除尾随空格,ltrim...

5
Python 3.11.0安装指南:Wi... Python3.11.0下载安装并使用help查看模块信息(Win11)访问Py...

6
C语言基础要点梳理:必背知识及经典程序解... c语言基础知识必背有哪些?C语言基础知识包括:1.命名C语言。2.变量和赋值。3...

7
SQL行列转换技巧解析:优化数据处理与分... 如何进行sql行转列,列转行整合?在编写大数据SQL时,列转换是一种旨在优化数据...

8
Java AJAX查询实现教程:前端后端... java中ajax怎样实现查询在Java中使用AJAX执行查询功能通常需要前端J...

9
揭秘前端:HTML、CSS、JavaSc... 前端包括什么前端主要由三个组件组成:HTML、CSS和JavaScript。1....

10
Python while循环详解:条件控... pythonwhile循环用法使用Pythonwhile循环:与if语句类似,w...