首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

求教怎么输入退格键和内存有关问题

2012-10-13 
求教如何输入退格键和内存问题#includestdio.hint main(){int cwhile((cgetchar())!EOF){if(c\b)

求教如何输入退格键和内存问题
#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);}
[解决办法]
探讨

补充一下,我问的就是一个字节一个地址,而不是一个位一个地址,对吧?

热点排行