while(1) for문 scanf 관련 질문드립니다
Creator
안녕하세요.
#include stdio.h
main(){
int a[4],i;
while(1){
printf(숫자 4개를 입력하세요);
for(i=0;i=3;i++){
scanf(%d,&a[i]);
printf(%4d,a[i]);
}
printf(\n*****\n);
}
}
입력예: 1 2 3 4 5 {엔터}
위와 같이 a배열에 실수로숫자를 4개를 넘게 입력했을때 다음 while 문이실행되면 자동으로 숫자 5가 a[0]배열에 들어가게되서 곤란 해지네요......
실수로 4개를넘개 입력했을때 다시 숫자를 입력하게 할려면 어떻게 해야되나요?
아니면 4개까지만 읽고 그다음부터의 숫자는 버릴려면 어떻게하나요? 답변 해주시면 감사하겠습니다.
-
셋삥
답변감사합니다. fgets 하고 fflush 처음들어보지만 써보고 제걸로 만들어야겠네요..
-
해사랑해
printf(\\\n*****\\n\); //아래에
fflush(stdin); //를 쓰시면 어떨까요? ^^;
//쉽게? 설명하자면 입력된 버퍼를 비워준다고 보시면 됩니다. -
낶아
어떤 방법을 써야할까요?
-
철죽
답변 감사합니다 그런데... if문으로 해결할려고했었는데... if문을 이용한다면 그안에 조건문을 멀로해야할지를 모르겠네요. 아무래도 if문으로는 안되는거같기도하고..프로그램 구조자체가 잘못됬나....
-
흡뜨다
입력하자 마자 바로 입력한 것을 출력을 해야 하는 거라면 while문 안에서 a배열의 크기가 4가 넘으면 break; 시켜 버리면 되지 않을까 싶네요?? a배열의 크기를 비교하는 if문은 scanf()바로 아래에 두면 될거 같습니다..