This question already has answers here:
Closed 11 months ago.
Using fflush(stdin)
(4个答案)
problem with flushing input stream C
(8个答案)
我似乎无法理解C中
这个代码应该是一个电话簿程序的代码,我们被告知在那里使用
(4个答案)
problem with flushing input stream C
(8个答案)
我似乎无法理解C中
fflush()
函数的概念。是否有人能用更简单的术语解释它,因为我似乎无法理解它以及它在这段代码中的作用: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
,但在课堂上没有解释。 最佳答案
刷新输出流(如stdout
)会导致将任何缓冲数据“刷新”到输出。例如,刷新stdout
通常用于确保输出变为可见,即使它后面没有换行符,因为stdout
可能是行缓冲的。
刷新输入流(如stdin
)是标准C中未定义的行为,不应使用。有些实现确实将其定义为清除任何未读输入的非标准扩展,但我强烈建议不要利用它(特别是作为不正确使用scanf
的解决方法)。问题中的代码属于这一类。
关于c - 无法理解什么是fflush()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53906274/
10-12 02:12