| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8455 人关注过本帖
标题:怎么输入回退符
只看楼主 加入收藏
kodec2104
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
怎么输入回退符
#include <stdio.h>
#include <stdlib.h>

int 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);

    return 0;
}
这个程序的目的是将制表符用\t 替换,回退符用\b替换,反斜杠替换为\\  运行时怎么输入回退符呢?
搜索更多相关主题的帖子: include return 制表符 
2012-07-18 22:06
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1934
专家分:3012
注 册:2009-12-22
收藏
得分:5 
\\ 输入的时候本来就是输入最后那个\的。这是语法规定的,没有办法。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2012-07-18 22:21
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:5 
楼上没明白楼主在问什么。

事实上要深入解释楼主的问题就需要解释什么是shell。这个说来话长,自己找资料看吧。

楼主将getchar改成getch再试试。如果编译提示这个函数没有定义就加一个文件头conio.h

重剑无锋,大巧不工
2012-07-18 23:26
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:5 
还有一个简单的办法是让程序从文件读取输入。退格符(backspace),其实就是 ascii 码的 8,除了常用的转义字符的记法 "\b" 以外,有时还会表记成 "^H",或者 ctrl-h。
如果能让程序从文件读输入的话,你只需要想些办法把这个字符写到文件里去就行了。有很多编辑器可以简单地做到这点。
2012-07-19 00:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
退格键是双字节键码,getchar()怎么可能收得到!

授人以渔,不授人以鱼。
2012-07-19 00:39
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 5楼 TonyDeng
退格怎么成了双字节了?
2012-07-19 01:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
哦,记错了,退格键的键码是单字节的。

[ 本帖最后由 TonyDeng 于 2012-7-19 01:27 编辑 ]

授人以渔,不授人以鱼。
2012-07-19 01:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
基本上把原来的程序getchar()改为getch()就可以了,补充一点检测,如下供参考:

程序代码:
#include <stdio.h>
#include <conio.h>

#define K_ENTER      13
#define K_TAB        9
#define K_BACKSPACE  8

void main(void)
{
    printf_s("请输入一行字符,以<Enter>结束:");
    int keycode;
    while ((keycode = _getch()) != K_ENTER)
    {
        switch (keycode)
        {
        case K_TAB:
            _putch('\\');
            _putch('t');
            break;
        case K_BACKSPACE:
            _putch('\\');
            _putch('b');
            break;
        case '\\':
            _putch('\\');
            _putch('\\');
            break;
        default:
            ((keycode < 0x20) || (keycode == 0xE0)) ? _getch() : _putch(keycode);
            break;
        }
    }
}

授人以渔,不授人以鱼。
2012-07-19 02:03
kodec2104
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-7-18
收藏
得分:0 
回复 3楼 beyondyf
我的问题是: 运行程序输入的'table'会转换成'\t '输出,输入的'\'会转换成'\\'输出,要怎么输入回退符让它输出 ‘\b’呢?
2012-07-19 12:25
burce_wyc
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-8-31
收藏
得分:0 
直接按Backspace键
^H^H
\b\b
2013-08-31 10:23
快速回复:怎么输入回退符
数据加载中...
 
   



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

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