1. fflush(stdin)2. rewind(stdin)3. while( (c = getchar()) != '\n' && c != EOF)
rewind는 간편해서 좋아보이는데... 제대로 동작하지 않는 경우 있나요?
3번의 경우는 다들 가르치는 만큼, 문제가 없을 거 같긴 한데...
fflush(stdin)이 괜찮은거 같은데
그건 window에서만 되는거라 많은 채첨 사이트에서는 효과없는거 같고..
전 그 fgets로 한줄 통째로 받고 sscanf로 받는 것도 나쁘지 않은거 같아요
입력버퍼를 비워야하는상황은 어떤상황인가요?
대부분의 입력은 scanf 와 공백을 이용하여 받을 수 있습니다.
아.. 상황설명이 제대로 안됐네요.
엔터키로 입력받는 경우입니다~
줄 단위로 입력을 받는 방법은
gets 함수를 이용하시면 됩니다.
그와 달리 뭔가 특수한 케이스가 있으신가요?
scanf 함수를 이용해서 입력을 받을 때, 엔터키로 입력을 마감하는 경우 입니다.
gets 함수를 쓰면 이런일이 없나요??
대회에서 scanf를 쓰지 못하게 하는 이유가 있나보네요.
음 질문이 좀 난해해서 그런데
scanf("%s");
가 입력을 줄단위로 받지않고 띄어쓰기 단위로 받는데
이걸 줄단위로 받고싶다는 말씀이신가요?
그렇다면 gets함수로 받아올 수 있구요.
줄단위로 받을때, 줄에 내용이 없을때까지 반복하는것은
while(gets(a), a[0]) 같은 방법으로 받을 수 있구요.
대회에서 scanf를 쓰지 못하게 한다는건 저는 처음들어보네요..
참고로 scanf(" %s") 같이 앞에 공백울 붙여주면
공백이나 개행같은 버퍼를 무시하고 입력을 받아올 수 있습니다.
죄송합니다. 질문이 많이 난해합니다 ㅠㅠ
char c; int a;
scanf("%d",&a); scanf("%c",&c);
이 경우, 10진수 정수 a를 입력받고 엔터를 누를경우 개행문자가 남아있어 char형 c 변수 입력을 건너띄게되는 문제를 해결하는 방법 중 어느것이 좋은 지에대한 질문이었습니다. %s의 경우와는 다르게, 하나의 문자만을 입력받는 경우입니다.
아 이해했습니다.
그런경우는 scanf(" %c",&c); 처럼 앞에 공백을 붙여주면 %d 이후의 공백문자열이 제거가 됩니다.
제가 지금까지 문제를 푸는 과정에서는 scanf, gets 이외의 입력함수를 사용하지 않아도 문제가 없었습니다.
따라서 저 두 함수를 잘 이용하시면 될 것 같습니다.
감사합니다 ㅎㅎ
맨 처음 질문에 1번은 표준이 아니고, 2번또한 어딘가에 문제가 있다고 들었습니다. 3번은 귀찮고.... 앞으로는 scanf(" %c")를 애용해야겠네요.
댓글을 작성하려면 로그인해야 합니다.
whgusfud 8년 전
1. fflush(stdin)
2. rewind(stdin)
3. while( (c = getchar()) != '\n' && c != EOF)
rewind는 간편해서 좋아보이는데... 제대로 동작하지 않는 경우 있나요?
3번의 경우는 다들 가르치는 만큼, 문제가 없을 거 같긴 한데...