How to deactivate input statement after some time?

后端 未结 3 1883
夕颜
夕颜 2020-12-18 08:02

We know input function or operator (cin, scanf,gets….etc) wait to take input form user & this time has no limit.

Now, I will ask a question & user give the a

3条回答
  •  感动是毒
    2020-12-18 08:45

    #include 
    #include 
    #include 
    #include 
    
    bool get_input ( char *buffer, std::size_t size, int timeout )
    {
         std::time_t start = std::time ( 0 );
         std::size_t n = 0;
    
       for ( ; ; ) {
        if ( n == 0 && std::difftime ( std::time ( 0 ), start ) >= timeout )
         return false;
    
        if ( kbhit() ) {
      if ( n == size - 1 )
        break;
    
      char ch = (int)getche();
    
      if ( ch == '\r' ) {
        buffer[n++] = '\n';
        break;
      }
      else
        buffer[n++] = ch;
      }
    }
    
     buffer[n] = '\0';
    
    return true;
    }
    
     int main()
    {
    char buffer[512] = {0};
    
    if ( !get_input ( buffer, 512, 5 ) ) {
    std::cout<<"Input timed out\n";
    buffer[0] = '\n';
    }
    
    std::cout<<"input: \""<< buffer <<"\"\n";
    }
    

提交回复
热议问题