我知道使用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'&' –