首页 > 其他分享 >复习课9 转义字符

复习课9 转义字符

时间:2023-09-22 23:35:04浏览次数:37  
标签:main return 复习 void 转义字符 printf include

一.导入

如果我们想要调用printf()函数打印以下内容:

c:\ncre\test

那我们该如何编写代码呢?以下是我们以常理思维编写的代码:

#include<stdio.h>
int main(void){
printf("c:\ncre\test");
    return 0;
}

但是当我们运行以后会发现程序输出的结果出乎我们意料,如图所示:

复习课9 转义字符_printf

程序输出的结果之所以不尽人意是因为转义字符起了作用,什么是转义字符?我们可以从字面理解这个词的意思就是:转换字符的意思

如果我们想要让这段字符串正常的输出代码就应该修改成如下形式:

#include<stdio.h>
int main(void){
printf("c:\\ncre\\test");
    return 0;
}

我们只需要在字符 n 与 t 前再加上一个 \ 就可以获得我们想要的结果,其实这就是转义字符的作用

我们再来看一段代码:

#include<stdio.h>
int main(void){
    printf("abcn");
    return 0;
}

这段代码显然会输出字符串 abcn ,但是当我们将 n 的前面加一个 \ 号这样子这段代码的意思就改变了,代码如下:

#include<stdio.h>
int main(void){
    printf("abc\n");
    return 0;
}

这时候程序只会输出字符串 abc 但是光标会自动换行到下一行,我们可以通过观察下面两个图来进行区别:

复习课9 转义字符_复习_02

复习课9 转义字符_复习_03

所以这里的 \n 就是一个转义字符,其作用是换行,我们接下来再来举一些例子来更好的了解转义字符

二.转义字符详解

示例1:

没有转义字符:

#include<stdio.h>
int main(void){
    printf("abc0efg");
    return 0;
}

带有转义字符:

#include<stdio.h>
int main(void){
    printf("abc\0efg");
    return 0;
}

我们来看一下这两个代码运行的区别

没有转义字符:

复习课9 转义字符_printf_04

带有转义字符:

复习课9 转义字符_C语言_05

我们可以看到当我们在字符串中插入 \0 这个转义字符的时候后面的字符串就没有被输出,我们之前讲过 \0 是字符串结束标识,所以当printf()函数读取到 \0 的时候便会停止读取后面的内容

以下是一些常用的转义字符以及其作用:

\?   表示?(在老版编译器中也可以有效避免识别成三字母词)

\'    表示字符常量

\"    表示字符串内的双引号

\\    表示一个反斜杠 \

\n    表示换行符

\a    发出警告音效(取决于硬件与系统)

\t     表示水平制表符

\v     表示垂直制表符

\b     表示退格符

这里大概介绍一下三字母词的意思,在老版本的编译器中 ??) 与 ??( 可能会变成 ] 与 [  

??) ----> ]
??( ----> [

例如我们写一段代码:

#include<stdio.h>
int main(void){
    printf("%s\n","(are you ok??)");
    return 0;
}

程序本应输出 (are you ok??) ,但是在老版本的编译上可能会输出 (are you ok] ,所以我们使用转义字符 \? 就可以有效的避免这种现象的发生

我们知道 %c 是用来打印字符的,比如我们需要打印字符 A 那么我们可以将代码写成如下形式:

#include<stdio.h>
int main(void){
    printf("%c",'A');
    return 0;
}

程序运行结果如图所示:

复习课9 转义字符_printf_06

但是如果我们使用相同的方式来打印 ' (单引号)的时候就会发现程序无法正常的编译,如图所示:

复习课9 转义字符_字符串_07

原因是 ' 号需要两两配对程序中出现了三个 ' 号代表着有一个 ' 是无法配对的所以程序会出现问题,解决方法也是与上面类似,我们只需要让那个想要打印的 ' 号变成转义字符就可以了,所以我们可以将代码修改成如下形式:

#include<stdio.h>
int main(void){
    printf("%c",'\'');
    return 0;
}

我们修改完代码后重新编译并运行程序就可以发现 ' 号能被正常的打印出来了

接下来我们来看一下换行符 \n 的用法,顾名思义换行符作用就是换行,我们接下来用一段简单的代码来展示换行符的作用,代码如下:

#include<stdio.h>
int main(void){
   printf("hello!");
   printf("what's your name?");
    return 0;
}

当我们运行上述代码的时候会发现这两句话连在一起了,有点不美观,如图所示:

复习课9 转义字符_字符串_08

如果我们想让他们分行显示就需要用到换行符 \n 我们只需要在 hello!的末尾加上 \n 即可,代码如下:

#include<stdio.h>
int main(void){
   printf("hello!\n");
   printf("what's your name?");
    return 0;
}

我们再次运行程序就可以发现这两段句话被分开了:

复习课9 转义字符_printf_09

这就是 \n 换行符的作用

                                                                                             2023/9/22 

                                                                                               王起舟

标签:main,return,复习,void,转义字符,printf,include
From: https://blog.51cto.com/u_16183773/7572995

相关文章

  • SQL转义字符和通配符
    1.使用  ESCAPE  关键字,定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串  5%  的字符串,请使用:    WHERE  ColumnA  LIKE  '%5/%%'  ESCAPE  '/' 2.ESCAPE  'escape_character'  ......
  • 机器学习初学与复习最佳教材—机器学习实战
    https://book.douban.com/subject/35218199/半年多几乎没碰机器学习,都快忘光了,虽然可能以后不做这方面研究,但作为实用小工具或者说基本技能来说还是很不错的!这本书的课后习题还可以用来复习概念。所以就有空整理一下里面的概念啦。《机器学习实战:基于Scikit-Learn、Keras和Tenso......
  • 推免复习(一):数据库复习提纲
    目录数据库基础概念数据、数据的定义、特性和分类数据模型、模式和实例数据库、数据库系统、数据库管理系统(DBMS)数据库的发展历程(层次模型、网状模型、关系模型、面向对象模型等)关系数据库关系数据模型的基本概念(关系、元组、属性、域)关系代数和关系演算数据完整......
  • 复习课8 字符串
    一.字符串的定义"helloworld"由双引号引起来的一串字符称为字符串字面值,简称字符串下面我们来介绍一下字符串的输出方式,示例代码如下:#include<stdio.h>intmain(void){charstr[]="helloworld";printf("%s",str);return0;}我们这里创建了一个字符类型的数组名为str,我们......
  • cka认证考题复习
    1、新建命名空间,在该命名空间中创建一个pod•命名空间名称:cka•pod名称:pod-01•镜像:nginx命令行配置:kubectlcreatenamespaceckakubectlrunpod-01--image=nginx--namespace=ckayaml配置:apiVersion:v1kind:Podmetadata:name:pod-01namespace:ckaspec:......
  • 复习课7 常量
    一.导入我们之前就说过生活中是有很多变化与不变的量的,我们将变化的量称为变量,将不变的量称为常量常量在生活中也有很多,如:血型、性别(不考虑特殊情况)、身份证号,那么在C语言中有哪些常量呢?二.C语言中常量的分类字面常量const修饰的常变量#define定义的标识符常量枚举常量接下来我将为......
  • 软件工程 之 (XMUT)Java期末复习题及答案2
    {calloutcolor="#f0ad4e"}软件工程实用案例教程https://www.ivanky.cn/XMUTRG/304.htmlJava期末复习题及答案https://www.ivanky.cn/XMUTRG/361.html计算机网络复习题库https://www.ivanky.cn/XMUTRG/405.html(XMUT)Java期末复习题及答案选择题{collapse}{collapse-i......
  • 软件工程 之 (XMUT)计算机网络复习题库
    {calloutcolor="#f0ad4e"}软件工程实用案例教程https://www.ivanky.cn/XMUTRG/304.htmlJava期末复习题及答案https://www.ivanky.cn/XMUTRG/361.html计算机网络复习题库https://www.ivanky.cn/XMUTRG/405.html计算机网络复习题库考试酷--自测习题{collapse}{/......
  • python复习
    一python简介#主流语言的区别c:c代码写完,编译(不同平台),跨平台运行,linux上源码安装软件,自行编译java:一处编码,处处运行,java是编译型还是解释型?编译型,编译过程---把java源代码编译成字节码文件.class---不能直接运行在操作系统上---》jvm(java虚拟机),jvm运行至少要300M内存jdk......
  • 2023年了,复习了一下spring boot配置使用mongodb
    前言MongoDB是一个基于分布式文件存储的开源数据库系统,使用C++语言编写。它是一个介于关系数据库和非关系数据库之间的产品,具有类似关系数据库的功能,但又有一些非关系数据库的特点。MongoDB的数据模型比较松散,采用类似json的bson格式,可以灵活地存储各种类型的数据MongoDB的优......