쥬신 님이 쓰신 글 :
: 배열로 문자열을 넣는 프로그램입니다. 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;
: }
문자열 복사나 이동에 관련된 C/C++ 라이브러리를 사용하지 않고 하는 경우 아래와 같이 할 수도 있습니다.
char ch1[10]= "abcdef";
char ch2[4] = "xyz";
char *p1 = ch1;
char *p2 = ch2;
int slen1, slen2, idx;
scanf("%d",&idx);
while(*p1) ++p1; slen1 = p1-ch1; //문자열 길이 구하기
if(idx>=0 && idx<=slen1)//ch1+idx 위치에서 시작하여 ch2를 삽입
{
while(*p2) ++p2; slen2 = p2-ch2; //문자열 길이 구하기
while(p1>=ch1+idx) // 공간 마련
{
*(p1+slen2) = *p1;
--p1;
}
++p1;
p2 = ch2;
while(*p2) *p1++ = *p2++; // 삽입
}
printf("[%s]",ch1);
|