프로그래밍

 3198, 1/160 회원가입  로그인  
   malkhankr
   C언어에서 scanf와 getchar차이가 뭔가요?

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2914 [복사]


책 예제보고 따라하다 궁금해서 여쭤봅니다.
scanf와 getchar 둘다 입력값을 가지고 오던데 어떤 차이가 있는건가요??

  Hit : 36787     Date : 2011/03/16 01:36



    
$Zero scanf 는 주로 변수에 값을 입력받을때 사용하고 .. getchar은 표준 입력으로부터 아무 값이나 한개 읽어올때 사용됩니다.
scanf는 %s 같은 서식문자로 문자열을 읽어올 수도 있지만 getchar은 무조건 1개의 데이타만 읽어옵니다.
만약 .
char ch;
scanf("%c" , &ch);
getchar(ch);

가 있다면 둘다 같은효과의 문장이 됩니다.
2011/03/16  
$Zero 전 getchar() 함수는 대부분 자동 pause가 되지 않는 컴파일러로 컴파일할때 정지용도로 사용합니다. .

리턴 전에 한번 호출해주면 입력대기상태로 프로그램이 블럭상태로 넘어가거든요 .. dev같은 컴파일러를 사용할때 자주 애용합니다.
2011/03/16  
dokokou getchar는 버퍼에서 가장 앞에 대기하고 있는 하나를 가져오는 거라고 배웠습니다.

저는 보통

scanf("%c", &a);
scanf("%c", &b);

하면 a는 입력이 되는데 b는 자동적으로 넘어가 버리는 경우가 있는데 그럴때

scanf("%c", &a);
getchar();
scanf("%c", &b);

해줘서 푸는 용도로 쓰고 있습니다.
2011/03/16  
$Zero dokokou // 그 다음 scanf문이 엔터의 리턴값을 읽어버려서 넘어가는 경우네요 ㅎㅎ;
getchar(); 보단 fflush(stdin) 이 좀더 가독성이 좋지 않을까 싶네요
2011/03/16  
별빛을담아 www.winapi.co.kr

여기가면 각 함수의 역할을 다 알려줍니다.
2011/03/16  
malkhankr getchar는 원래 용도로는 많이 사용하진 않는군요~ㅎㅎ
감사합니다~~ㅎㅎ
2011/03/16  
malkhankr 추가로 궁금한거 하나 더 여쭤볼게요~
API와 SDK의 차이는 뭔가요?
API는 Application Program Interface고
SDK는 Software Development Kit건 알겠는데 무엇이 다른지 궁금합니다~
2011/03/16  
별빛을담아 SDK는 정리하자면 소프트웨어 개발키트 즉, 프로그래밍을 할 수 있게 도와주는 도구들을 말하구요.
API는 정말 간단히 말하자면 일반적인 검은 화면에서 굴러가는 프로그램이 아닌
윈도우처럼 창을 가지고 있는 프로그램을 말한다고 보시면 되요
2011/03/17  
$Zero getchar 가 유용하게 쓰이는 상황은 어거지로 뽑아보자면 .. 메모리 부족일때 정도되겠네요 ..
예를들어
버퍼에 데이터를 입력하고 출력하는 프로그램을 작성할때
char buf[100];
scanf("%s" , buf); 같은 형태가 나오겠죠 ?
위 예제는 버퍼의 용량이 100byte이므로 100byte조차 사용할 수 없는 곳에선 사용이 불가능해지죠 .
반면에
char ch;
while(1)
{
ch = getchar();
printf("%c" , ch);
}
같이 쓰면 메모리를 1바이트만 사용하고도 동일한 효과를 낼 수 있습니다.
하지만 , 메모리 부족현상이 쉽게 접할 수 있는게 아닌데다가 .. 요새 메모리 부족현상이 일어날지도 의문이라 . .쓰일일은 없겠죠 .. 메모리 확보보단 성능이 더 중요시 되니까요 .
2011/03/17  
dawon15 별빛 님 께서 설명해주신 API는 win32API구요
원래 API는 아시는대로 Application Programming Interface의 약자로
간단히 말하자면 함수들의 집합입니다…
윈도우즈 API라고 하면 윈도우즈에서 사용되는 함수들의 집합이죠…
2011/03/18