[問題] C語言新手...如何中斷WHILE

看板C_and_CPP作者 (nopicnic)時間15年前 (2009/08/23 14:41), 編輯推噓3(3015)
留言18則, 4人參與, 最新討論串1/2 (看更多)
小弟剛接觸C語言不久.. 自己翻書學習,寫了一個這樣的程式: #include <stdio.h> int main() { char grade; int acount=0; int bcount=0; int ccount=0; char Z = 'Z'; printf("enter the letter grades\n"); printf("enter the eof to end\n "); while( scanf("%c",&grade) != Z ){ //就是上面這一行,我想要當輸入Z時可以跳出WHILE迴圈,但是實際上在執行時卻無法 //麻煩各位高手指導... switch(grade){ case 'a': case 'A': ++acount; break; case 'b': case 'B': ++bcount; break; case'C': case'c': ++ccount; break; case '\n': break; case 'X': printf("XXX"); default: printf("error\n"); } } printf("\n"); printf("grade a is %d\n",acount); printf("grade b is %d\n",bcount); printf("grade c is %d\n",ccount); return 0; } 程式當中WHILE跳離的條件是輸入為Z,但是COMPILE過後執行輸入Z卻無法跳出.. 請問問題在哪裡? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.187.9

08/23 14:46, , 1F
08/23 14:46, 1F

08/23 14:49, , 2F
08/23 14:49, 2F

08/23 14:51, , 3F
不對請修掉我的推文 thx
08/23 14:51, 3F

08/23 14:51, , 4F
把我也修掉XD
08/23 14:51, 4F

08/23 14:52, , 5F
糟糕我不會修文...能教一下嗎...
08/23 14:52, 5F
※ 編輯: nopicnic 來自: 114.39.187.9 (08/23 14:52)

08/23 14:52, , 6F
E
08/23 14:52, 6F

08/23 14:53, , 7F
ok刪掉囉~@@可是我還是不知道怎麼解決這個問題....
08/23 14:53, 7F

08/23 14:54, , 8F
scanf("%c",&grade)&&grade!='Z' 我都是這樣寫的
08/23 14:54, 8F

08/23 14:55, , 9F
另外scanf %c會抓到enter 所以我會在while裡面加getchar
08/23 14:55, 9F

08/23 14:57, , 10F
謝謝你~~~
08/23 14:57, 10F

08/23 14:58, , 11F
如果寫scanf("%c",&grade)!='Z'的意思是
08/23 14:58, 11F

08/23 14:58, , 12F
scanf的回傳值!=Z的ascii值
08/23 14:58, 12F

08/23 15:07, , 13F
真的太感謝你了...!!!
08/23 15:07, 13F

08/23 15:08, , 14F
while( scanf("%c",&grade) &&grade != 'z' )
08/23 15:08, 14F

08/23 15:08, , 15F
跟 while((grade = getchar() ) != 'Z' ) 都可以囉~~
08/23 15:08, 15F

08/23 15:15, , 16F
剛學c不久,很多基本問題都還不清楚,真的很謝謝你~
08/23 15:15, 16F

08/23 15:44, , 17F
scanf會傳回成功讀取的數目 不是傳回讀取的值
08/23 15:44, 17F

08/24 00:38, , 18F
謝謝樓上~
08/24 00:38, 18F
文章代碼(AID): #1AaEIrGB (C_and_CPP)
文章代碼(AID): #1AaEIrGB (C_and_CPP)