㈠ c语言中,用两个scanf,那两个输入值在同一行吗
屏幕上输入的字符,会暂存到缓存。不信,你可以一直按着键盘,不多会,你就会听到系统发出嘟嘟的报警声,说明缓冲区已经满了。
scanf()函数只是从当前缓冲区取一个相应的字符;其中缓冲区的最后一个字符为'\n';
按你说的,可以用循环,接收字符同样可以用getchar()函数。
char
ch;
while(1){
scanf("%c",&ch);
if(ch=='\n')
break;
/*
当输入回车时,结蠢李蚂束扰闭
*/带埋
/*
对ch做相应处理
*/
}
㈡ C语言中,用两个scanf,那两个输入值在同一行吗
用两个scanf,输入的数值可以在同一行,输入时注意两个码肢皮数之间运迟差用空格分开。
验证:
#include<stdio.h>
voidmain(){
inta,b;
scanf("%d",&a);
scanf("%d",&b);
printf("%d%d",a,b);
}
运行示例:
可见,输入的数值也可以不在同一行。
㈢ c语言中两个scanf为什么会出毛病
scanf里面我没听说过能加\n。
但是关于字符的问题,我想是垃圾字符的缘故。以前我遇到过垃圾字符的问题。
我以前写为了记住关于垃圾字符的问题,还写到过blog上。复制来你看看吧~!~!
浅谈C语言中的垃圾字符- -
在C语言中,如果使用字符型变量(就是char型)时在有连续输入的情况下,很容易因为出现垃圾字符而导致程序的流程非法。
看下面,简单的一段代码:
#include "stdio.h"
main()
{
char a,b;
printf("input a:");
scanf("%c",&a); /*或a=getchar();*/
printf("a=%c\n",a);
printf("input b:");
scanf("%c",&b); /*或b=getchar();*/
printf("b=%c\n",b);
}
这段代码确实挺简单的,但是却隐藏着很难发现的问题。当在执行了printf("input a:");这句后要求我们做输入的时候,随便输入一个数,然后按回车,程序继续往下执行。没等渣宽我们做第二次输入的时候程序就已经结束了。把scanf()换成getchar()也一样存在问题。
为什么会有这样的问题呢?那是因为在我们做了第一次输入时,并按下回车,使程序继续执行。而那个回车也随之进入了流当中。而遇到第二个scanf()时,scanf()把回车当作是第二次输入的字符而接收。因此程序也就忽略了输入而继续执行了。这个回车就是在做输入时产生的垃圾字符了。我第一次遇到它时,是我在写循环时遇雀租到的,由于垃圾字符的原因,使得循环提早结束,而破坏了我预期的流程(第一次见垃圾字符时郁闷死我了)。那怎么才能防止垃圾字符的破坏,或是避免它顷梁兆的呢?而我的解决方法只有两种(有其他种的话,一定要告我)。
第一种方法是多定义一个字符变量,如char c;这样。把变量c分别放到输入后面。如:
a=getchar();
c=getchar();
……
b=getchar();
c=getchar();
这样可以使垃圾字符自动进入变量c中,而不破坏我们正确的流程和输入。如果是scanf()的话,可以按照下面的方式来写:scanf(”%c%c”,&a,&c);这样的效果跟使用getchar()是一样的。
这样的方法无疑是浪费了一个内存空间,而且增加了很多的冗余代码。
第二种方法是使用getche()函数,而不使用scanf()和getchar()。这个函数也是接收字符的,但是它不等待回车的输入!而直接把字符送入流中,这样就可以避免垃圾字符的出现了。
这对于高手来说已经是老生常谈了,很多高手对这个问题都感到很郁闷(主要我们没什么经验)。嘿嘿~~~!希望高手不要笑我!而且有什么不对的话,希望高手一定要指出!
㈣ 求教,C语言连续使用两个scanf的问题
#include<stdio.h>
intmain(){
chara[3],b[4];
printf("请输入滑差字符串: ");
scanf("%s",a);
scanf("%s",b);
printf("%s ",a);
printf("数搭%s",b);
}
测试可以通过薯让拿呀。。。
㈤ C语言的,这个程序当中为啥会有两个scanf函数语句,这两个scanf函数语句有啥区别
第一个是在do~while中保证输入的数是大于0的或是等于-1的,否则一直循环要神前纤求输入正确的数。第二个在while循环中,只要输入的数不是-1就一直游仿循环要求输入。从输入数据的本质讲这两个scanf没有什么区别,都是输入一个整数,只悔搏是对输入数据的范围要求不一,写两个是便于代码对输入数据范围的处理。
㈥ C语言。为什么两个scanf只执行了一个
你输入时除了数据还会输入回车,第一个scanf只接收输入缓冲区中的整毁斗型数,回车还留在输入缓冲区中。执行第二个scanf时,将从输入缓冲区镇手中接收回车。执行第三个scanf时同理。解决纤旅磨办法:在第二个和第三个scanf语句前加上fflush(stdin)语句。
㈦ c语言连续连个scanf,两个scanf之间应该输入什么
在碧蔽这里真不好说,其实秉承一个原则,就是scanf录入的时候,最好是中间什么都不要有,就是这种形式:
scanf("%s%s%s",a,b,c);
这样子的基本不会错,再就是你要区别一下scanf和scanf_s,可能两者的一点区宏燃别会导致一些问题,只蔽慧虚能帮你到这里了,加油