Ich schrieb ein Programm in C++, um Werte für eine NxN-Matrix einzugeben. Im Allgemeinen würde man eine Ganzzahl eingeben und die Return-Taste für NxN-Zeiten drücken. Aber ich möchte den Cursor die Länge eines Tabs für jeden vom Benutzer eingegebenen Wert verschieben. Dies wird für eine Zeile fortgesetzt, und dann wird eine neue Zeile für Eingaben für die nächste Zeile aufgefordert. Ich bin mir bewusst, dass ich curses.h für eine solche Implementierung verwende, habe aber noch nicht herausgefunden, wie man es implementiert.Ersetzen Sie Rückkehr mit einer Registerkarte für Standardeingabe
Danke.
#include <ncurses.h>
#include <iostream>
using namespace std;
int main()
{
char ch[10];
int array[4][4];
initscr();
raw();
keypad(stdscr, TRUE);
echo();
printw("Enter elements a 4x4 array: \n");
for(int i=0;i<4;i++) {
for(int j=0 ; j<4; j++) {
getstr(ch);
array[i][j]=atoi(ch);
addch('\t'); // This is executed after the newline return is received
refresh();
}
addch('\n');
}
getch();
endwin();
return 0;
}
Ok, danke für den Link. Jetzt ist das Problem das: die Funktion getrstr macht ununterbrochene Anrufe, bis ein Zeilenumbruch zurückkommt. Ich möchte die Zeilenumbrüche erfassen und in Tabs umwandeln, zB addch ('\ t'). Im aktuellen Code passiert es bei jeder neuen Zeile. Wie können wir die Zeilenschaltung abfangen und eine Registerkarte auf dem Bildschirm platzieren? – ajmartin
@ajmartin: dann solltest du wahrscheinlich nicht "getr", sondern ein "nacktes" 'getch' verwenden, um den newline selbst zu fangen – icecrime