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

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

MiniGPT-3D, 首个高效的3D点云大语言模型,仅需一张RTX3090显卡,训练一天时间,已开源

项目主页:https://tangyuan96.github.io/minigpt_3d_project_page/ 代码:https://github.com/TangYuan96/MiniGPT-3D 论文:https://arxiv.org/pdf/2405.01413 MiniGPT-3D在多个任务上取得了SoTA,被ACM MM2024接收,只拥有47.8M的可训练参数,在一张RTX

如何确定 Go 语言中 HTTP 连接池的最佳参数?

确定 Go 语言中 HTTP 连接池的最佳参数可以通过以下几种方式: 一、分析应用场景和需求 并发请求量: 确定应用程序在特定时间段内可能同时发起的 HTTP 请求数量。如果并发请求量很高,需要设置较大的连接池参数以满足需求。例如,对于一个高并发的 Web 服务,可能同时有数百个请求在处理,此时需要较大的连接池大小。可以通过压力测试工具模拟高并发场景,观察系统在不同并发请求下的性能表现,从而