scanf()函数

加入嵌入式技术QQ群:398294860,免费获取嵌入式技术文档,嵌入式最新学习路线指南,更多嵌入式教程,访问宅学部落淘宝店:https://wanglitao.taobao.com/

光有程序的输出还不行,有时候我们还需要用户的输入,去重新设置或初始化一些变量的值。C标准库提供了scanf函数来处理用户的输入操作,scanf函数可以让用户按指定的格式从键盘上把数据输入到指定的变量之中。scanf函数的使用方法如下:

scanf("格式匹配符", &变量);

scanf函数与printf的不同之处在于:变量的前面要加一个取地址符号&,因为我们要修改变量的值,所以要把这个变量的地址告诉scanf函数,scanf函数就会根据你键盘输入的值,保存到变量的这个地址上。

接下来我们定义一个变量,并通过scanf函数来初始化它:

#include <stdio.h>
int main(void)
{
    int sum;
    printf("input sum value:");
    scanf("%d", &sum);
    printf("sum = %d\n", sum);
    return 0;
}

编译程序并运行,根据提示,输入一个值

# ./a.out 
input sum value:10
sum = 10

我们也可以一下子输入多个变量的值,修改多个变量。对应的scanf函数的用法如下:

scanf("%d %d", &变量1,&变量1);
scanf("%d,%d", &变量1,&变量1);

这里需要注意的是,当我们输入数据时,一定要跟scanf函数中格式匹配符的形式保持一致:如果匹配格式字符串中的2个%d用空格隔开,你在输入两个变量的值时也要用空格隔开;如果2个%d用逗号隔开,你在输入两个变量的值时也要用逗号隔开,否则就会出错。

接下来我们再编写一个程序,输入两个加数a和b,求它们的和,并打印出来。

#include <stdio.h>
int main(void)
{
    int sum;
    int a, b;
    printf("input a b:");
    scanf("%d %d", &a, &b);
    sum = a + b;
    printf("sum = %d\n", sum);
    return 0;
}

编译程序并运行:

# gcc main.c 
# ./a.out 
input a b:3 4
sum = 7
# ./a.out 
input a b:3,4
sum = -1255075725

在上面的程序中,我们输入的两个变量之间用空格隔开,正确可以正常运行。如果你在输入变量时,用逗号隔开,程序运行就发生了错误。当然,你可以在源程序中修改一下:

#include <stdio.h>
int main(void)
{
    int sum;
    int a, b;
    printf("input a,b:");
    scanf("%d,%d", &a, &b);
    sum = a + b;
    printf("sum = %d\n", sum);
    return 0;
}

编译程序并运行:

# gcc main.c 
# ./a.out  
input a b:3,4
sum = 7

scanf函数的格式字符串中,两个匹配格式符用逗号隔开,我们在输入数据时,跟它的格式保持一致,两个数据之间也用逗号隔开,程序就运行正常了。

专门为嵌入式设计的C语言进阶视频教程:《C语言嵌入式Linux高级编程》,一共9期,涉及计算机体系结构、ARM汇编与反汇编、程序的编译链接原理、堆栈内存、Linux内核的面向对象编程思想、多任务编程、C语言的模块化编程等专题,具体课程详情可点击淘宝:C语言嵌入式Linux高级编程