Pagina 3 di 3 primaprima 1 2 3
Visualizzazione dei risultati da 21 a 23 su 23
  1. #21
    non ho detto che non mi va bene, pero fa sempre bene avere a portata di mano piu soluzioni per uno stesso problema. Era una cosa in piu per allargare i miei orizzonti, tutto qui.
    cmq mi posteresti il codice che ti ho chiesto per piacere??

  2. #22
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non mi sembra una buona soluzione. L'ultimo codice che ti ho postato mi sembra il migliore e il piu' semplice ...

  3. #23
    io in C la scriverei così

    Codice PHP:
    #if !defined(linux)
    #include <conio.h> /* kbhit(), getch() */
    #else
    #include <sys/time.h> /* struct timeval, select() */
    /* ICANON, ECHO, TCSANOW, struct termios */
    #include <termios.h> /* tcgetattr(), tcsetattr() */
    #include <stdlib.h> /* atexit(), exit() */
    #include <unistd.h> /* read() */
    #include <stdio.h> /* printf() */

    static struct termios g_old_kbd_mode;
    /*****************************************************************************
    *****************************************************************************/
    static void cooked(void)
    {
        
    tcsetattr(0TCSANOW, &g_old_kbd_mode);
    }
    /*****************************************************************************
    *****************************************************************************/
    static void raw(void)
    {
        static 
    char init;
    /**/
        
    struct termios new_kbd_mode;

        if(
    init)
            return;
    /* put keyboard (stdin, actually) in raw, unbuffered mode */
        
    tcgetattr(0, &g_old_kbd_mode);
        
    memcpy(&new_kbd_mode, &g_old_kbd_modesizeof(struct termios));
        
    new_kbd_mode.c_lflag &= ~(ICANON | ECHO);
        
    new_kbd_mode.c_cc[VTIME] = 0;
        
    new_kbd_mode.c_cc[VMIN] = 1;
        
    tcsetattr(0TCSANOW, &new_kbd_mode);
    /* when we exit, go back to normal, "cooked" mode */
        
    atexit(cooked);

        
    init 1;
    }
    /*****************************************************************************
    *****************************************************************************/
    static int kbhit(void)
    {
        
    struct timeval timeout;
        
    fd_set read_handles;
        
    int status;

        
    raw();
    /* check stdin (fd 0) for activity */
        
    FD_ZERO(&read_handles);
        
    FD_SET(0, &read_handles);
        
    timeout.tv_sec timeout.tv_usec 0;
        
    status select(1, &read_handlesNULLNULL, &timeout);
        if(
    status 0)
        {
            
    printf("select() failed in kbhit()\n");
            exit(
    1);
        }
        return 
    status;
    }
    /*****************************************************************************
    *****************************************************************************/
    static int getch(void)
    {
        
    unsigned char temp;

        
    raw();
    /* stdin = fd 0 */
        
    if(read(0, &temp1) != 1)
            return 
    0;
        return 
    temp;
    }
    #endif

    int main()
    {

        while (!
    kbhit());
        
    int c=getch();
        
    printf("%c\n"c);

        return 
    0;

    ciao
    sergio

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.