scanf와 키보드 버퍼 관련해서 질문이요^^
딥레드
#include stdio.h
void main()
{
int data1, data2, ret;
char code;
printf(두 값을 입력받아서 덧셈과 뺄셈을 하는 프로그램입니다\n);
printf(첫번째 값을 입력하세요 : );
scanf(%d,&data1);
printf(두번째 값을 입력하세요 : );
scanf(%d,&data2);
printf(덧셈과 뺄셈 코드를 입력하세요.\n);
fflush(stdin);
printf(덧셈 : + \n);
printf(뺄셈 : - \n);
printf(+와 - 중에서 하나를 선택하세요 : );
scanf(%c,&code);
ret = (code == ) ? (data1 + data2) : (data1 - data2);
printf(%d, ret);
}
위와 같은 소스코드에서
스캔에프가 3번쓰였자나요?
근데 1번째 스캔에프 다음에
fflush(stdin)을 안써주는 이유가 뭐죠?
fflush(stdin) 써주는 이유가 키보드 버퍼에 남아있는 엔터 등의 값들을 지우는 거인데..
그럼 두번째 스캔에프 쓸때 엔터키값이 남아있기 떄문에..
두번째 스캔에프가 정상적으로 작동 안해야 되는거 아닌가요??
궁금합니다^^
-
아메
scanf에서 %c로 입력을 받을 경우에만 버퍼에 엔터가 남아있게 됩니다.
-
미나래
%d는 버퍼에서 아라비아 숫자를 읽기 전에는 모든 공백 문자(스페이스, 탭, 개행)를 버퍼에서 읽어냅니다.
일단 아라비아 숫자를 읽은 후에는 아라비아 숫자가 아닌 문자를 만나는 순간 숫자 입력을 종료합니다. 이때 이 숫자가 아닌 문자는 버퍼에 남아 있게 됩니다.
%c는 버퍼에 있는 한 문자를 읽어들입니다. 숫자이든 알파벳이든 공백 문자이든 상관 없이요.
%s는 %d처럼 선행 공백 문자들은 읽어서 버리고(저장하지 않고), 공백 문자가 아닌 문자를 읽은 -
알
그리고, %d는 숫자가 입력될 때 자동으로 다음 문자들을 skip 하기 때문에, 입력 버퍼를 비우지 않은것입니다. 그러나 %c는 문자를 받기 때문에 개행 문자가 입력될 우려가 있어서 앞에 입력 버퍼를 지우는 조작(fflush(stdin))을 한것 같군요.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2655471 | 링 버퍼 구현된 소스 인데요.. 이해가 잘안되서요.. | 소심한녀자 | 2024-05-20 |
2655440 | test파일이 안 되요. (2) | 리라 | 2024-05-19 |
2655416 | 고수님들 도움이 절실합니다. (2) | 세리 | 2024-05-19 |
2655361 | 엔터 입력받을때까지 기다리는 getchar (1) | 큰모음 | 2024-05-19 |
2655328 | 함수에서 포인터 (3) | 모아 | 2024-05-18 |
2655299 | 아이콘바꾸는법..? | 소 | 2024-05-18 |
2655271 | scanf 입력받으면 쭉 실행되는.. (5) | ComeOn | 2024-05-18 |
2655184 | 이 세개 프로그램좀 해결해주실.... 고수님들???? (3) | 말달리자 | 2024-05-17 |
2655129 | 다차원 배열 원소들 주소계산하는거 질문이요~ | 터전 | 2024-05-17 |
2655103 | AVRstudio MoveAxis. MoveLine 함수질문 | 앨버트 | 2024-05-16 |
2655072 | 콘솔창의 위치와 크기를 정하고 싶습니다. | 딥레드 | 2024-05-16 |
2655044 | 자료구조랑 online judge site에 대해서 질문있습니다... (1) | 뽀송뽀송 | 2024-05-16 |
2655016 | 별찍기 문제 중 이해안되는 부분이 있어요... | 도전중 | 2024-05-16 |
2654986 | 입력받은 성적을 배열에 저장하기 (3) | 안녕나야 | 2024-05-15 |
2654959 | ===========-이런거 미리 지정하는법 (1) | 김자영 | 2024-05-15 |
2654930 | 도와주십시요 ㅜㅜ 자료구조 ㅜㅜ | 도널드 | 2024-05-15 |
2654881 | PID 모듈 검색 부분 질문합니다 . | 이름없음 | 2024-05-14 |
2654850 | 조건에 만족하는 다음 수를 찾고 싶습니다. | 초엘 | 2024-05-14 |
2654790 | 두파일간 byte단위 txt파일 복사 中 | 슬찬 | 2024-05-14 |
2654768 | 사전만들기 입니다. | 여우By | 2024-05-13 |