在代码中这里做什么?

cha*_*rre 3 c loops

在下面的代码中,while循环是做什么的(用"loop"标记)?: -

int main(void)
{
    char code;

    for (;;)
    {
        printf("Enter operation code: ");
        scanf(" %c", &code);
        while (getchar() != '\n')   // loop
            ;
        switch (code)
        {
        case 'i':
            insert();
            break;
        case 's':
            search();
            break;
        case 'u':
            update();
            break;
        case 'p':
            print();
            break;
        case 'q':
            return 0;
        default:
            printf("Illegal code\n");
        }
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

Diclaimer:代码不完整,它只是代码的一部分,因为它不能编译.

hac*_*cks 7

getchar()用于消耗用户输入的额外字符和换行符\n.
假设用户输入操作代码为

isupq\n // '\n' is for "Enter" button
Run Code Online (Sandbox Code Playgroud)

然后,scanf()将只读取字符i和五个字符的其余部分将被语句消耗

while (getchar() != '\n')   
        ;  
Run Code Online (Sandbox Code Playgroud)

因此,对于下一次迭代,scanf()将等待用户输入字符而不是从输入缓冲区中读取它.