文字を入出力するプログラムを作っています。
具体的には以下のようなプログラムです。
・文字を入力し[Enter]キーを押すと文字が出力される
・入力できる最大の文字数は20文字
・[BackSpace]キーで文字の削除が出来る
自分で一応は作ってみたのですが、
[BackSpace]を押すと、
・入力した文字数が20文字に達していなくても、それ以上入力できなくなる。
・カーソル位置が不安定になり、消したい文字を消せないことがある。
とうまく動作しません。
下記のプログラムのどこが悪いのでしょうか?
あるいはもっと綺麗に書くことはできないでしょうか?
助言いただけるようでしたら、解説のほどよろしくお願いします。
C
1#include <stdio.h> 2#include <conio.h> 3#define ENTER_KEY 0x0D 4#define BS_KEY 0x08 5 6int main(void) 7{ 8 int ch; 9 int count = 0; /* 入力された文字数 */ 10 11 while ((ch = _getch()) != ENTER_KEY) 12 { 13 if (ch == BS_KEY) 14 { 15 if (count < 20) 16 { 17 putchar(BS_KEY); 18 } 19 putchar(' '); 20 putchar(BS_KEY); 21 count--; 22 } 23 24 if (ch != BS_KEY) 25 { 26 putchar(ch); 27 count++; 28 } 29 30 if (count >= 20) 31 { 32 putchar(BS_KEY); 33 count--; 34 } 35 } 36 37 return 0; 38}
回答2件
あなたの回答
tips
プレビュー