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

不怎么重要的前言

上一篇我们介绍了输出的函式printf,大家应该对于列印结果可以自由应用了吧?

接下来我们介绍与之搭配的输入函式scanf吧!


取得使用者输入?

大家学到现在有没有开始想一件事呢,写程式的目的其实是为了解决问题,那么处理资料时除了最后要输出结果,还有一个重要的事情应该是要取得使用者输入,我们才能在程式中弹性的处理资料,来解决某些麻烦吧!

今天我们来介绍一个用来读取使用者输入的函式--「scanf();」!

按照老惯例我们先来看一段程式码:

#include <stdio.h>int main(){    int data;    printf("plz input a number: ");    scanf("%d", &data);    printf("your data is %d.\n", data);    printf("the result of (data + 10) is %d.\n", data+10);    return 0;}

输出结果:
http://img2.58codes.com/2024/20142565N5njA3WHar.png

在我们输入数字5之后:
http://img2.58codes.com/2024/20142565Qnj7591qCH.png


scanf的使用

这次读取使用者输入时,我们一样要结合第六篇的变数、第七篇的格式,然后在变数之前记得加上「&」,情况大概有以下的:

取得单一变数之值
(1) 整数
#include <stdio.h>int main(){    int data;    printf("plz input a int: ");    scanf("%d", &data);        printf("your data: %d\n", data);        return 0;}

http://img2.58codes.com/2024/20142565qGWx2JkM2U.png

(2) 浮点数

#include <stdio.h>int main(){    float data;    printf("plz input a float: ");    scanf("%f", &data);    printf("your data: %f\n", data);    return 0;}

http://img2.58codes.com/2024/201425659Z9xRaQ6Eh.png

(3) 字元

#include <stdio.h>int main(){    char data;    printf("plz input a char: ");    scanf("%c", &data);    printf("your data: %c\n", data);    return 0;}

http://img2.58codes.com/2024/20142565mjXfwqOTMd.png

(4) 字串(之后会提到字串这个特别的资料类型)

#include <stdio.h>int main(){    char data[20];    printf("plz input a str: ");    scanf("%s", &data);    printf("your data: %s\n", data);    return 0;}

http://img2.58codes.com/2024/20142565fqNzD9hQAy.png

取得多个变数之值
(1) 分开读取
#include <stdio.h>int main(){    int data1, data2, data3;    printf("plz input 3 int: ");    scanf("%d", &data1);    scanf("%d", &data2);    scanf("%d", &data3);    printf("your data: %d %d %d\n", data1, data2, data3);    return 0;}

http://img2.58codes.com/2024/20142565wseYCCd0Cz.png

(2) 一次读取

#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;}

http://img2.58codes.com/2024/201425655V4t9AH4OZ.png

(可以看到分开读取跟一起读取看起来没什么差别,是因为scanf的预设分割符号就是空白键,只要遇到空白键scanf就会预设他已经是下一个读取的输入了,所以用enter键跟空白键来分开输入的结果都会是一样的。)

以特定格式取得不同变数
(1) 空白键(等同楼上的2-(2),因为预设就是空白键分割)
#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;}

http://img2.58codes.com/2024/20142565cZwITP8L8M.png

(2) 特殊符号分割

#include <stdio.h>int main(){    int data1, data2, data3;    printf("plz input a Year-Month-Day: ");    scanf("%d-%d-%d", &data1, &data2, &data3);    printf("your data: %d %d %d\n", data1, data2, data3);    return 0;}

http://img2.58codes.com/2024/20142565KFxrpzhfuq.png


看到这里就介绍完scanf的大致语法了,也同时放了很多範例code可以让大家测试看看,不过printf与scanf的用法上,因为它们的语法过于类似了,想必大家会有一点小混乱吧?

所以下一篇我们来分析一下printf与scanf的差别,再来帮scanf做个小结吧,然后有个小作业可以做做看喔!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章