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

,一个简单但很恼人的有关问题

2012-02-06 
高手请进,一个简单但很恼人的问题。今天晚上一学生问我一道C语言的问题问题是这样:编写一个将输入复制到输

高手请进,一个简单但很恼人的问题。
今天晚上一学生问我一道C语言的问题

问题是这样:编写一个将输入复制到输出的程序,并将其中的回退符替换为\b,把制表符替换为\t,把反斜杠替换为\\,这样可以把制表符和回退符以可见的方式显示出。

这个是个很简单的问题,我写了两种方法,完成的功能一样:

方法一:

#include   <stdio.h>
main()
{
   
    int   c;
     
    while((c=getchar())!=EOF)
            {
            if(c==8)
            printf( "\\b ");

            if(c== '\t ')
            printf( "\\t ");

            if(c== '\\ ')
            printf( "\\\\ ");

            if(c!= '\b ')
                if(c!= '\t ')
                    if(c!= '\\ ')
                        putchar(c);
            }
}  


方法二:

#include   "stdio.h "
main()
{
        int   c;
        while((c=getchar())!=EOF)
        if(c== '\b ')
        {
        putchar( '\\ ');putchar( 'b ');
        }
        else   if(c== '\t ')
        {
        putchar( '\\ ');putchar( 't ');
        }
        else   if(c== '\\ ')
        {
        putchar( '\\ ');putchar( '\\ ');
        }
        else   putchar(c);
}


但现在有一个问题是:程序执行的时候,回退符(又叫退格符)怎么从键盘上输到控制台里,我们知道回退符的ASCII码是0x08(相当于十进制的8),键盘可以用CTRL+H来表示,但我尝试了各种办法都不能把\b打印出来,制表符和反斜杠都可以从键盘输入并正确打印出来,但回退符就是打印不出来,问题的关键就是:怎么从键盘输入一个回退符进入计算机中?或者说怎么在程序执行的时候输一个回退符到控制台?

我似乎觉得现在的计算机键盘做不到,因为我也一直没碰到这方面的问题,所以今晚上郁闷起,我是尝试了各种方法才写的这个帖子。


[解决办法]
好像是说c++不支持回显,所以这个需求可能达不到
[解决办法]
\b 不能 撤销 回车。

所以,
即使输入了 \b ,
回车后也无法看到 \b 产生的效果 ~
[解决办法]
#include <stdio.h>
#include <stdlib.h>

int main()
{
int c;
while(scanf( "%d ", &c) == 1) //输入 ascii 码 , \b 输入 8
{
//printf( "123456 ");
//putchar(c);
if(c == '\b '){printf( "\nYou input charactor: \\b\n ");}
if(c == '\t '){printf( "\nYou input charactor: \\t\n ");}
}
system( "pause ");
return 0;
}
[解决办法]
退格符号在键盘上对应的是 Back Space,
但是它无法作为字符输入给程序 ~
[解决办法]
while(scanf( "%d ", &c) == 1) //输入 ascii 码 , \b 输入 8
输入 8:
执行 if(c == '\b '){printf( "\nYou input charactor: \\b\n ");}



注意这里的输入方式不是按照字符方式,
而是按照数值编码的方式 ~~
[解决办法]
\t 对应的 ascii 码值
[解决办法]
\t == 9

输入 数字 9 即可。

结束循环输入 ctrl+Z 回车
[解决办法]
要用到console 的IO输入输出
getch
getchar是标准流的IO函数

热点排行