【深入浅出程序设计竞赛】:scanf( )

250 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 23 天,点击查看活动详情

scanf

简介:

scanf() 函数也是一个在 stdio.h 中声明的一个函数。调用 scanf() 函数时,需要传入变量的地址作为参数,此时 scanf() 函数会等待标准输入设备(比如键盘)输入数据,并且将输入的数据赋值给地址对应的变量。

下面回忆一下占位符:

  • %d:以带符号的十进制形式输出整数(但正数不输出正号+)
  • %o:以不带符号的八进制形式输出整数
  • %x:以不带符号的十六进制形式输出整数
  • %u:以不带符号的十进制形式输出整数
  • %c:输出一个字符
  • %s:输出一个或多个字符
  • %s:输出一个或多个字符(即字符串)
  • %f:以小数形式输出单、双精度数,默认输出6位小数
  • %e:以标准指数形式输出单精度、双精度数,数字部分小数位数为 6 位
  • %lu:32位无符号整数
  • %llu:64位无符号整数

以下是 scanf() 函数的使用例子。

比如:

#include<stdio.h>
int main(void) 
{ 
    int a, b, c; 
    printf("请输入三个数字:");
    scanf("%d%d%d", &a, &b, &c); 
    printf("%d,%d,%d\n",a,b,c);
    return 0; 
}

运行结果为:

请输入三个数字:2 4 8
2,4,8

上述输入语句(scanf())被调用时,程序会等待用户输入数据,最后会按照格式字符串"%d%d%d" 的形式将输入的数据存储到对应的三个变量中(我们利用 & 分别获得三个变量的内存地址)。

注意,这里在输入的时候,每个数据之间的分隔符是一个或多个空格,tab键或者回车符。

如果我们想使用逗号 , 来分隔输入的数据,那么相应的输入语句应该这么写:scanf("%d,%d,%d", &a, &b, &c);。当然,输入格式的分隔符是任意的,我们还可以使用星号*,井号#等。

在用 %c 输入时,空格"转义字符" 均作为有效字符。

比如:

#include<stdio.h>
int main(void)
{
    char a, b, c;
    printf("请输入三个字符:");
    scanf("%c%c%c",&a,&b,&c); 
    printf("%c,%c,%c\n", a,b,c);
    return 0;
}

运行第一次:

请输入三个字符:abc
a,b,c

运行第二次:

请输入三个字符:a b c
a, ,b

下面是使用 %s 来接收字符串的例子:

#include <stdio.h>
 
int main()
{
   char str[20];
   printf("请输入你的学号:");
   scanf("%s", str);
   printf("学号:%s\n", str);
   return(0);
}

运行结果如下:

请输入你的学号:01220583
学号:01220583