不怎么重要的前言
上一篇我们介绍了scanf的用法,虽然可能会有点小混乱,但应该不至于太难理解?
接下来我们来釐清一下观念、帮scanf做个小结,最后有个小作业可以试试看喔!
scanf & printf的差异
看看下面的程式码,关于printf的部分我们就不重複再提,可以参考看看第八篇的内容,比较不一样的就是当中出现了「scanf();」函式来读取输入,而在读取输入前我放了一行提示输入字串,方便提醒此时应该要输入数字。
printf("plz input a number: ");scanf("%d", &data);
可以看到scanf的语法跟printf在表面上看是有些类似的,差别在于scanf时变数前须加上「&」,因为scanf用来取得使用者的输入后,再存入变数所在的地址,这就是为什么要在后面的变数前加上「&」,而加上「&」的行为我们称为「取址」,顾名思义是用来取得该资料的存放地址。
所以意义上差别有点像下图这样:
scanf小结
虽然跟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;}
#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;}
(备注:若要限制读取符号,让其自动分割可以参考第七篇格式指令字的第4点)
#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;}
来实际运用看看吧!
彻底介绍完scanf跟printf,不知道大家吸收了多少呢,所以我们来尝试做个可以输入两个int,然后自动加总输入并输出结果的程式吧!
结果要长得像以下这样,大家来试试看吧: