Input within a time limit in Standard C

后端 未结 2 1947
野性不改
野性不改 2021-01-13 23:18

I\'m currently doing my assignment and it\'s compulsory to use C-Free 5.0. Just need your help to solve this piece of puzzle. I want to implement a time limit for the user t

2条回答
  •  孤街浪徒
    2021-01-14 00:11

    Here is an example program that shows how you can use O_NONBLOCK flag on a stdin file descriptor.

    #include 
    #include 
    #include 
    #include 
    #include 
    
    #define INPUT_LEN 10
    
    int main()
    {
        printf ("Please enter a line of text : ");
        fflush(stdout);
        time_t end = time(0) + 5; //5 seconds time limit.
    
        int flags = fcntl(STDIN_FILENO, F_GETFL, 0);
        fcntl(STDIN_FILENO, F_SETFL, flags | O_NONBLOCK);
    
        char answer[INPUT_LEN];
        int pos = 0;
        while(time(0) < end)
        {
            int c = getchar();
    
            /* 10 is new line */
            if (c != EOF && c != 10 && pos < INPUT_LEN - 1)
                answer[pos++] = c;
    
            /* if new line entered we are ready */
            if (c == 10)
                break;
        }
    
        answer[pos] = '\0';
    
        if(pos > 0)
            printf("%s\n", answer);
        else
            puts("\nSorry, I got tired waiting for your input. Good bye!");
    }
    

提交回复
热议问题