| 
鐵幣1626 元文章1976 篇聲望747 枚上次登入15-1-17精華13註冊時間04-9-25UID53390
 
 | 
        
        
25鐵幣 
| getchar輸出,一次一個字元,最後一個是什麼字元? 
 #include<stdio.h>#include<stdlib.h>
 main(){
 char a;
 do {
 a = getchar();
 printf("%c%d " , a ,sizeof(a));
 
 }while(a != 'e');
 system("pause");
 }
這是一個輸入字串的程式
 字串中遇到e就會停止
 螢幕上會依序顯示出每個字元,並且在字元後面顯示出該字的記憶體大小(byte)
 執行結果如下
 
 magicalm1 a1 g1 i1 c1 l1
 1
請問最後面那個一是什麼?
 如果是\n字元的話,為什麼它會再下一行出現?
 
 
 有人教我使用ACSII碼看看
 所以我改成
 
 
 複製代碼
#include<stdio.h>
#include<stdlib.h>
main(){
       char a;
       do {
           a = getchar();
           printf("%c%x%d " , a , a ,sizeof(a));
           
           }while(a != 'e');
       system("pause");
       }
 結果如下
 
 複製代碼
magical
m6d1 a611 g671 i691 c631 a611 l6c1
a1 
是a1耶,不過這個代表什麼意思= =?
 
 而且最後一個字原因該是什麼東西才對?
 
 會是\n?
 還是\0?
 
 [ 本文最後由 magicalloveshe 於 07-7-12 12:53 AM 編輯 ]
 | 
 
最佳解答
傲月光希 檢視完整內容 為什麼會這樣?
我們要輸入字元時,輸入完畢後一定都會按ENTER
ENTER這個鍵在程式中有兩種涵義
第一個就是將輸入的字元存到變數中,第二就是將剩下的字元存在暫存區
當輸入完一個字元時,按一下ENTER,其實這個動作不只是只有你輸入的那個字,還有換行字元\n
因為迴圈的關係,當第一次輸入完m時,enter會將m存到變數a裡,然後將\n存到暫存區
經過迴圈之後,又回到要輸入的地方
這時候,變數a會自動的讀取到\n這個換行字元,並 ... 
 |