簡體   English   中英

不執行帶有 scanf 的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM