【从零开始的 C 语言笔记】第十篇-scanf 介绍 & 结合printf的应用 (2)

不怎麽重要的前言

上一篇我们介绍了scanf的用法,虽然可能会有点小混乱,但应该不至於太难理解?

接下来我们来厘清一下观念、帮scanf做个小结,最後有个小作业可以试试看喔!


scanf & printf的差异

看看下面的程序码,关於printf的部分我们就不重复再提,可以参考看看第八篇的内容,比较不一样的就是当中出现了「scanf();」函式来读取输入,而在读取输入前我放了一行提示输入字串,方便提醒此时应该要输入数字。

printf("plz input a number: ");
scanf("%d", &data);

可以看到scanf的语法跟printf在表面上看是有些类似的,差别在於scanf时变数前须加上「&」,因为scanf用来取得使用者的输入後,再存入变数所在的地址,这就是为什麽要在後面的变数前加上「&」,而加上「&」的行为我们称为「取址」,顾名思义是用来取得该资料的存放地址。

所以意义上差别有点像下图这样:

https://ithelp.ithome.com.tw/upload/images/20211027/20142565iljCTVE5gd.png


scanf小结

  1. 虽然跟printf语法有点像,但scanf後方补上的是变数地址(即「&变数名称」的写法),并可跟printf一样一次使用多的变数(可以不同资料型态),只要以「,」隔开。
#include <stdio.h>

int main(){
    int data1;
    char data2;
    float data3;
    printf("plz input int.char.float: ");
    scanf("%d %c %f", &data1, &data2, &data3);

    printf("your data: %d %c %f\n", data1, data2, data3);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565XQv3WOmMhw.png

  1. scanf的预设分割符就是空白键与enter键,所以当有多个输入时可以用空白键分开并一次输入内容。
#include <stdio.h>

int main(){
    int data1, data2, data3;
    printf("plz input 3 int: ");
    scanf("%d%d%d", &data1, &data2, &data3);

    printf("your data: %d %d %d\n", data1, data2, data3);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/20142565v7aseo44dD.png
(备注:若要限制读取符号,让其自动分割可以参考第七篇格式指令字的第4点)

  1. 可以在输入时指定为特殊符号分割的格式
#include <stdio.h>

int main(){
    int data1, data2, data3;
    printf("plz input 3 int: ");
    scanf("%d.%d.%d", &data1, &data2, &data3);

    printf("your data: %d %d %d\n", data1, data2, data3);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211027/201425655XVwGD7IiB.png


来实际运用看看吧!

彻底介绍完scanf跟printf,不知道大家吸收了多少呢,所以我们来尝试做个可以输入两个int,然後自动加总输入并输出结果的程序吧!

结果要长得像以下这样,大家来试试看吧:
https://ithelp.ithome.com.tw/upload/images/20211027/20142565fzgvu0sgsr.png


不晓得现在大家有没有比较了解输入输出的方法了呢,记得还是要多多尝试才能更加熟悉喔!

下一篇我们来谈谈指标是什麽吧!


<<:  Vue3 ( JsES6、this、指令、OptionAPI ) -1

>>:  企业资料通讯Week5 (3) | 其它的 Mail Protocols | POP3, IMAP, Web Mail

【Vue】image 显示预设图 | @load

@load 用在图片标签时 image src 有值的时候,才会开始加载 onload 事件是在 s...

Flutter基础介绍与实作-Day12 Nice to Meet you Widgets-范例实作

前面讲了那麽多关於Basic Widget今天我们就用其中一个来写个小范例吧! 我们用BottomN...

瀑布(Waterfall)& 敏捷(Agile)

-图片来源:gunther.verheyen 业务人员更了解监管要求和市场,因此IT和安全功能都应...

【第二天 - Git 泄漏】

Q1. Git 是什麽? Git 是一个分散式版本控管软件,每个开发者手中都会有完整的一份副本,包含...

Day 29 | Unity 游戏开发 - 专案管理工具

在上一篇文章中完成Unity游戏开发的最後一环,今天我们要来谈谈专案过程中所用到的工具 目录 专案发...