目前在打關於輸入資料後計算並列出各字母數量的小程式。
在單純列出陣列初始值的時候沒有問題,但在打了中間條件判斷後就沒辦法如預期輸出了。
找了很多資料也寫的和教學一樣,但都無法輸出列表。
查看程式編譯沒有偵測到問題,不知道是哪邊出錯了,想問大大們中間哪邊有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;
}
到這裡測試
都正常耶...
我這邊是這樣情況,輸入enter換行後就沒東西了。
不過還是謝謝大神讓我知道我的程式是能動的了。
https://imgur.com/a/adDOEWA
while((c=getchar()) !=EOF){
改成
while ((c=getchar()) != '\n') {
試試看
這樣就跑得動了,非常感謝!
https://imgur.com/a/gDppvC7
我不知道EOF要怎麼讓它結束,
所以我把EOF改成'\n',
執行起來是正常的.
我覺得問題可能出在你按Enter的時候出現的和你預期的不一樣,
你可能要下中斷點去抓你按Enter的時候發生了什麼事.