首页 > 解决方案 > 不明白什么是 fflush() 函数

问题描述

我似乎无法理解fflush()C 中函数的概念。有人可以用更简单的术语解释一下吗,因为我似乎无法理解它以及它在这段代码中的作用:

int main() {
    loadContactList();
    while (1) {
        printf("\n");
        printMenu();

        int choice;

        scanf(" %d", &choice);
        fflush(stdin);
        printf("\n");

        if (choice == 1) {
           // addContact();
        } else if (choice == 2) {

        } else if (choice == 3) {

        } else if (choice == 4) {
            query();
        } else if (choice == 5) {
            while (1) {
                printf("choose the sorting mode:\n \n");
                printf("1. Sort by last name, first name then number\n");
                printf("2. Sort by date\n");
                printf("Enter -1 to return to the main menu\n");

                int x;

                scanf("%d", &x);

                if (x == 1) {
                    sortByLFN();
                    printContactList();
                    break;
                } else if (x == 2) {
                    sortByDate();
                    printContactList();
                    break;
                } else if (x == -1) {
                    break;
                }
            }
        } else if (choice == 6) {
            //saveContact();
        } else if (choice == 7) {
            quitPhoneBook();
        } else {
            printf("You entered an invalid option \n");
        }    
    }
    return 0;
}

该代码应该用于电话簿程序,我们被告知要使用fflush但在课堂上没有解释。

标签: c

解决方案


刷新输出流(例如stdout)会导致任何缓冲数据“刷新”到输出。例如,刷新stdout通常用于确保输出变得可见,即使它后面没有换行符,因为它stdout可能是行缓冲的。

刷新输入流(例如stdin)在标准 C 中是未定义的行为,不应使用。一些实现确实将其定义为非标准扩展以清除任何未读输入,但我强烈建议不要利用它(特别是作为不当使用 的解决方法scanf)。问题中的代码属于这一类。


推荐阅读