작성
·
422
0
안녕하세요, 11.6강 strcat() 함수 구현 중 질문드립니다.
char * strcat_ptr(char* dest, const char* src) // strcat 구현하기
{
char* temp = dest; // temp 포인터 주소를 dest 로
while (*temp) // temp가 가르키는 문자가 null 일때까지 반복
*질문사항 : *temp 를 *dest 로 바꾸면 무한루프가 되더라구요..ㅠㅠ 왜 그런지 모르겠어요..
{
temp++; // temp 주소 하나씩 증가
}
while (*src) // src가 가르키는 문자가 null 일때까지 반복
{
*temp++ = *src++; // temp가 가르키는 주소에 src가 가르키는 문자로 변경
}
temp = 0x00; // temp를 null 로 해줌.
return dest; //dest 반환
}
답변 2
0
안녕하세요 조교님!!
강의 중에서 교수님께서 strcat() 을 직접 구현해보라고 하셔서,
구글링 + 친구의 조언으로 코드를 받아, 이해하던 중 어려움을 겪어 질문을 드렸었는데...
-> 실수였습니다.. ㅠㅠ 해결되었어요.
그래도 혹시 다른 수강생이 위 코드를 보고 궁금해 할 수도 있기에 복습 겸, 아래에 자세하게 설명 남겼어요!
#include <stdio.h>
/*
11.6 강 strcat() 설명 중, 교수님께서 strcat() 을 직접 구현해보라고하셔서 구글링을 동원하여... 구현해보았습니다!
구현 기능 :src 문자열을 dest 문자열의 끝에 붙여넣는 것
(1) dest, src 각각 문자열의 시작 주소를 매개변수로 받자.
(2) dest의 끝('\0' 이 저장된 주소)을 찾자.
(2-1) dest 문자열의 시작주소를 임시로 temp 에 저장하자.
(2-2) *temp 는 '\0'을 만나면 false 이므로
while(*temp){temp++;} 으로 하여금 dest의 끝 주소를 temp에 저장할 수 있다.
(3) 두번째 루프에서 while(*src){*temp++=*src++;}으로 하여금
src 문자열의 처음부터 *src = '\0' 일때까지
*src 를 *temp 에 저장한다. temp는 이때 dest의 끝 주소이므로, dest의 끝에 src 문자열이 저장된다.
(4) 임시로 선언한 temp 포인터를 NULL 로 바꿔준 뒤 dest를 return한다.
*/
char* strcat_ptr(char* dest, const char* src) // (1) dest, src 각각 문자열의 시작 주소를 매개변수로 받자.
{
char* temp = dest; //(2) dest 문자열의 시작주소를 임시로 temp 에 저장하자.
while (*temp) //(2) dest의 끝('\0' 이 저장된 주소)을 찾자.
{ // (2-2) *temp 는 '\0'을 만나면 false 이므로
temp++; //while(*temp){temp++;} 으로 하여금 dest의 끝 주소를 temp에 저장할 수 있다.
}
while (*src) //(3) 두번째 루프에서 while(*src){*temp++=*src++;}으로 하여금
{ /*src 문자열의 처음부터 *src = '\0' 일때까지
*src 를 *temp 에 저장한다. temp는 이때 dest의 끝 주소이므로,
dest의 끝에 src 문자열이 저장된다.*/
*temp++ = *src++;
}
temp = 0x00; //(4) 임시로 선언한 temp 포인터를 NULL 로 바꿔준 뒤 dest를 return한다.
return dest;
}
int main()
{
char arr1[100] = "Hi,there!"; //arr1 선언
char arr2[100] = "I'm here!"; //arr2 선언
printf("%s", strcat_ptr(arr1, arr2)); // 직접 구현한 strcat_ptr을 이용하여 arr2를 arr1 끝에 복사.
return 0;
}
----------------------
0
안녕하세요!
강의에서는 해당 코드를 못 찾겠는데 직접 구현하신 코드인건가요?
while(*temp) 이 부분만 dest 로 바꿨을 때를 말씀하시는걸까요?
좀 더 구체적인 설명과 main 함수 포함한 전체 코드 부탁드리겠습니다
앗 다행이네용 ㅎㅎ 정보 공유 감사드립니다