3
#include <stdio.h>
/* replace tabs and backspaces with visible characters */

main()

{
    int c;

    while ((c = getchar()) != EOF) {
        if (c == '\t')
            printf("\\t");
        if (c == '\b')
            printf("\\b");
        if (c == '\\')
            printf("\\\\");
        if (c != '\b')
            if (c != '\t')
                if (c != '\\')
                    putchar(c);
    }
}

バックスペースを押したときに \b バックスペース シグネチャが表示されなかったのはなぜですか?

4

3 に答える 3

1

elseはしごがかなり怖いということを学ぶ必要があります。

また、端末はおそらく1つのバックスペース文字を送信しません。実際の端末プログラムがその種類の「特別な」キーを表す方法は少し複雑になる可能性があります(削除はもう1つのお気に入りです)。

于 2013-01-08T10:26:28.127 に答える
1

Unix ライクなシステムを使用している場合は、おそらくこれを読みたいと思うでしょう: http://en.wikipedia.org/wiki/Cooked_mode

他のオペレーティング システムでは、わかりませんが、入力に対して何らかの処理を行う可能性があります。

于 2013-01-08T10:27:33.257 に答える
1

が扱うキャラクターの一部Terminal。したがって、それを制御することはできません。この回答を確認してください。

端末で試しましたMAC。しかし、この回答127では、値などを取得できませんでした。私はキャラクターのために得ました。そのため、で条件を試してみると、値が出力されました。832backspaceif32\b

if (c == 32 || c == 8)
    printf("\\b");
于 2013-01-08T10:41:30.040 に答える