iT邦幫忙

0

[新手]C語言程式問題-->計算字母數量小程式

目前在打關於輸入資料後計算並列出各字母數量的小程式。
在單純列出陣列初始值的時候沒有問題,但在打了中間條件判斷後就沒辦法如預期輸出了。
找了很多資料也寫的和教學一樣,但都無法輸出列表。
查看程式編譯沒有偵測到問題,不知道是哪邊出錯了,想問大大們中間哪邊有bug的地方......非常感謝!

#include <stdio.h>
#include <ctype.h>

int main(void)
{
    
    int alphaCnt[26]={0};
    int c, i;
    int idx;

while((c=getchar()) !=EOF){
    
    if(isalpha(c)){

        if(isupper(c)){
        
            idx = c - 'A';
            alphaCnt[idx] ++ ;
            
        }

        else{
        
            idx = c - 'a';
            alphaCnt[idx] ++ ;
            
        }
    }
}


for (i = 0; i < 26; i++)
{
    printf("%c\t%d\n", 'a' + i, alphaCnt[i]);
}

return 0;

}
請寫出你輸入的資料
因為
我輸入abcdEFGH0932110983!!@#$%@#%aklasdfjasklnzxc,vmwoeir都不會錯
我是使用標準輸出,在終端輸入一些簡單英文單字像picture或apple的資料。
買包乖乖就行了
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2020-10-03 20:02:17
最佳解答

這裡測試
都正常耶...
https://ithelp.ithome.com.tw/upload/images/20201003/20001787NNNDmaUYIe.png
https://ithelp.ithome.com.tw/upload/images/20201003/20001787KWl6MkezH2.png

這好像是 VSCode 的情形
不是程式的問題
Yes

看更多先前的回應...收起先前的回應...

毛毛的

我這邊是這樣情況,輸入enter換行後就沒東西了。
不過還是謝謝大神讓我知道我的程式是能動的了。
https://imgur.com/a/adDOEWA

while((c=getchar()) !=EOF){

改成

while ((c=getchar()) != '\n') {

試試看

這樣就跑得動了,非常感謝!
https://imgur.com/a/gDppvC7

0
小魚
iT邦大師 1 級 ‧ 2020-10-03 21:51:38

我不知道EOF要怎麼讓它結束,
所以我把EOF改成'\n',
執行起來是正常的.

我覺得問題可能出在你按Enter的時候出現的和你預期的不一樣,
你可能要下中斷點去抓你按Enter的時候發生了什麼事.

在windows下,EOF要輸入 CTRL+Z。 試試看!

我要發表回答

立即登入回答