只要用 backspace 后退键清除,重新输入就可以 ,在后退的时候屏幕上的字符是连续的
但是 如果用
i = 0;
flag = 0 ;
while(1)
{
ch = getche();
if(ch == KEY_ESC )
{
printf("\nExit!\n");
goto Exit ;
}
else if((ch == '=')||(ch == ENTER)) /*Ìá½»´ð°¸*/
{
Expression[i++] = '\0';
if(strcmp(stdandardStr, Expression) == 0)
printf("\nMatch!\n"); flag = 1 ;
break ;
}
else
{
Expression[i++] = ch;
}
} /*end while*/
上面的方式的话
虽然也可以用 backspace 后退键清除,但是在这个后退的地方会留下一个小空格
不知道这个空格怎么清除!!!
怎么解决这个问题呢 ??
想和大家讨论下!!
----------------解决方案--------------------------------------------------------
getchar(); 好象也要等到按下回车才把流中字符送走
可以利用 ungetc ()把 最后的一个字符送回去
然后用 scanf 结束怎么样??
但是不知道 getchar(); 取的是第一个字符还是最后的一个字符 ??
----------------解决方案--------------------------------------------------------
getchar()取的是第一个字符.
至于您说的清除空格难以实现,用getche立即被读入.
----------------解决方案--------------------------------------------------------
#include <stdio.h>
#define ENTER 0x0d
main()
{
int i=0;
char c;
char str[10];
clrscr();
while(!kbhit())
{
clrscr();
printf("%05d",i++);
}
clrscr();
printf("End.");
for(;;)
if(kbhit() != 0)
{
c=getchar();
if(c == ENTER ) break;
else ungetch(c);
}
scanf("%s",str);
printf("%s",str);
return 0;
}
你看看这样为什么不行,不是每次在不是输入 回车的时候,返回到流中
为什么scanf不能接收这些字符
而 这样的时候
#include <stdio.h>
#define ENTER 0x0d
main()
{
int i=0;
char c;
char str[10];
clrscr();
while(!kbhit())
{
clrscr();
printf("%05d",i++);
}
clrscr();
printf("End.");
for(;;)
getchar();
scanf("%s",str);
printf("%s",str);
return 0;
}
scanf能接收 除拉第一个被 getchar();接收外的所有还在留中的字符呢 ??
----------------解决方案--------------------------------------------------------