Confused about getchar() function

后端 未结 6 1687
有刺的猬
有刺的猬 2021-02-07 08:25

I am confused about getchar()\'s role in the following code. I mean I know it\'s helping me see the output window which will only be closed when I press the En

6条回答
  •  再見小時候
    2021-02-07 08:41

    Try this:

    #include 
    
    int main(int argc, char *argv[])
    {
        char ch;
    
        printf("I'm now going to block until you press something and then return... ");
    
        ch = getchar();
    
        if (ch >= 0)
           printf("\nYou pressed %c\n", ch);
        else
           printf("\nAliens have taken over standard input! Run!\n");
    
        return 0;
    }
    

    getchar() will cause your program to go to sleep until a keyboard (or whatever is attached to stdin) interrupt is received. This means it's blocking, no additional code will execute until getchar() returns.

    It's very, very helpful to look at the return value of a function in order to understand it.

    Any function may block, unless it provides some mechanism to prevent blocking. For instance, open() allows a O_NONBLOCK flag which is helpful for opening slow to respond devices like modems. In short, if it gets input from a terminal or has to wait to get an answer from the kernel or some device, there's a very good chance it might block.

提交回复
热议问题