-
C언어 반복문제어 (break, continue, goto)Visual Studio/C 기초 2012. 9. 8. 17:20
break
반복문인 while, do-while, for문에 대해 배웠죠? 필요에 따라선 제어할 필요가 있습니다. break, continue 문을 사용하면 됩니다.
for(count = 0; count <10; count++)
{
if(count ==5)
break;
}
이렇게 되면 count값이 5가 되면 count값이 10이 되기전에 반복문이 종료됩니다.
간단한 예제를 보겠습니다.
#include <stdio.h>
char s[] = "문자열 테스트입니다. 두 개의 문자열입니다.";
main(){
int c;
printf("원형의 문자 : %s\n", s);
for(c = 0; s[c] !='\0'; c++) //NULL 문자가 출력되기 전까지만 반복합니다
{
if(s[c] == '.') //만약 s[c] 값에서 마침표가 나온다면의 경우
{
s[c+1] = '\0'; //그 바로 앞에 NULL값을 입력하고
break; //반복문을 끝냅니다.
}
}
printf("변경된 문자 : %s\n", s);
}결과
마침표에서 반복문을 종료시켰기 때문에 '문자열 테스트입니다.' 까지만 출력됩니다. 만약, 마침표를 넣지 않았다면 break문은 발동하지 않았겠죠.
깍두기로 무한루프 문을 보여드릴게요
#include <stdio.h>
main(){
int x;
for(x = 0; ; x++) // 조건이 없으므로 무한반복합니다.
printf("%d\n", x);
}이런식으로 무한 반복하게 되는데요, while, do-while 문을 무한반복 시킬 땐 while(1) 처럼 조건식에 1을 적어주시면 됩니다.
continue
break문과 마찬가지로 continue 문은 반복문에서만 사용될 수 있습니다. continue문이 실행되면 제어는 반복문의 마지막 부분으로 전달되고 다음 반복 동작이 시작됩니다. continue문과 반복문의 마지막 부분 사이에 있는 문장은 실행되지 않습니다. 모음문자를 제외한 문자를 출력하는 예제를 보겠습니다.
#include <stdio.h>
main(){
char str[80];
int ctr;puts("문자를 입력해주세요 : ");
gets(str);
for(ctr = 0; str[ctr] !='\0'; ctr++)
{
if(str[ctr] == 'a' || str[ctr] == 'e' || str[ctr] == 'o' || str[ctr] == 'u' || str[ctr] == 'i') //다음에 연산자에 대해 자세히 알아보겠습니다.
continue;
putchar(str[ctr]);
}}
hi, my name is james han 을 입력해보겠습니다.
결과
모음을 제외한 나머지 문자가 출력됐죠? continue 문이 들어간 문장은 출력되지 않고 건너뜁니다. 정확히 말하자면 현재 상태를 마치고 다음 반복 동작을 수행합니다.
goto
goto문은 C언어에서 조건 없이 이동하거나 분기하는 명령중 하나입니다. 프로그램에서 goto 문이 나타날 때 제어에선 즉시 goto 문에 의해 지정된 위치로 이동하거나 분기합니다. goto문이 실행될 때는 조건없이 발동합니다. 예제를 보겠습니다.
#include <stdio.h>
main(){
int n;
start:
puts("0부터 10까지의 숫자중 하나를 선택해주세요 : ");
scanf("%d",&n);
if(n < 0 || n>10)
goto start; //start로 갑니다.
else if(n==0)
goto location0; //location0으로 갑니다.
else if(n==1)
goto location1; //location1로 갑니다.
else
goto location2; //locaiont2로 갑니다.location0:
puts("당신은 0을 입력하였습니다.\n");
goto end;
location1:
puts("당신은 1을 입력하였습니다.\n");
goto end;
location2:
puts("당신은 2와 10까지 중 어느 숫자를 입력하였습니다.\n");end:
}
이렇게 조건문과 같이 사용할 경우 조건에 맞을 때 자신이 지정한 곳으로 이동하게 됩니다.
하지만 goto문을 사용하는 프로그램은 거의 없으며 goto문을 사용하지 않는게 좋습니다. 그냥 이런 선언문만 있다고 생각하시면 되고, 프로그램이 분기될 때 어디로 분기될지 알 수 없으므로 프로그램이 혼란스러워 집니다.
다음엔 swich에 대해 알아보겠습니다.
'Visual Studio > C 기초' 카테고리의 다른 글
C언어 고급포인터 (0) 2012.09.13 C언어 switch (0) 2012.09.10 C언어 변수의 범위 (0) 2012.09.07 C언어 구조체 멤버로 사용되는 포인터 (0) 2012.09.07 C언어 구조체와 배열 (0) 2012.09.06