
字符时,连回车也被算作一个字符。 是的!!!!
可用getch()或者getchar()在scanf("%c",&c);之后来接收掉多于的回车
也可用fflush(stdin)在scanf("%c",&c);之后刷新输入缓冲区 从而去掉多于的回车
如:
1:
scanf("%d",&n);
getch();
2:
scanf("%d",&n);
getchar();
3:
scanf("%d",&n);
fflush(stdin); /这种方式也很有用,当还包括其它多余时,可一次性刷新/
4:(建议)
fflush(stdin); /这种方式也很有用,输入之前刷新,保证了输入时,不受上一次输入的影响/
scanf("%d",&n);
char a,b;
char s[1000],t[1000];
scanf("%c%c", &a, &b);//连续读取两个字符
scanf("%s%s", s, t);//连续读取两个字符串,每个字符串以换行(\n)或空格( )或制表符(\t)结束
gets(s);gets(t);//连续读取两个字符串,每个字符串以换行(\n)结束
你的意思是输入多余的字符吧?
1、因为你用scanf输入的字符都是输入到缓冲区中的,例如你定义了一个只接受一个字符的变量ch,但却输入了多余的字符,这种情况会给编译器造成困扰,因为他并不完全智能,通常采用这种方法释放掉缓冲区内多余的字符输入;例如:
2、char ch;
scanf("%c", &ch);//假如你不小心输入了多个字符
//解决方法如下
while (‘\n’ != getchar())
{continue;}//这里的原理一不断的用getchar读取缓冲区内的字符,并将其废弃掉,直到遇到你输入的回车符(当然也可以是别的输入结束符);
#include
main()
struct
int num;
char name[20];
char sex;
int age;
stu[5];
int i;
for(i=0;i<5;i++)
printf("请输入信息\n");
scanf("%d",&stu[i]num);
scanf("%s",&stu[i]name);
scanf("%c",&stu[i]sex); //在%c之前加一个空格
scanf("%d",&stu[i]age);
for(i=0;i<5;i++)
printf( "%s",stu[i]name);
扩展资料:
函数 scanf() 是从标准输入流stdin [1] (标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。
函数的第一个参数是格式字符串,它指定了输入的格式,并按照格式说明符解析输入对应位置的信息并存储于可变参数列表中对应的指针所指位置。每一个指针要求非空,并且与字符串中的格式符一一顺次对应。
参考资料来源:百度百科-scanf
以上就是关于SCANF字符输入全部的内容,包括:SCANF字符输入、C语言里面如何两次用scanf函数获取键盘输入的字符、C语言怎么用scanf输入字符串。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)