| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3965 人关注过本帖
标题:回退符如何输入
只看楼主 加入收藏
tigerball
Rank: 2
等 级:论坛游民
帖 子:58
专家分:32
注 册:2013-6-10
结帖率:80%
收藏
已结贴  问题点数:4 回复次数:12 
回退符如何输入
程序代码:
#include<stdio.h>
main()
{
    int c;
    while((c=getchar())!=EOF){
        if(c=='\t')
            printf("\\t");
        else if(c=='\b')
            printf("\\b");
        else if(c=='\\')
            printf("\\\\");
        else
            putchar(c);
    }
} 
上面程序解答的问题是:
运行程序输入的'table'会转换成'\t '输出,输入的'\'会转换成'\\'输出,要怎么输入回退符让它输出 ‘\b’

我试了很多次,发现用删除键不能显示  \b 啊?回退符如何输入呢?
搜索更多相关主题的帖子: 如何 
2013-06-14 20:29
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这是你没查资料的缘故。

授人以渔,不授人以鱼。
2013-06-14 20:34
tigerball
Rank: 2
等 级:论坛游民
帖 子:58
专家分:32
注 册:2013-6-10
收藏
得分:0 
以下是引用TonyDeng在2013-6-14 20:34:41的发言:

这是你没查资料的缘故。
请版主大人明示
2013-06-14 20:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
Backspace按键要读两次getchar(),它的键盘扫描码是0x0e08,去查一查资料吧。

授人以渔,不授人以鱼。
2013-06-14 20:54
嗜血老妖
Rank: 3Rank: 3
来 自:江西
等 级:论坛游侠
威 望:2
帖 子:102
专家分:163
注 册:2013-3-25
收藏
得分:0 
回退符,估计要用到键值控制,或者输入ACSII码,否侧它以删除对待!!!

仗剑走天涯,网络论英雄。
2013-06-14 20:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
先弄明白我4楼所说的原理,下面再教你怎么做:
1.用_getch()读入字符,判断它的值是不是0x0e;
2.如果不是0x0e,就是常规的按键,用你原先的代码输出;
3.如果是0x0e,就是扩展按键,再调用一次_getch(),看是不是0x08,是的话就是按了Backspace键。

提醒:检测扩展按键必须使用系统底层的_getch()函数,不能用C标准库的流输入函数getchar(),后者是必须在按下回车键才启动代码分析的,前者不用,是即时返回。所有与按键相关的检测功能,都应用与平台有关的函数,标准库函数是不行的。在TC/BC中,之所以是bioskey()函数,就是表明这种函数是调用BIOS硬件层的,不同的机器有不同的硬件代码和机制,不要以为仅学C语言就可以处理任何低级功能,真正要学的是这些针对性的专业知识,那与C语言无关,很多人以为学了C就能做很基本的事,其实是不知道什麽是C什麽是专业,专业不懂,把语言学到炉火纯青也是白搭。上面的东西,说白了就是很简单的代码,但不了解,等于零,怎么也写不出來。

[ 本帖最后由 TonyDeng 于 2013-6-14 21:14 编辑 ]

授人以渔,不授人以鱼。
2013-06-14 21:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
换句话说,所谓的扩展按键是双字节编码的,与汉字一样,本质上是2字节字符数组,所以处理键盘的代码都应使用WORD数据类型,Backspace是0x0e08,回车是0x000d。

授人以渔,不授人以鱼。
2013-06-14 21:08
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
有空看一看吧:http://blog.
想一想人家的TC用bioskey(),我教你在VC下用_getch(),是什么意思,就会明白在不同的编译商家环境下迁移是怎么回事。

0x0e08只是微软DOS/Windows平台下的键盘扫描码,不同的机器、不同的平台,可能会有区别(比如特制的键盘,卡拉OK点歌机那种,或日本、欧洲的独特键盘),具体应看硬件或系统技术手册的。所有现实的编程,都是靠这些资料,不是C课程能学到的。很多人问“学了C语言该学什麽”,其实就是该学这些专业知识,否则是无法实际工作的。

[ 本帖最后由 TonyDeng 于 2013-6-14 21:23 编辑 ]

授人以渔,不授人以鱼。
2013-06-14 21:16
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:0 
学习了

C++菜鸟
2013-06-14 21:53
tigerball
Rank: 2
等 级:论坛游民
帖 子:58
专家分:32
注 册:2013-6-10
收藏
得分:0 
以下是引用TonyDeng在2013-6-14 21:04:32的发言:

先弄明白我4楼所说的原理,下面再教你怎么做:
1.用_getch()读入字符,判断它的值是不是0x0e;
2.如果不是0x0e,就是常规的按键,用你原先的代码输出;
3.如果是0x0e,就是扩展按键,再调用一次_getch(),看是不是0x08,是的话就是按了Backspace键。

提醒:检测扩展按键必须使用系统底层的_getch()函数,不能用C标准库的流输入函数getchar(),后者是必须在按下回车键才启动代码分析的,前者不用,是即时返回。所有与按键相关的检测功能,都应用与平台有关的函数,标准库函数是不行的。在TC/BC中,之所以是bioskey()函数,就是表明这种函数是调用BIOS硬件层的,不同的机器有不同的硬件代码和机制,不要以为仅学C语言就可以处理任何低级功能,真正要学的是这些针对性的专业知识,那与C语言无关,很多人以为学了C就能做很基本的事,其实是不知道什麽是C什麽是专业,专业不懂,把语言学到炉火纯青也是白搭。上面的东西,说白了就是很简单的代码,但不了解,等于零,怎么也写不出來。
谢谢啊
2013-06-17 10:32
快速回复:回退符如何输入
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.103482 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved