2011-09-19 2 views
3

와 정수 입력을 읽고 :예기치 putchar 출력 I이 프로그램을 통해가는 getchar가

#include<stdio.h> 

main() 
{ 
int c; 

c = getchar(); 

while(c != EOF) { 
    putchar(c); 
    c = getchar(); 
    } 
} 

가변 c 이후는 지정된 입력에 대한 정수 상응하는 값을 저장한다 정수이다. 출력이 'a''a', 'b''b', 'c''c'으로 표시되지만, 65이라는 값을 입력하면 출력도 65입니다! 따라서 값이 65이고 문자가 'a' 인 저장 형식에는 약간의 차이가 있어야합니다.

어떻게 두 값이 서로 구별됩니까?

+0

예, '6'과 '5'를 누르면 출력은 '65'가됩니다. 정수 값을보고 싶다면 printf ("% d", c);를 사용하십시오. –

+0

전체 사진에 대해'putchar (c)'다음에'putchar ('\ n')'을 추가하십시오. –

답변

2

입력 65이 두 개의 다른 문자 입력으로 간주되어 프로그램이 순차적으로 인쇄하기 때문입니다.

6을 입력하면 프로그램이 즉시이를 읽고 EOF이 아닌지 확인하여 콘솔에 출력합니다. 그런 다음 5을 입력하면 다시 입력으로 사용됩니다. 이 값도 EOF이 아니므로 프로그램에서 다시 인쇄합니다.

그래서 두 개의 문자를 입력하면이 프로그램은 정상적으로 콘솔에 올바르게 인쇄합니다. 그 외에는 차별이 없습니다. a의 정수 해당하는 65, 그래서이 같은 문자를 인쇄하면 65를 출력합니다 -

char c = 'a'; 
printf("%d", c); // will print 65 

을하고이 a 인쇄됩니다 -

귀하의 코드를 작성 정확하게 실행으로
int i = 65; 
printf("%c", i); // will print a 
1

그러나이 , 혼란은 프로그램에 주어진 입력에 대한 이해와 함께 있습니다.

65을 입력하면이 문자는 '6''5'의 두 가지 형식화 된 문자로 해석됩니다. 당신이 언급했듯이, 이것은 while 루프에서 putchar(c)이 호출 될 때마다 콘솔에 에코 될 것입니다.

1

아니요, 65 및 'a'의 저장에는 차이가 없습니다. 이들 중 하나를 변수에 할당하면 똑같은 결과가 나타납니다. 차이점은 char의 입력과 출력에만 관련이 있습니다. 예 : printf ("% c", 65)는 printf()의 정의의 일부이기 때문에 'a'를 산출합니다. 언급 한 다른 두 기능, 즉 putchar()getchar()에 대해서도 마찬가지입니다.

관련 문제