携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情
scanf()的工作原理
用于读取不同格式的数据。一般键盘输入的文本的字符是:字母,数字和标点符号。如果要输入2003,就要输入字符2,0,0,3。如果将其存储为数值而不是字符串,程序就必须把字符依次转化为数值。 scanf()把输入的字符串转换成整数,浮点数,字符或字符串。这就是scanf()要做的。
scanf()和printf()类似,也使用格式字符串和参数列表。scanf()中的格式字符串表明字符输入流的目标数据类型。两个函数主要的区别在参数列表中。printf()函数使用变量,常量和表达式,而scanf()函数使用指向变量的指针。需要记住两点规则:
- 如果scanf()读取基本变量类型的值,在变量名前加一个&。
- 如果scanf()把字符串读入字符数组中,不要使用&。
举一个简单例子演示这两条规则使用
#include <stdio.h>
int main(){
int age; //变量
float assets; //变量
char pet[30];
printf("Enter your age,assets,and favorite pet.\n");
scanf("%d %f",&age,&assets); //要使用&
scanf("%s",pet); //字符数组不使用&
printf("%d $%.2f %s\n",age,assets,pet);
return 0;
}
运行结果
scanf()函数使用空白(换行符,制表符和空格)把输入分成多个字段。在依次把转换说明和字段匹配时跳过空白。注意,上面示例的输入项(粗体部分是用户的输入)分成了两行。只要在每个输入项之间输入至少一个换行符,空格或制表符即可,也可以在一行输入。
scanf()的转换说明
| 转换说明 | 含义 |
|---|---|
| %c | 把输入解释成字符 |
| %d | 把输入解释成有符号十进制整数 |
| %e %f %g %a | 把输入解释成浮点数 |
| %i | 把输入解释成有符号十进制整数 |
| %o | 把输入解释成有符号八进制整数 |
| %p | 把输入解释成指针 |
| %s | 把输入解释成字符串,从第一个字符开始,到下一个空白字符之前的所有字符都是输入 |
| %u | 把输入解释成无符号十进制整数 |
| %x | 把输入解释成有符号十六进制整数 |