PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2009/05/13 22:48:11
Name Magic_'Love'
Subject 간단한 c언어 질문드립니다.
입력을 받으려고 하는데요.
보통 입력은

scanf("%d", &num);

이런식으로 하잖아요 여러개를 받고 싶으면

scanf("%d %d %d", &num1, &num2, &num3);

이렇게 하구요..

그런데 여러개를 입력받는데 몇개를 입력받는지 모르는 상태에는 어떻게 해야할까요?

입력 : 40 50 30 20 10 90 80 24 59   <- 이런식으로 입력받을건데요..

2개, 3개, 4개...몇개를 입력받는지는 알 수 없습니다. 입력하는 사람 맘대로 하는 거거든요.
다만 10개 이하까지만 된다... 정도는 알 수 있다고 가정하구요..
저걸 배열을 하나 둬서 입력받아야 할 것 같은데 어떻게 할지 잘 모르겠습니다.

이걸 어떻게 처리해야 할까요?

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/05/13 22:56
수정 아이콘
차라리 죽 받아서 자르는 편이 쉬울 수도 있겠네요..
WizardMo진종
09/05/13 23:06
수정 아이콘
음;;; 보니까 기초부분을 배우시는거 같은데 나중에 포인터와 함수 그리고 콜바이밸류와 콜바이레퍼런스 개념이 잡히시면 이해를 하실수 있을텐데요. 지금은 그냥 '이렇게 하면 불편하다' 정도로 넘어가시는게 좋을겁니다. 원하시는 대로 하려면 C언어 문법 젤뒤쪽에 있는 메모리 할당과 스트립까지 가야될꺼 같습니다;;;;(제가 알기로는 그렇습니다. 다른분이 반박해주실수도있음...)

저걸다 문자열로 받아서 중간에 블랭크 부분에서 끊어가면서 개수로 체크하는 방법이 있는데 그걸 구현하시긴 좀 어려울꺼고

숫자를 입력하기전에 입력할 숫자를 입력하고 그에맞춰서 SCANF문을 스위치케이스 문으로 개수만큼 구현해도 될꺼 같은데 그건좀 노가다고,,
꼭 한번에 받아야 하는게 아니면 그냥 하나씩 받으시길;;;
09/05/13 23:09
수정 아이콘
방금 생각을 좀 해봤는데.. Scanf를 무한히 돌리면서, 특수한 문자가 나오면 루프를 빠져나오게 하는 방법도 있겠네요.
WizardMo진종
09/05/13 23:13
수정 아이콘
Shura님// enter라면 가능할텐데 공백으로 띄여쓰기 하는것도 구현되나요? 안될꺼 같은데;;
사랑받고있어
09/05/13 23:17
수정 아이콘
저는 그냥 gets로 줄 통째로 입력받고 파싱하는거 밖에 안 떠오르네요;
hIkArU wAkAnA
09/05/13 23:19
수정 아이콘
저도 문자열로 받아들여 공백값으로 토큰(파싱)하고 숫자값으로 바꾸어주는 방법밖엔...
09/05/13 23:22
수정 아이콘
WizardMo진종님// 흠..질문이 잘 이해가 안가네요; 저는 그냥 대충 이상한 알파벳 같은 걸 넣으면 끝나게 할 생각이었거든요;
WizardMo진종
09/05/13 23:24
수정 아이콘
질문하신분이 말씀하신게 도스창에서 커맨드 깜빡이고 숫자를 스페이스로 띄어서 입력하는거 같거든요... 그니까 scanf 를 한번 사용하되 들어오는 입력값은 랜덤이 되게,,, 숫자간의 구별 을 enter로 한다면야 루프 만들고 그안에 카운터 하나 넣어서 한번 받을때 배열에 넣고 버퍼 날리고 카운터 하나 증가시키면서 특수문자때까지 scanf무한정 돌리면 될거 같긴 합니다만 주르륵 들어오는것도 그렇게 해결을 하신거 같아서 질문드린거였습니다
09/05/13 23:29
수정 아이콘
WizardMo진종님// 입력하는 숫자의 개수가 랜덤이라면.. scanf 한번으로는 해결하기 힘들 것 같습니다.
전 처음에 생각한게

while(1)

scanf
if ( 특수문자) break;


뭐 이런 것이라서.. 허허.. C를 접한지도 어언 4년 째인데, 저도 아직 멀었나 봅니다.
MoreThanAir
09/05/13 23:37
수정 아이콘
(1) 문자열로 입력 받은 다음 스페이스 바를 토큰으로 숫자로 걸러내는 방법
(2) do while 문 사용으로 문자열을 입력 받고 그 문자열이 종료문자열이면 입력을 멈추는 방법

정도가 떠오르네요.
09/05/14 01:06
수정 아이콘
도움이 될지는 모르겠지만 어쨋든 구현하기 위해서라면 제코드도 한번 참고해 보세요

#include <stdio.h>

void main()

int a[10];
int n;
int i;

n=0;
do{
scanf("%d",&a[n++]);
while(stdin->_cnt > 1);

for(i = 0;i<n; i++)
printf("%d ",a[i]);
}
vc++ 6.0 에서 잠깐 테스트 해봤는데 일단은 돼네요. 저기 while안에 _cnt의 경우는 버퍼안의 남은 바이트 수라 보시면 되는데, 데이터가 남아 있다면, scan 하는 코드입니다. 1보다 커야하는 이유는 일반적인 입력으로 하면 마지막에 \n 한바이트가 기본적으로 있기 때문에 이걸 제외한 데이터가 있는지 확인하는 의미입니다.
위 코드가 아마 윈도우에서만 돌아갈거라서 좋은 코드는 아니지만, 이런 방법도 있다는 것을 아는 차원에서 추가했습니다.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
55590 이지니닷컴? 믿을만한가요?? [1] 날아라드랍쉽2089 09/05/14 2089
55589 망했네요.... 제가 무슨짓을 한건지... 아... [12] 본좌유키2864 09/05/14 2864
55588 여행지 관해서 질문 할께요! [1] 레몬막걸리1909 09/05/14 1909
55587 백화점과 연계한 기부,모금 행사 아이디어 부탁드려요 [2] 안녕,미미1781 09/05/14 1781
55586 호주 주소에 관해 질문 좀 드릴게요. [2] 노때껌2140 09/05/14 2140
55585 저희학교에서 스타리그 를 개최합니다. [8] 스웨트2087 09/05/14 2087
55584 협회들에 대한 질문입니다. [2] 강마에1601 09/05/13 1601
55582 익스플로워만 인터넷이 안되시는 분? La Luna2011 09/05/13 2011
55581 대학 4학년 정장 질문입니다. [10] Xell0ss2290 09/05/13 2290
55580 9드론과 1배럭의 유리함에 대해서 테저전 질문입니다. [18] 스타원츄2910 09/05/13 2910
55579 대학교 교직원 들어가기 많이 힘든가요? [6] 우리결국했어2702 09/05/13 2702
55578 O₂분자오비탈 전자배치 질문좀요..ㅠ.ㅠ화학잘아시는분들.. [4] 불타는오징어3587 09/05/13 3587
55577 당구 수지에 대한 질문입니다. 3구&4구 [4] 고지를향하여4262 09/05/13 4262
55576 간단한 c언어 질문드립니다. [11] Magic_'Love'1934 09/05/13 1934
55575 남자 긴머리 vs 짧은머리 [33] 삭제됨13621 09/05/13 13621
55574 컴퓨터 견적 문의(가격) [1] SlamMarine1668 09/05/13 1668
55573 구글 크롬, 갑자기 인터넷 접속이 안되네요 [1] Lainz1771 09/05/13 1771
55572 이어폰 추천 부탁드립니다!!! [7] slre2071 09/05/13 2071
55571 모니터 관련질문이요.. [2] Dis-v1647 09/05/13 1647
55569 키보드가 이상이 있습니다... [3] Schizo1532 09/05/13 1532
55568 여친 친구들과 만나는 자리... [10] Toby3056 09/05/13 3056
55567 지포 라이터 쓰시는 분들 있으신가요? [3] 주먹이뜨거워2342 09/05/13 2342
55566 시계수리문제 길태훈1926 09/05/13 1926
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로