【从零开始的 C 语言笔记】第七篇-格式指定字 & 特殊字元

不怎麽重要的前言

上一篇我们介绍了什麽是变数,也结合了资料型态来让大家了解,接下来大家有没有想过,如果遇到需要让使用者输入资料来处理,并输出对应结果时要怎麽办呢?

接下来我们来结合变数,储存输入并输出资料内容吧!


需要输出变数、或用变数储存输入时怎麽办?

在前面我们有提到过资料是有不同形态(字元、整数、浮点数等等的)的,而我们会用不同资料型态的变数来储存这个资料,但如果今天我们要把变数输出或读取输入储存到变数里时,要怎麽做处理才能让电脑知道这个被输入或输出的资料,要以什麽样的格式输出、要以什麽样的型态储存?

这时候我们就会用到c语言中的一个语法--格式指定字,格式指定字听起来好像很复杂,但其实就是代替变数本身来表示整体输入输出格式的存在。

在c语言中我们第一个接触到的输出code就是「printf("Hello World!\n");」,其中「""」包含的东西我们会称他为字串,但是当我们需要输出的字串包含变数时,这时我们就会使用格式指定字,如以下:

#include <stdio.h>

int main(){
    int a = 3;
    printf("your data: %d\n", a);

    return 0;
}

输出字串中的「%d」就是代替变数a的格式指令字,你可以把它当成变数在字串中的替代词,接下来我们将会介绍格式指令字有哪些。


格式指令字

我们先来复习一下前面第五篇的基本资料型态表吧:

类别 所占记忆体(bytes) 存什麽样的资料 格式指定字
char 1 字元,举凡a~z/0~9/单一符号(+-/*%$#@等) %c
int 4 整数,数字范围从-2147483648~2147483647 %d
float 4 单精确度浮点数,即小数 %f
double 8 双精确度浮点数,即小数 %f

我们可以从上面的表先简略的知道,基本的资料型态大概可以用这些格式指定字来表示,若只是读取使用者输入时用以上的格式指定字基本上就够了,但其实还有更多的格式指定字,且有时候若要输出资料内容时有其他指定格式,这些便不足以应付了。

所以以下我们会详细整理格式指令字:

  1. 整数
指令字 说明
%d.%i 十进制有号整数
%u 十进制无号整数
%o 八进制有号整数
%x.%X 十六进制有号整数
%ld 十进制long int
%lld 十进制long long int

(备注:有号(signed)、无号(unsigned),可以参考第五篇,不过无号相对较少使用)

  1. 浮点数
指令字 说明
%f 以小数形式输出浮点数(Ex. 输出12.345时为「12.345000」)
%e 以科学记号形式输出浮点数(Ex. 输出12.345时为「1.234500e+001」)
%E 以科学记号形式输出浮点数(Ex. 输出12.345时为「1.234500E+001」)
%g 依情况使用%f或%e(Ex. 输出0.345时为「0.345」、输出0.0000345时为「3.45e-005」)

(虽然一般来说不会使用,但%g的输出判断可以参考这个连结)

  1. 字元、字串
指令字 说明
%c 字元(是单一的字元)
%s.%S 字串(是多个字元)
  1. 其他
指令字 说明
%p 输出指标
%% 用於输出时输出「%」
%* 是忽略符号,应用如%*d、%*c、%*s,会让程序忽略、丢弃这个资料
%数字 是设定资料宽度的用法,多用於输出,应用如%10d.%15s
%-数字 是设定置左的用法,同时也设定资料宽度,多用於输出,应用如%-10d.%-15s
%[] 用於输出时只读取「[]」内的字元,遇到非其内字元会停止读取,应用如%[aAbB]s、%[a-z]s
%[^] 用於输出时只读取「[]」之外的字元,遇到为其内字元时会停止读取,应用如%[^aAbB]s、%[^a-z]s

到这里就大致介绍完格式指令词了,如果有兴趣可以参考以下:
microsoft docs


格式特殊字元

看完上面的格式指令字应该大概知道一些语法了,接下来有些特殊字元也跟输出格式十分相关:

特殊字元 说明
\n new line的意思,即换行之符号
\0 字串结束符,输出字串时遇到这个特殊字元就会结束输出
\t tab,跳格
\r 回到该行字首,输出时会覆盖先前输出(Ex. 输出12345\raaaa时为「aaaa5」)
\b backspace,倒退一格输出时可能覆盖先前输出(Ex. 输出12345\baaaa时为「1234aaaa」、输出12345\b时为「12345」)
\a bell,会发出系统声
\
\' 输出「'」
\" 输出「"」

看到这里我们就大致看完影响字串格式的语法有哪些了,碍於每一种都要示范输出有点麻烦,大家可以多多尝试上面介绍到的语法!

下一篇我们会正式进入列印输出的printf!


<<:  【从零开始的 C 语言笔记】第六篇-变数

>>:  【从零开始的 C 语言笔记】第八篇-printf 介绍与应用

19. PHPer x New Features

...为什麽 PHP 的变数宣告要使用 $ 符号?...PHP 在变数前使用 $ 的用意是提醒开发...

[第十八天]从0开始的UnityAR手机游戏开发-介绍Animation

Unity有内建的动画系统,简单的小动画可以使用Animation完成 本次章节会先用Cube做出简...

Day05 永丰金API 基础流程 -- Sign

衔接上一篇,接着我们要计算Sign,以下为计算图 5.4.4. 安全签章计算(Sigh) 在产出安全...

C#入门之特殊字符

在前面的一些示例中,我们见过 $,@ 等等,这样的符号,但没有详细地说明这些符号的用途,今天我们就来...

[day18]Vue实作-会员中心主页

会员中心主页 预期於会员中心主页可以有订单纪录及基本资料设定几个功能,先按照实作制作,这部分都是直接...