我知道使用scanf和fgets的区别和优势/劣势。“scanf with printf”vs“fgets with printf”
我不明白printf和这两个C标准函数之间的关系。
我有这个简单的代码:
void print_choice(char * list, char * choice)
{
/* check parameters */
if(!list || !choice)
return;
printf("list of users: %s\n", list);
printf("Choice -- ? ");
/* scanf("%s", &choice); */
/* fgets(choice, 20, stdin); */
}
int main()
{
char choice[20];
char * list = "marco:dario:roberto:franco";
print_choice(list, choice);
printf("choice = %s\n", choice);
return 0;
}
如果我使用fgets
,的printf正确打印在标准输出结果;
如果我使用scanf
,printf`不会在stdout上打印任何内容。
为什么会这样?
您需要fflush((stdout)在printf之后使用 – cup
作为_scanf(“%s”,选择); _ << - Notice dropped'&' –