由于scanf可以读取不同格式的数据,因此成为了C语言中最通用的一个输入函数
让我们看这一段程序:
1 #include <stdio.h>
2 #include <string.h>
3
4
5 int main()
6 {
7 int age;
8 float assets;
9 char pet[30];
10 scanf("%d,%f",&age,&assets);//用scanf()读取基本变量类型的值要使用&
11 scanf("%s",pet); //把字符串读入字符数组中不用&
12 printf("%d $%.2f%s",age,assets,pet);
13 return 0;
14 }
输出为:
38,92360.88
Llama
这并没有问题,但是当使用%c转换说明时,根据%c,scanf()会读取每个字符包括空白
因此scanf("%c")从输入的第一个字符开始读取这在一些情况下会导致一些问题
int main()
{
charc;
while(1)
{
printf("input\n");
scanf("%c\n",&c);
switch(c)
{
case'a':strins();break;
case'b':strcpy1();break;
case'c':strlen1();break;
case'd':strmax();break;
case'e':gs();break;
case'f':sort();break;
case'g':triple();break;
default:printf("error");break;
}
}
}
在这种情况下,scanf()读取的是上一次输入最后敲入的子符,因此会读取换行符;
面对这种情况我们一般在scanf()输入的下一行加入一个getchar()来“吃掉”这个多余的换行符保证程序的正确运行。