[英]No execution for functions with scanf
void reg() {
char name[60];
char city[1000];
puts("Name");
scanf("%s", name);
puts("City?");
scanf("%s", city);
FILE *fptr = fopen("./src/details.txt", "a");
fputs(strncat(strncat(name, " ", 61), city, 1061), fptr);
fclose(fptr);
}
當我從 main 調用這個 function (存在於另一個文件中)時,它不會執行(程序運行時沒有任何輸出)。 事實上,我的文件中任何帶有 scanf 的 function 都不會執行。 但是,沒有 scanf 的函數可以正常工作。 誰能告訴我怎么了?
要在打印文本后等待用戶輸入,您必須使用fflush(stdout)
來清除緩沖區。
而不是:
puts("Name");
scanf("%s", name);
做:
puts("Name");
fflush(stdout); // this
scanf("%s", name);
嘗試用fgets()
替換scanf()
) 來讀取字符串。
fgets(name, 60, stdin);
此外,您的scanf()
錯誤很可能似乎是由未使用的尾隨空格引起的。 添加:
scanf(" %*c");
或者在調用scanf()
getchar()
的調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.