iT邦幫忙

0

字元初始化問題

  • 分享至 

  • xImage

1.問題:為何無法輸入字元?

2.程式碼:

#include <stdio.h> 
main()
{
        float i;
        float j;
        char sign;

        printf("請輸入i和j\n");
        scanf("%f", &i);
        scanf("%f", &j);

        printf("請輸入符號\n"); 
        scanf("%c", &sign);		
}

3.結果
https://ithelp.ithome.com.tw/upload/images/20200724/20128427uctESjJ3fb.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
glj8989332
iT邦研究生 4 級 ‧ 2020-07-24 14:59:27
最佳解答

剛學C/C++會有個經典的字元輸入問題,

給個提示, 當你程式執行到scanf("%f", &j);, 你按下Enter, 其實也把[跳行]字元也給了進去, 導致下一行的scanf("%c", &sign);已經把[跳行]字元給接收.

scanf("%c", &sign);有個改法, 就能先過濾跳行, 先嘗試在網路上找到寫法~

/images/emoticon/emoticon13.gif

看更多先前的回應...收起先前的回應...
淺水員 iT邦大師 6 級 ‧ 2020-07-24 22:40:22 檢舉

如果在 % 前面多個空格,像是: scanf(" %f", &j);
這樣遇到泛空白字元的就會自動吃掉了

glj8989332 iT邦研究生 4 級 ‧ 2020-07-24 23:02:12 檢舉

淺水員 想留提示給原PO練習找答案的說....破梗了QQ

憤怒鳥 iT邦新手 5 級 ‧ 2020-07-27 16:15:09 檢舉

抱歉,我比較晚回應,我是用getchar()得到鍵盤上的字元

glj8989332 iT邦研究生 4 級 ‧ 2020-07-27 16:36:18 檢舉

處理字元有很多種方法, getchar()也是一種~ 且它還能讀到跳行字元.

我要發表回答

立即登入回答