2010-08-09 2 views
0
#include <stdio.h> 

int main() 
{ 
    char TurHare; 

    while(1) 
    { 
     scanf("%c",TurHare); 
    printf("\nCharacter :%c", TurHare); 
} 
    return 0; 
} 

을 읽고 다음 출력이처럼 프로그램을 실행하는 동안 : w이 콘솔에서 입력scanf와 오류 내가 컴파일 할 때 문자

w 
Character : w 
Character : 

합니다.

w 
Character : w 

어떻게 그것을 할 : 같은

이 나타납니다?

답변

2

&이 누락되었습니다. 나는 getch를 추천

int main() 
{ 
char TurHare; 

    while(1) 
    { 
    scanf("%c",&TurHare); 
    printf("\nCharacter :%c", TurHare); 
    } 

return 0; 
} 

, getche는, getchar가 문자의 경우에 사용하는

재 시도로, scanf와는 후 입력 때문에 리턴 키의 그것 때문에

+0

여전히 작동하지 않습니다. 나는 그것이 있어야한다는 것을 의미하고 단지 코드를 여기에 붙여 넣었다. 그 죄송합니다. – higherDefender

+0

getch(), getchar(), getche() scanf는 문자열 및 문자와 관련된 몇 가지 문제점을 보여줍니다. char c = getchar(); –

+0

예 Enter 키를 누르면 입력 키가 stdin에 대기하고 다음 번에 stdin에서 가져 오므로 정상적으로 작동하지 않습니다 –

1

좋아 약간의 버퍼링 문제로 당신을 이끌 것입니다 w 입력. 그래서 일단 w와 다른 시간을 읽으면 행의 끝 문자를 읽습니다.

0

프로그램은 사용자가 말한대로 사용자가 입력 한 문자를 출력합니다.

이제 w을 입력하면 무엇을하는지보십시오. 당신은 2 개의 키를 치고 있습니다. w 키와 Enter입니다. 그것이 여러분이 얻는 결과입니다, 그리고 개행 (Enter 키로부터). 원하지 않으면 예를 들어.

char TurHare; 

while(1) 
{ 
    if(scanf("%c",&TurHare) != 1) { //always check for errors 
     break; //or some other error handling 
    } 

    if(c != '\n') { //or perhaps if(!isspace(c)) from <ctype.h> 
     printf("\nCharacter :%c", TurHare); 
     fflush(stdout); 
    } 
} 
1

scanf ("% c")에 버퍼링 문제가 있습니다. 많은 사람들이 fflush (stdin)를 사용하여 해결하지만 ANSI는 아닙니다.

void fflushstdin() 
{ 
    int c; 
    while((c=getchar())=='\n'); 
    if(c!=EOF) 
     ungetc(c,stdin); 
} 

main() 
{ 
    int TurHare; 
    while(fflushstdin(), !feof(stdin)&&1==scanf("%c",&TurHare)) 
    { 
     printf("\nCharacter :%c", TurHare); 
    } 
    return 0; 
} 

Windows에서는^Z로, UNIX/Linux에서는^D로 루프를 분리하십시오.

관련 문제