#include
char my_strcpy(char* a,char* b)
{
int c=0;
while(*a!=0)
{
a[c]=0;
c++;
}
c=0;
while(*b!=0)
{
a[c]=*b;
c++;
b++;
}
return *a;
}
int main()
{
char a[50]={0};
char b[50]={0};
printf("첫번째 문자를 입력하세요:");
scanf("%s",a);
printf("두번째 문자를 입력하세요:");
scanf("%s",b);
printf("첫번째 입력한 문자:%s\n",a);
printf("두번째 입력한 문자:%s\n",b);
my_strcpy(a,b);
printf("첫번째 입력한 문자:%s\n",a);
printf("두번째 입력한 문자:%s\n",b);
return 0;
}
문자열 복사하는건데
예를들어서 a에 aaa를 넣고 b에 bb를 넣으면
a가 bb로 출력되어야하는데 bba로 출력함
분명 위에서 a에 다 0으로 초기화한다음 bb를 넣었으니까
당연히 널문자 만나기전까지인 bb가 출력되어야 정상아님?
근데 왜 aaa에서 세번째 a가 그대로 출력되는거임?
char my_strcpy(char* a,char* b)
{
int c=0;
while(*a!=0)
{
a[c]=0;
c++;
}
c=0;
while(*b!=0)
{
a[c]=*b;
c++;
b++;
}
return *a;
}
int main()
{
char a[50]={0};
char b[50]={0};
printf("첫번째 문자를 입력하세요:");
scanf("%s",a);
printf("두번째 문자를 입력하세요:");
scanf("%s",b);
printf("첫번째 입력한 문자:%s\n",a);
printf("두번째 입력한 문자:%s\n",b);
my_strcpy(a,b);
printf("첫번째 입력한 문자:%s\n",a);
printf("두번째 입력한 문자:%s\n",b);
return 0;
}
문자열 복사하는건데
예를들어서 a에 aaa를 넣고 b에 bb를 넣으면
a가 bb로 출력되어야하는데 bba로 출력함
분명 위에서 a에 다 0으로 초기화한다음 bb를 넣었으니까
당연히 널문자 만나기전까지인 bb가 출력되어야 정상아님?
근데 왜 aaa에서 세번째 a가 그대로 출력되는거임?
코드를 이해할순없지만 문자열 길이가 달라서 마지막에 널값 넣어줘야하는거아니냐?
0이 널 아님?? 널이랑 0이랑 따로 구분해서 넣어줘야하나?
쨋든 aaa를 000으로 초기화했는데 여기에 b의값 bb를 복사해넣으면 bb0이 더ㅣ는데 왜 bba이렇게 출력되느냐 이 이야기임 설령 저게 널이 아니더라도 bb0이런식으로라도 출력되어야하는데 왜 a가 그대로있지 초기화가 안된건가
ㄱㅋㅋㅋㅋㅋ저코드 그대로복사해서 여따붙혀넣은거맞지? 카피함수에있는 초기화 루프의 조건 잘못됐다.