scanf⼀次给多个变量赋值
本节课程笔记:
⼀是对多个变量进⾏赋值,⼆是对⾮法输⼊的值做正确处理(处理⽅式了解即可,相关函数知识后期讲解),三是美化scanf代码加⼊输出说明。
1/*
2  Name:scanf⼀次给多个变量赋值
4  Author: Yangbin
scanf返回值被忽略是怎么回事5  Date:2014年2⽉8⽇ 20:57:44
6  Description:本课程笔记,⼀是对多个变量进⾏赋值,⼆是对⾮法输⼊的值做正确处理(处理⽅式了解即可,相关函数知识后期讲解),三是美化scanf代码加⼊输出说明。 7*/
8 # include <stdio.h>
9 # include <stdlib.h>
10int main(void)
11 {
12int i,j;
13
14    printf("请输⼊两个数值,中间以空格分隔(不能包含汉字、符号、字母):");
15    scanf("%d %d", &i, &j); //输⼊i和j的⼀个值
16/*scanf("%d\n", &i);  scanf输⼊时,切记不能使⽤\n;
17⾮输⼊控制符必须原字符输出,如:
18    scanf("%d, %d", &i, &j) 输⼊本句时必须加逗号;
19*/
20
21    printf("i = %d, j = %d\n", i, j); //输出 i,j的值
22
23    system("pause");
24return0;
25 }
26/*
27----------------------
28该代码在Dev-C++ 4.9.9.2下编写
29------输出结果--------
30请输⼊两个数值,中间以空格分隔(不能包含汉字、符号、字母):2 3
31i = 2, j = 3
32--------总结---------
33  使⽤scanf之前最好先使⽤printf提⽰⽤户以什么样的⽅式来输⼊
34  Scanf中尽量不要使⽤⾮输⼊控制符,尤其是不要⽤\n
35  应该编写代码对⽤户的⾮法输⼊做适当的处理【⾮重点】
36  while ((ch=getchar()) != '\n')
37          continue;
38
39*/
以下内容来⾃百度百科:
scanf()函数返回成功赋值的数据项数,读到⽂件末尾出错时则返回EOF。
如:
scanf("%d,%d", &a, &b);
如果a和b都被成功读⼊,那么scanf的返回值就是2
如果只有a被成功读⼊,返回值为1
如果a和b都未被成功读⼊,返回值为0
如果遇到错误或遇到end of file,返回值为EOF。
且返回值为int型.
例:使⽤scanf函数输⼊数据。
#include<stdio.h>
int main()
{
int a,b,c;
printf("输⼊ a, b, c\n");
scanf("%d,%d,%d", &a, &b, &c);
printf("a = %d b = %d c = %d\n", a, b, c);
fflush(stdin);
return0;
}
注意上⾯的scanf("%d,%d,%d",&a,&b,&c);中%d,%d,%d之间有逗号,在输⼊数据时也要加逗号,如果去掉逗号,输⼊时就不⽤逗号,⽽⽤空格,tab键或回车键将各个数据隔开
&a,&b,&c中的&是地址运算符,&a指a在内存中的地址。scanf的作⽤是:按照a,b,c的内存地址将a,b,c的值存进去。变量a,b,c的地址是在编译连续阶段分配的。
这⾥注意:如果scanf中%d是连着写的如“%d%d%d”,在输⼊数据是,数据之间不可以加逗号,只能是
空格或tab键或者回车键——“2 3 4”/“2(按tab)3(按tab)4(按tab)”。若是“%d,%d,%d”,则在输⼊数据时需要加“,”——“2,3,4”.