怎么利用for循环给char类型的字符数组赋值,而不被回车键影响呢
例:void main()
{
char a;
int i;
for(i=0;i<10,i++)
{
printf("请输入字符:");
scanf("%c",&a);
}
}
运行程序后,输入一个字符之后,却无法继续循环输入下一个,回车后却跳过了第二个,第四个,第六个。。。
请问如何解决。 在 scanf() 的后面添加 fflush(stdin),清除键盘缓冲区#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char a ;
int i ;
for(i = 0 ; i < 10 ; i ++) {
printf("请输入字符:") ;
scanf("%c", & a) ;
fflush(stdin) ; // 清空键盘缓冲区
}
a = '\0' ;
printf("%s\n" , a) ;
}
jackz007 发表于 2019-7-5 15:16
在 scanf() 的后面添加 fflush(stdin),清除键盘缓冲区
还是那样,回车还是被读取了,我用的是Ubuntu。 我的代码运行实况如下:
C:\Bin>x
请输入字符:A
请输入字符:B
请输入字符:C
请输入字符:D
请输入字符:E
请输入字符:F
请输入字符:G
请输入字符:H
请输入字符:I
请输入字符:J
ABCDEFGHIJ
C:\Bin>
我使用 gcc 编译,和你的编译器完全一样,只是操作系统不一样。
你完全使用我贴出的代码编译运行试试呢。 jackz007 发表于 2019-7-5 15:50
我的代码运行实况如下:
就是直接复制你的代码,可是还是不行呀{:10_266:} 用getchar();就可以过滤掉回车了,这是我改的#include<stdio.h>
int main()
{
char a;
int i;
for(i=0;i<10;i++)
{
printf("请输入字符:");
getchar();
scanf("%c",&a);
}
return 0;
}
页:
[1]