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