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.


Anmelden zum Antworten