게시글
질문&답변
2021.11.04
11.6 강 strcat() 구현 중 질문이 있습니다.
안녕하세요 조교님!! 강의 중에서 교수님께서 strcat() 을 직접 구현해보라고 하셔서, 구글링 + 친구의 조언으로 코드를 받아, 이해하던 중 어려움을 겪어 질문을 드렸었는데... -> 실수였습니다.. ㅠㅠ 해결되었어요. 그래도 혹시 다른 수강생이 위 코드를 보고 궁금해 할 수도 있기에 복습 겸, 아래에 자세하게 설명 남겼어요! #include /* 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
- 2
- 422
질문&답변
2021.10.24
코드 질문입니다!
+ 7.8 단어 세기 예제 강의의 9분대입니다!
- 0
- 2
- 160