scanf函数输入字符问题~~~~急~~~~求助

来源:百度知道 编辑:UC知道 时间:2024/07/04 03:45:07
scanf函数输入字符问题~~~~急~~~~求助
交叉输入数值数据和字符数据
int a1,a2;
char c1,c2;
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
书上说必须用以下形式输入数据,我一直没看明白
10A~~20B(~表示空格)
我一直没看明白为什么在中间加空格,高手帮忙解释下,在线等,谢谢
有一位学姐说“输入的格式就是scanf里面格式字符串的格式”,但还是不明白,希望能再解释的清楚些,谢了

你这样写
scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
是要求你输入一个数,然后一个字符,再一个数,一个字符,必须用那种格式,是让你10和A中间不要加空格,要不然c1读的就是空格了,而要区分两次输入,用空格和回车,tab都行的,也就是10A~~20B中的空格

至于你学姐说的,是说比如用%d%d,两个数之间可以用空格,回车,tab等,但如果你用了("%d,%d"),那么两个数之间必须输入那个逗号才能识别,用"%d我是谁%d",那么两个数中间必须输入“我是谁”才行

scanf采用的是填字符的方法组成字符串
"....."这是一个字符串的形式,中间的%d表示该位置是一个整型数据其值是后面的第一个引用a1,%c表示该位置上是一个字符数据它的值对应后面的第二个引用c1,以此类推,最后将这些东西连起来就是一个字符串了。

你这个不是字符串吧,只是字符。
貌似也不用照书上写的做,直接输入也正确吧

#include <stdio.h>
main()
{
int a1,a2;
char c1,c2;

scanf("%d%c%d%c",&a1,&c1,&a2,&c2);
printf("\n%d%c%d%c",a1,c1,a2,c2);

}

只要输10a20b ,输出都是10a20b

这是scanf语句的特性规定的
如果你这样写的话
scanf(%d,%c,%d,%c",&a1,&c1,&a2,&c2);
则你输入时需要这样输入
10A,20B
中间加空格的作用是
说明你输入的是两个变量

第一个空格起分隔作用
第二个被%c读取了