close
標題:

關於C Program

發問:

此文章來自奇摩知識+如有不便請留言告知

我而家要做一張receipts出黎,要使用者回答四條問題,而個資料性質 (其中三樣係輸入數字(int),一樣係輸入英文字(char)... 我想將要輸入英文字母的那條問題放落該四條問題中的第二條... 但唔知點解當答完第1條問題後.就自動跳落第3條 請問有什麼方法可以解決??? (急..要做功課)

最佳解答:

我想是因為你用了 scanf 去讀取輸入。 如果你的 code 是像下面的一般: int ans1, ans3, ans4; char ans2; printf(”Question 1..”); scanf(”%d”, &ans1); printf(”Question 2..”); scanf(”%c”, &ans2); printf(”Question 3..”); scanf(”%d”, &ans3); printf(”Question 4..”); scanf(”%d”, &ans4); 假設用戶的輸入是 123[ENTER] A[ENTER] 321[ENTER] 123[ENTER] 當用戶輸入 123 按 enter 時,這樣你的 ans1 應該可以儲存到用戶的輸入(即123)但同時你的 ans2 就已經儲存了 enter (即是 )這個 character 了。 因為你的 code 是要 scan 用戶的 input。那麼第一個 %d 自然是 123,但之後的 %c 就會是用戶的 ENTER。這是你控制不到的。 如果你要使得用戶每控一次 enter 才是一個輸入,你可以用 gets 和 sscanf 這兩個 function。 gets 這個 function 是一次過 read 一行 input (即是直至有 符號為止。 sscanf 是類似 scanf,不過它不是 scan 用戶的輸入,而是 scan 一個 string value。 所以你可以先用 gets 將一整行 read 入來,裝在一個 string variable 裡。然後再有 sscanf 去 scan 這條 string 去得出要的 values。 就上面的例子,你可以這樣寫: int ans1, ans3, ans4; char ans2; char s[1024]; printf(”Question 1..”); gets(s); sscanf(s, ”%d”, &ans1); printf(”Question 2..”); gets(s); sscanf(s, ”%c”, &ans2); printf(”Question 3..”); gets(s); sscanf(s, ”%d”, &ans3); printf(”Question 4..”); gets(s); sscanf(s, ”%d”, &ans4); 希望幫到你。

其他解答:FAD2A23AB937987B
arrow
arrow

    omckyyo 發表在 痞客邦 留言(0) 人氣()