一、scanf函数的返回值
scanf函数是C和C++中常用的输入函数,它可以快速读取控制台或文件中的数据。在使用scanf函数时,有一个非常重要的概念——返回值。scanf函数的返回值是成功匹配并赋值的输入项的个数。因此,如果输入的数据类型与格式化字符串不匹配,scanf函数将会失败。
#include <cstdio> int main(){ int a,b; printf("请输入两个整数:\n"); int num = scanf("%d%d",&a,&b); printf("成功匹配并赋值的输入项个数:%d\n",num); return 0; }
例如,在上面的代码中,如果我们输入了"3.14 abc",那么scanf函数将会失败,并输出0。
二、scanf函数的格式化字符串
scanf函数的格式化字符串决定了需要输入的数据的类型和格式。下面介绍一些常用的格式化字符串:
- %d 整数
- %f 浮点数
- %c 字符
- %s 字符串
- %x 十六进制整数
在使用格式化字符串时,可以通过限定符指定变量的长度和类型。例如,%5d表示输入长度不超过5的整数。
#include <cstdio> int main(){ int a; printf("请输入一个长度不超过5的整数:\n"); scanf("%5d",&a); printf("你输入的整数是:%d",a); return 0; }
在上述代码中,%5d指示scanf函数读取长度不超过5的整数。如果我们输入了"123456",那么scanf函数只会读取前5个字符。
三、scanf函数的其他用法
scanf函数还可以进行常规的输入操作。例如,使用scanf("%c",&x)来读取一个字符,使用scanf("%s",&str)来读取一个字符串(不包含空格和换行符)。
除此之外,scanf函数还可以使用*号来跳过输入或赋值。例如,使用scanf("%*d",&a)可以读取一个整数,但是不将其赋值给变量a。
#include <cstdio> int main(){ char c; printf("请输入一个任意字符:\n"); scanf("%c",&c); printf("你输入的字符是:%c\n",c); scanf("%*d");//跳过一个整数输入 char str[20]; printf("请输入一个字符串:\n"); scanf("%s",str); printf("你输入的字符串是:%s",str); return 0; }
在上述代码中,我们使用scanf函数读取了一个字符和一个字符串,并跳过了一个整数的输入。