酷!學園

技術討論區 => 程式討論版 => C/C++程式設計討論區 => 主題作者是: student f 於 2021-03-22 02:40

主題: 請教C語言問題
作者: student f2021-03-22 02:40
題目:輸入一個英文字母,輸出其大寫字母
我打的程式碼如下:

#include <stdio.h>
int main()
{
    while(1==1)
    {
        char ch;
        printf("input char = ");
        scanf("%c",&ch);

        if(ch<90)
        {
            printf("char is : %c\n\n",ch);
        }
        else
        {
            ch-=32;
            printf("char is : %c\n\n",ch);
        }
    }
}

請問輸出時,為何會多跑出下面這一行,沒用while時不會出現,但我想讓它可以重複輸入,不知道是哪裡出錯了,麻煩大家了。

input char = char is :

主題: Re: 請教C語言問題
作者: twu22021-03-22 08:16
自己把 ch 用 %d 印出來看是什麼字再去想為什麼吧.

要精確的控制輸入, 就不要用 scanf 處理, 它的運作可能跟你想的不太一樣.
主題: Re: 請教C語言問題
作者: student f2021-03-22 12:56
目前我知道ch用%d會輸出對應的十進位碼,
寫這樣是想利用大寫和小寫差32來換算。

用 %d 印除了原本的         input char = char is :
還多了一行                     char is : 10
好神奇喔 :o :o

小弟是初學,
對scanf的運作還有其他輸入不太了解,
請問能指引一下要往那個方向去學呢?
感謝回復。