2016-06-30 2 views
2

мой код приведен нижемассив символов считывает 3 входа вместо 5 в c?

#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 сказал, любой вход вы должны будет принимать два символа в качестве входных данных, потому что вы набираете в затем Введите, который C гласит a и \n так что два символа, а не один.

+0

это объясняет это. ввод символов в символы без пробелов в одной строке решает проблему. –

Смежные вопросы