C语言,scanf 输入字符问题

大家都知道在DOS窗口输入1个字符就要回车一下,这样第二个字符输入的时候就在第二行了,现在需要用scanf在一行输入5个贴在一起的字,怎么办啊!!

屏幕上输入的字符,会暂存到缓存。不信,你可以一直按着键盘,不多会,你就会听到系统发出嘟嘟的报警声,说明缓冲区已经满了。
scanf()函数只是从当前缓冲区取一个相应的字符;其中缓冲区的最后一个字符为'\n';
按你说的,可以用循环,接收字符同样可以用getchar()函数。
char ch;
while(1){
scanf("%c",&ch);
if(ch=='\n') break; /* 当输入回车时,结束 */
/* 对ch做相应处理 */
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-25
关键是用scanf("%s",a)读入整个字串,然后逐个字符检验

#include<stdio.h>
int main()
{
char a[100],*p;
while(1)
{
printf("输入待检测字串:");
scanf("%s",&a);
p = a;
while(*p!='\0')
{
if(*p<'0'||*p>'9')
{
printf("%s不是一个合法数字\n",&a);
break;
}
p++;
}
if(*p=='\0')
{
printf("%s是合法数字串\n",&a);
}
}
return 0;
}
第2个回答  2011-06-24
输入的时候不按回车,等到5个字都输完再按回车就可以了
第3个回答  2011-06-24
for(i=0;i<5;i++)
scanf("%c",&ch[i]);

参考资料:ogin_u

第4个回答  2011-06-24
用循环。~

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
在C语言中,当我们使用scanf函数从用户输入中获取字符时,通常会在输入控制符%c前加上一个空格是有其原因的。这个空格的作用在于,当用户输入字符前有空格时,scanf会识别并跳过这些空格,直接读取第一个非空格字符。例如,如果你写成scanf( "%c" , &c) ,用户输入 "a "(a后面跟着空格),"a" ...

C语言中scanf函数的3种常见问题与应对技巧你都会了吗?
1. 空白符问题 在输入数据时,如果在整数后面输入了一个空格或回车符,程序可能会出错。这是因为scanf函数在读取到空白字符后会跳过这些字符继续读取下一位。解决方法是确保在整数后没有额外的空白符。例如:int a;输入:5(不包含空格或回车)输出:5 避免在整数输入后添加空格或回车,以防止scanf跳过...

c语言输入字符串scanf
c语言输入字符串scanf:有了chara;a就是这个数组的第一个元素的指针,&a就是这个数组的指针;因为一维数组的第一个元素的指针和这个数组的指针是同一个地址,区别是a+1指向a,而&a+1就指向a了。但&a和a的"值"是相同的,只是类型不同。含义 scanf是c语言中的标准库函数,主要作用是接收用户输入...

C语言scanf输入时可以加逗号的吗?
结论是,C语言的scanf函数在输入数据时,确实可以使用逗号来分隔不同的数据类型,但这需要确保输入的格式与scanf的格式控制字符串匹配。例如,当你使用scanf("%d,%d", &a, &b);时,输入的整数必须用逗号分隔,而不能用空格或回车。然而,对于scanf("%d%d", &a, &b);这样的格式,空白字符(空格...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
例如:scanf(" %c" ,&c),你输入了' a'(a前面有个空格),a就能被c接受。但控制符前如果没空格,那c就接受了空格,这个可以防止误操作,忽略空格输入,接受第一个非空格输入。注意事项:对于scanf()而言,%c是个较为特殊的说明符。 %c前没空格,scanf()将读取标准输入流中的第一个字符,%c...

C语言scanf函数输入时键盘缓冲区\\n的问题
第二次回车后,按同样的流程,scanf会根据格式字符串中的第二个%d对buffer按字节顺序读取。最终b得到96.此时buffer中已经无任何数据了。输出 97 96 程序2 include "stdio.h"void main(){ char a;char b;scanf("%c",&a);scanf("%c",&b);printf("%d %d",a,b);} 键盘输入 9<回车>...

C语言字符和字符串的输入与输出
在C语言中,使用scanf函数输入单个字符时,需要注意输入缓冲区问题。缓冲区中可能包含空格、回车等字符,使用%c接收时可能产生错误。解决方法如下:1. 在接收第二个字符前调用getchar()函数清空缓冲区,确保正确接收字符。2. 在%c前加入空格,空格可以吸收回车符、空格。若在循环中多次输入多个字符,建议...

C语言,scanf 输入字符问题
说明缓冲区已经满了。scanf()函数只是从当前缓冲区取一个相应的字符;其中缓冲区的最后一个字符为'\\n';按你说的,可以用循环,接收字符同样可以用getchar()函数。char ch;while(1){ scanf("%c",&ch);if(ch=='\\n') break; \/* 当输入回车时,结束 *\/ \/* 对ch做相应处理 *\/ } ...

如何使用scanf函数输入字符并且输出字符?
在C语言中,可以使用scanf函数从键盘输入字符,并使用printf函数将字符输出到屏幕。以下是一个示例代码:在这个例子中,%c是一个格式控制符,表示要读取一个字符。&ch是一个指针,指向要读取的字符的内存位置。scanf函数将读取键盘输入的数据,并将其存储在ch变量中。然后,使用printf函数将ch变量的值输出...

C语言中用scanf函数输入字符时,为什么要在输入控制符%c前面加空格?用s...
c前面的空格就是用来屏蔽空白符的,首先必须要知道C语言 scanf() 函数的特性,以及scanf()与缓冲区、标准输入流之间的联系。在此之前,先介绍两个专业术语。1.缓冲区 缓冲区是一块存放临时输入数据的内存,我们在键盘上输入数据之所以不会马上显示,就是因为数据存放在了缓冲区,在上面例子中,当我们按...

相似回答