쥬신 님이 쓰신 글 :
: 배열로 문자열을 넣는 프로그램입니다. 1~6까지는 나오지만 0이 나오지가 않네요. 혹시 이상한 부분이나 이해가 안되는 부분이 있으면 주저하지 않고 글을 올려주시기 부탁드립니다. 그럼 감사합니다.
:
:
:
:
:
: //---------------------------------------------------------------------------
: #include <stdio.h>
: #include <conio.h>
: #pragma hdrstop
:
: //---------------------------------------------------------------------------
:
: #pragma argsused
: int main(int argc, char* argv[])
: {
: char ch1[10]= "abcdef";
: char ch2[4] = "abc";
:
: int k,c;
: scanf("%d",&k);
: for(int i=6;i>=0;i--)
: {
: if(i==k-1)
:
: {
: for(int j=0;ch2[j]!='\0';j++)
: {
: ch1[j+k]=ch2[j];
: }
: printf("%s",ch1);
: }
:
: ch1[i+3]=ch1[i];
: }
: getch();
: return 0;
: }
: for(int i=6;i>=0;i--)
이므로 이 루프 안에서 i의 최저값은 0입니다.
k가 0이면 if(i==k-1)는 if(i==-1)이 되어 위의 루프 안에서는 항상 거짓이 됩니다.
따라서 if 블럭 내부가 실행되지 않으므로 printf("%s",ch1);도 실행되지 않아 결과가 출력되지 않는 것입니다.
항상 출력하고 싶다면 printf("%s",ch1);를 getch(); 바로 앞으로 옮기면 됩니다.
k 값이 범위 내인지 for 문 직전에서 검사하여 범위 내일 때만 for 문을 돌려야 하겠습니다.
|