scanf一次给多个变量赋值

时间:2023-03-09 03:49:46
scanf一次给多个变量赋值

本节课程笔记:

一是对多个变量进行赋值,二是对非法输入的值做正确处理(处理方式了解即可,相关函数知识后期讲解),三是美化scanf代码加入输出说明。

 /*
Name:scanf一次给多个变量赋值
Copyright:yangbin.org
Author: Yangbin
Date:2014年2月8日 20:57:44
Description:本课程笔记,一是对多个变量进行赋值,二是对非法输入的值做正确处理(处理方式了解即可,相关函数知识后期讲解),三是美化scanf代码加入输出说明。
*/
# include <stdio.h>
# include <stdlib.h>
int main(void)
{
int i,j; printf("请输入两个数值,中间以空格分隔(不能包含汉字、符号、字母):");
scanf("%d %d", &i, &j); //输入i和j的一个值
/*scanf("%d\n", &i); scanf输入时,切记不能使用\n;
非输入控制符必须原字符输出,如:
scanf("%d, %d", &i, &j) 输入本句时必须加 逗号;
*/ printf("i = %d, j = %d\n", i, j); //输出 i,j的值 system("pause");
return ;
}
/*
----------------------
该代码在Dev-C++ 4.9.9.2下编写
------输出结果--------
请输入两个数值,中间以空格分隔(不能包含汉字、符号、字母):2 3
i = 2, j = 3
--------总结---------
   使用scanf之前最好先使用printf提示用户以什么样的方式来输入
  Scanf中尽量不要使用非输入控制符,尤其是不要用\n
  应该编写代码对用户的非法输入做适当的处理【非重点】
  while ((ch=getchar()) != '\n')
   continue; */

以下内容来自百度百科:

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);
return ;
}
注意上面的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”.