我已經制作了一個小程序,可以將光標向上,向下,向左和向右移動。寫入stdin,然後將流移回1位置
現在我想添加的最後一件事是如果光標到達屏幕的邊緣,光標可以跳到下一個或上一個。
因爲我已經實現了各種檢查,以確保我可以在key_up和key_down輸入句柄部分內上下移動,所以我想'借用'這些。我當然可以重寫它們並在key_left和key_right方案中重用它們。
但是,如果我只是寫入標準輸入和'假'用戶輸入就好像按下了key_up或key_down一樣,只需更改光標的x位置就可以了。
所以我想是這樣的
putc(KEY_UP,stdin);fseek(stdin,-1, SEEK_CUR);
因此下一次的getch()它檢索我放到標準輸入與putc將字符!
我使用ncurses爲整個程序接口!
關於Filipe建議我試圖用ungetc()做些事情,但它沒有我想要的行爲。
這裏是一個小的測試程序,理論上應該第一個字符後,打印出無限的普的,但它並不:
#include <stdio.h>
#include <stdlib.h>
#include <ncurses.h>
int main() {
int input,i=0;
initscr();
start_color();
keypad(stdscr, TRUE);
raw();
nonl();
noecho();
do {
input=getch();
if (i==24) {i=0;erase();}
mvprintw(i,0,"%c --- %i",input,input);
refresh();
if (ungetc((unsigned char)'p', stdin)==EOF) {
printw(" ERROR UNGETC");
}
else {printw(" SUCCES UNGETC");}
++i;
} while (input!='q');
endwin();
exit(2);
}
這正是我所期待的。但它似乎並不奏效。我在原始文章中添加了一個小例子! – RG337
您是否將它作爲'unsigned char'傳遞給'ungetc()'? –
是的,嘗試有和沒有。該示例現已發佈。 thx的幫助:) – RG337