求教如何输入退格键和内存问题
#include<stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF)
{
if(c=='\b')
printf("\\b");
else
printf("%c",c);
}
return(0);
}
请教在黑窗口中怎么输入‘\b'退格符?
另外还有个问题,内存单元地址最小单位是字节吧,不是位吧,还有字符变量分配内存时不连续怎么回事?
[解决办法]
getchar函数是从输入缓冲区中读取数据,退格键Backspace的作用不是将'\b'插入缓冲区末尾,而是将缓冲区最后一个数据出栈。可见用Backspace键无法将字符'\b'插入缓冲区,当然也无法用getchar取得。
解决方法可用不通过缓冲区而直接读取按键(或其扫描码)的函数,比如getch(conio.h)、TC下才有的bioskey(bios.h):
- C/C++ code
#include<stdio.h>#include<conio.h>int main(){ int c; while((c=getch())!=0x1a) //^Z对应的ASC码是26即0x1A switch(c) { case '\b': printf("\\b"); break; case '\r': //getch读取回车键返回的是'\r'而不是'\n' printf("\n"); break; default: if(!(c&0xff00)) printf("%c",c); } return(0);}
[解决办法]