Page 311 - Do it! 자료구조와 함께 배우는 알고리즘(C 언어, 3쇄)
P. 311

s1           A B C D  Ø  s1과 s2를     s1          A B C D  Ø
                                               서로 교환합니다.
                        s2           E  F G H  Ø             s2          E  F G H  Ø
                                         [그림 8-4] 두 포인터를 교환하는 과정



                         연습      Q2  실습 8-5에서 포인터를 교환하는 함수를 실습 2-7에서 만든 함수 형식 매크로 swap와 같
                         문제     은 방법으로 바꾸어보세요.



                                 Q3  포인터 x, y가 가리키는 문자열의 내용을 모두 바꾸어 넣는 함수를 작성하세요.

                                  void swap_str(char *x, char *y);






                        문자열의 길이
                        실습 8-2에서도 살펴봤듯이 컴퓨터는 배열에 저장                                  문자열의 길이와 같습니다.
                                                                            0  1  2  3  ❹  5  6  7  8  9
                        된 문자열의 경우 널 문자까지 문자열로 인식합니                          A B C D  Ø
                        다. 다시 말해 배열 전체를 문자열로 사용하지 않습
                                                                          널 문자를 선형 검색합니다.
                        니다. 배열에 들어 있는 요소의 개수가 항상 문자열                       [그림 8-5] 문자열의 길이를 구하는 과정
                        의 길이를 의미하지는 않기 때문에 문자열의 길이를

                        구하려면 문자열의 길이만 구하는 알고리즘이 필요합니다. 그림 8-5와 같이 문자열의 첫 문
                        자부터 널 문자까지 선형 검색을 하면 됩니다. 이때 문자열의 끝은 널 문자이므로 찾은 널 문
                        자의 인덱스는 문자열의 길이와 같습니다.
                           문자열의 길이는 널 문자를 제외한 문자의 개수를 의미합니다.


                        그러면 바로 문자열의 길이를 구하는 프로그램을 만들어 보겠습니다.



                          실습 8-6                                                 •완성 파일 chap08/str_len1.c
                         01  /* 문자열의 길이를 구하는 프로그램 */
                                                                                     실행 결과
                         02  #include <stdio.h>
                                                                               문자열 : easyspublishing
                         03                                                    이 문자열의 길이는 15입니다.
                         04  /*--- 문자열 s의 길이를 구하는 함수(버전 1) ---*/
                         05  int str_len (const char *s)
                         06  {
                         07    int len     = 0;
                         08
                         09    while(s[len])



                                                                                      08•문자열 검색  311
   306   307   308   309   310   311   312   313   314   315   316