getchar + n ?
-
gibt es ein äquivalent zur ncurses funktion getnstr ?? oder falls nicht wie, kann ich getchar (scnaf) dazu umbauen, dass sie jeweils nur eine Bestimmte
anzahla an zeichen lesen?
-
Hi,
also mir faellt keine Funktion dafuer ein, aber du koenntest es evtl. so umsetzen:
int getnstr(char *str, int n) { /* man koennte sich auch 'i' sparen und mit '--n' rechnen, in der while-schleife dann pruefen ob n < 0 ist, aber ich denke, dass es so einfacher zu lesen ist */ int i = 0; while(i <= n) { str[i] = getchar(); ++i; } //aus welchem grund auch immer if(i != n) return 0; return 1; }
Das ist sicherlich nicht perfekt, aber du kannst es ja noch umschreiben.
Grosses mango:
'str' muss gross genug sein, 'n' Zeichen aufzunehmen. Ist das nicht der Fall,
kommt es zu nem knadenlosen Absturz.mfg
v R
-
Cool, ich hatte bisher diesen ansatz:
#include <stdio.h> #include <stdlib.h> #include <termios.h> int main(void) { char *pressedKey = NULL; struct termios old; struct termios new; pressedKey = calloc(11, sizeof(char)); tcgetattr(fileno(stdin), &old); new = old; new.c_lflag &= ~ICANON; new.c_cc[VMIN] = 1; new.c_cc[VTIME] = 0; tcsetattr(fileno(stdin), TCSANOW, &new); fgets(pressedKey, 11, stdin); tcsetattr(fileno(stdin), TCSANOW, &old); printf("P = %s\n", pressedKey); return 0; }
-
Warum immer das Rad neu erfinden?
char str[64]; scanf("%10s", str);
liest 10 Zeichen von stdin.