🌏个人博客主页:意疏-CSDN博客
希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~
阅读指南:
开篇说明ASCll编码字符串
开篇说明
本章节我们学习C语言中一个非常重要的概念 字符串。在C语言编程中,字符串是一种非常重要的数据类型。与许多其他编程语言不同,C语言本身并没有直接提供字符串类型,而是通过字符数组来表示字符串。这种表示方法虽然简单,但也带来了一些需要注意的细节和潜在的陷阱。
在C语言中,字符串通常以字符数组的形式存储,并以空字符(\0)作为字符串的结束标志。例如,字符串 “Hello” 在内存中实际上是以 {‘H’, ‘e’, ‘l’, ‘l’, ‘o’, ‘\0’} 的形式存储的。这种表示方法使得字符串的长度可以动态变化,但也要求程序员在处理字符串时必须小心处理字符串的边界和结束标志。
掌握C语言中的字符串处理技巧,不仅能够帮助我们编写出更高效、更安全的代码,还能让我们更好地理解C语言的底层机制。接下来,我们将深入探讨C语言中字符串的各种操作和注意事项。
ASCll编码
ASCII (American Standard Code for Information Interchange美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准 ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符,包括英文字母(大写和小写)、数字、标点符号以及控制字符、如换行符或回车符。
我们来举个例子:以便更好的理解ASCll编码
#include
int main(){
char ch = 'H';
printf("ch = %c\n", ch);
printf("ch的ASCII码 = %d\n", ch);
return 0;
}
输出结果是这样子的: 我们可以看到大写H的ASCll码为 72 和下面的编码相对应。读者可以自行一试。
以下为ascll编码表 较长,读者可以拖动目录自行阅读。
十进制十六进制字符描述00x00NUL空字符10x01SOH标题开始20x02STX正文开始30x03ETX正文结束40x04EOT传输结束50x05ENQ询问60x06ACK确认70x07BEL响铃80x08BS退格90x09HT水平制表符100x0ALF换行110x0BVT垂直制表符120x0CFF换页130x0DCR回车140x0ESO移出150x0FSI移入160x10DLE数据链路转义170x11DC1设备控制1180x12DC2设备控制2190x13DC3设备控制3200x14DC4设备控制4210x15NAK否定220x16SYN同步空闲230x17ETB传输块结束240x18CAN取消250x19EM介质结束260x1ASUB替换270x1BESC转义280x1CFS文件分隔符290x1DGS组分隔符300x1ERS记录分隔符310x1FUS单元分隔符320x20SP空格330x21!感叹号340x22"双引号350x23#井号360x24$美元符号370x25%百分号380x26&和号390x27’单引号400x28(左括号410x29)右括号420x2A*星号430x2B+加号440x2C,逗号450x2D-减号460x2E.句号470x2F/斜杠480x300数字0490x311数字1500x322数字2510x333数字3520x344数字4530x355数字5540x366数字6550x377数字7560x388数字8570x399数字9580x3A:冒号590x3B;分号600x3C<小于号610x3D=等于号620x3E>大于号630x3F?问号640x40@艾特符号650x41A大写字母A660x42B大写字母B670x43C大写字母C680x44D大写字母D690x45E大写字母E700x46F大写字母F710x47G大写字母G720x48H大写字母H730x49I大写字母I740x4AJ大写字母J750x4BK大写字母K760x4CL大写字母L770x4DM大写字母M780x4EN大写字母N790x4FO大写字母O800x50P大写字母P810x51Q大写字母Q820x52R大写字母R830x53S大写字母S840x54T大写字母T850x55U大写字母U860x56V大写字母V870x57W大写字母W880x58X大写字母X890x59Y大写字母Y900x5AZ大写字母Z910x5B[左方括号920x5C|反斜杠930x5D]右方括号940x5E^脱字符950x5F_下划线960x60`反引号970x61a小写字母a980x62b小写字母b990x63c小写字母c1000x64d小写字母d1010x65e小写字母e1020x66f小写字母f1030x67g小写字母g1040x68h小写字母h1050x69i小写字母i1060x6Aj小写字母j1070x6Bk小写字母k1080x6Cl小写字母l1090x6Dm小写字母m1100x6En小写字母n1110x6Fo小写字母o1120x70p小写字母p1130x71q小写字母q1140x72r小写字母r1150x73s小写字母s1160x74t小写字母t1170x75u小写字母u1180x76v小写字母v1190x77w小写字母w1200x78x小写字母x1210x79y小写字母y1220x7Az小写字母z1230x7B{左花括号1240x7C1250x7D}右花括号1260x7E~波浪号1270x7FDEL删除
字符串
字符串是一个或多个的序列,例如:
" i am happy ! "
字符串的定义: 字符串:C语言并没有专门存储字符串的变量类型,字符串都被存储在char类型的数组中,数组由连续的存储单元组成,字符串中的字符都被存储在相邻的存储单元中,每个单元存储一个字符。 问题来了,我们该如果区分字符数组和字符串呢? C语言中字符串一定以’\0’(空字符)结束。这意味着数组的容量必须至少比待存储字符串中的字符数多1. 注: '0’是控制字符,非打印字符,只是做标记,在实际打印时不会被显示的打印。字符数组和字符串的输入输出 1、字符数组的输入输出,用格式符号"%c"逐个输入。 例如:
#include
int main(){
int i;
char ch[5];
printf("请输入字符: \n");
for (i = 0; i < 5; i++)
{
scanf("%c", &ch[i]);//ch[i] 是一个char型变量,用来接收输入的字符,&ch[i]表示ch[i]的地址,即ch[i]的指针。(取地址)
}
printf("您输入的字符是: \n");
for ( i = 0; i < 5; i++)
{
printf("%c", ch[i]);//输出ch数组中的字符
}
printf("\n");
return 0;
}
结果为: 2、字符串的输入输出、将整个字符串一次输入或输出,用"%s"格式符。 例如:
#include
int main(){
char ch[6];//定义一个字符数组,因为要输入'\0',所以长度要比字符串大 1
scanf("%s",ch);//数组名前不加&,表示是地址,而不是指针
printf("%s\n",ch);
return 0;
}
结果为:
什么是以’0’结尾呢? 再举个例子:我们来先定义一个字符串数组
char name[40];
这里我们定义了一个大小为40,类型是char的数组。然后键盘录入一个姓氏,以字符串的形式存储在name中,最后打印。
代码如下:
#include
int main(){
char name[40];
printf("请输入你的名字: ");
scanf("%s", name);//字符串转换说明%s
//数组名前不加&,C语言中数组名代表数组第一个元素的地址
printf("我的名字是 %s!\n", name);
return 0;
}
运行结果: 这里当程序看到%s时,就知道你输入的是一个字符串,同样会自动在结尾加上’0’. 当计算机读取到第一个空字符’0’就知道在此之前是一个完整的字符串,并将其输出。
意气风发,漫卷疏狂 学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中。
如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。 您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力! 愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。 我是意疏 下次见!