- コンパイラ:gcc4.5.2
- ターミナル:Xterm
- OS:Linux(x86)
- Ncurses 5.9
ncursesを使用して配列をグラフィカルに表現するテキストエディタをプログラミングしていますkey_strokes[]
。これは1次元なので、マクロを使用して( )INDEX(y*maxx+x)
の現在の位置を指します。およびは、関数によって返される端末の現在の座標であり、関数によって返される各行に含めることができる列の最大量です。プログラムは、バックスペースを押すまではうまく機能します。何らかの理由で、下のスイッチに到達した後、の値はゼロに設定されます。もちろん、これは配列の最初の「行」のみに制限することをやめます。key_strokes
key_strokes[INDEX]
y
x
getyx(stdscr, y, x)
maxx
getmaxyx(stdscr, maxy, maxx)
maxx
INDEX
ユーザーのキーストロークはとしてキャプチャされint key_strokes
ます。スイッチケースを使用して、矢印キー、バックスペース、F12などINDEX
でありmaxx
、次のように定義されているかどうかを確認します。
#define INDEX (y*maxx+x)
unsigned int maxx = 0;
私も使用していることに注意してくださいcbreak(); noecho(); keypad(stdscr, TRUE);
。
case KEY_BACKSPACE:
if (INDEX >= 0)
{
for(i = INDEX; key_strokes[i] != '\0'; i++) {
key_strokes[i] = key_strokes[i+1];
}
if (total_count > 0) {
total_count--;
}
delch();
if (x == 0) {
move(y-1, maxx-1);
}
else {
move(y, x-1);
} refresh();
}
break;