C语言新手小白详细教程(8)ASCll编码和字符串

2024-09-06 02:12

本文主要是介绍C语言新手小白详细教程(8)ASCll编码和字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述 🌏个人博客主页:意疏-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 <stdio.h>  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设备控制1
180x12DC2设备控制2
190x13DC3设备控制3
200x14DC4设备控制4
210x15NAK否定
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数字0
490x311数字1
500x322数字2
510x333数字3
520x344数字4
530x355数字5
540x366数字6
550x377数字7
560x388数字8
570x399数字9
580x3A:冒号
590x3B;分号
600x3C<小于号
610x3D=等于号
620x3E>大于号
630x3F?问号
640x40@艾特符号
650x41A大写字母A
660x42B大写字母B
670x43C大写字母C
680x44D大写字母D
690x45E大写字母E
700x46F大写字母F
710x47G大写字母G
720x48H大写字母H
730x49I大写字母I
740x4AJ大写字母J
750x4BK大写字母K
760x4CL大写字母L
770x4DM大写字母M
780x4EN大写字母N
790x4FO大写字母O
800x50P大写字母P
810x51Q大写字母Q
820x52R大写字母R
830x53S大写字母S
840x54T大写字母T
850x55U大写字母U
860x56V大写字母V
870x57W大写字母W
880x58X大写字母X
890x59Y大写字母Y
900x5AZ大写字母Z
910x5B[左方括号
920x5C|反斜杠
930x5D]右方括号
940x5E^脱字符
950x5F_下划线
960x60`反引号
970x61a小写字母a
980x62b小写字母b
990x63c小写字母c
1000x64d小写字母d
1010x65e小写字母e
1020x66f小写字母f
1030x67g小写字母g
1040x68h小写字母h
1050x69i小写字母i
1060x6Aj小写字母j
1070x6Bk小写字母k
1080x6Cl小写字母l
1090x6Dm小写字母m
1100x6En小写字母n
1110x6Fo小写字母o
1120x70p小写字母p
1130x71q小写字母q
1140x72r小写字母r
1150x73s小写字母s
1160x74t小写字母t
1170x75u小写字母u
1180x76v小写字母v
1190x77w小写字母w
1200x78x小写字母x
1210x79y小写字母y
1220x7Az小写字母z
1230x7B{左花括号
1240x7C
1250x7D}右花括号
1260x7E~波浪号
1270x7FDEL删除

字符串

字符串是一个或多个的序列,例如:

" i am happy ! "

  1. 字符串的定义:
    字符串:C语言并没有专门存储字符串的变量类型,字符串都被存储在char类型的数组中,数组由连续的存储单元组成,字符串中的字符都被存储在相邻的存储单元中,每个单元存储一个字符。
    问题来了,我们该如果区分字符数组和字符串呢?
    C语言中字符串一定以’\0’(空字符)结束。这意味着数组的容量必须至少比待存储字符串中的字符数多1.
    注:
    '0’是控制字符,非打印字符,只是做标记,在实际打印时不会被显示的打印。
  2. 字符数组和字符串的输入输出
    1、字符数组的输入输出,用格式符号"%c"逐个输入
    例如:
#include <stdio.h>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 <stdio.h>int main(){char ch[6];//定义一个字符数组,因为要输入'\0',所以长度要比字符串大 1scanf("%s",ch);//数组名前不加&,表示是地址,而不是指针printf("%s\n",ch);return 0;
}

结果为:
在这里插入图片描述

什么是以’0’结尾呢?
再举个例子:我们来先定义一个字符串数组

char name[40];

这里我们定义了一个大小为40,类型是char的数组。然后键盘录入一个姓氏,以字符串的形式存储在name中,最后打印。

  • 代码如下:
#include <stdio.h>int main(){char name[40];printf("请输入你的名字: ");scanf("%s", name);//字符串转换说明%s //数组名前不加&,C语言中数组名代表数组第一个元素的地址printf("我的名字是 %s!\n", name);return 0;
}

运行结果:
在这里插入图片描述
这里当程序看到%s时,就知道你输入的是一个字符串,同样会自动在结尾加上’0’.
当计算机读取到第一个空字符’0’就知道在此之前是一个完整的字符串,并将其输出。


在这里插入图片描述

意气风发,漫卷疏狂
学习是成长的阶梯,每一次`的积累都将成为未来的助力。我希望通过持续的学习,不断汲取新知识,来改变自己的命运,并将成长的过程记录在我的博客中

如果我的博客能给您带来启发,如果您喜欢我的博客内容,请不吝点赞、评论和收藏,也欢迎您关注我的博客。
您的支持是我前行的动力。听说点赞会增加自己的运气,希望您每一天都能充满活力!

愿您每一天都快乐,也欢迎您常来我的博客。我叫意疏,希望我们一起成长,共同进步。
logo
我是意疏 下次见!

这篇关于C语言新手小白详细教程(8)ASCll编码和字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140709

相关文章

将Mybatis升级为Mybatis-Plus的详细过程

《将Mybatis升级为Mybatis-Plus的详细过程》本文详细介绍了在若依管理系统(v3.8.8)中将MyBatis升级为MyBatis-Plus的过程,旨在提升开发效率,通过本文,开发者可实现... 目录说明流程增加依赖修改配置文件注释掉MyBATisConfig里面的Bean代码生成使用IDEA生

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

Linux卸载自带jdk并安装新jdk版本的图文教程

《Linux卸载自带jdk并安装新jdk版本的图文教程》在Linux系统中,有时需要卸载预装的OpenJDK并安装特定版本的JDK,例如JDK1.8,所以本文给大家详细介绍了Linux卸载自带jdk并... 目录Ⅰ、卸载自带jdkⅡ、安装新版jdkⅠ、卸载自带jdk1、输入命令查看旧jdkrpm -qa

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3