2016-06-30 5 views
2

私のコードは文字配列はcで5ではなく3つの入力を読み込みますか?

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

#define size 5 

void main(){ 

    int i; 
    char letter[size]; 
    for(i=0;i<size;i++) 
     letter[i]=getchar(); 
    for(i=0;i<size;i++) 
     putchar(toupper(letter[i])); 
} 

の下に与えられ、出力は次のようになります。

[email protected]:~$ gcc test.c 
[email protected]:~$ ./a.out 
a 
s 
d 
A 
S 
D 

ですが、なぜでしょうか? 5文字を読み上げて大文字に変換することでした。

+9

貧しい無視された ''\ n'' ... – EOF

+0

端末がどのように動作するかを少しずつ読んでおく必要があります。 [this](http://stackoverflow.com/questions/421860/capture-characters-from-standard-input-without-waiting-for-enter-to-be-pressed) – JJF

+0

@EOFは確かに正しいです。あなたのコメントを答えに広げました。 –

答えて

3

EOFは、あなたがしてはので、2つの文字ではなく、一つでaようと\nC読み取りを入力しに入力しているので、あなたが持っている任意の入力は、入力として2つの文字を取っされます言ったように。

+0

これで説明します。同じ行にスペースを入れずに文字を入力すると問題が解決します。 –

関連する問題