Power C++ 천인국, Chapter06.포인터와 문자열 297p 프로그래밍 21번
- 최초 등록일
- 2013.05.08
- 최종 저작일
- 2011.10
- 6페이지/
한컴오피스
- 가격 1,000원
![할인쿠폰받기](/images/v4/document/ico_det_coupon.gif)
목차
1. 코드 작성
2. 결과값 출력
3. 코드설명
본문내용
코드 설명 및 고찰)
- 코드 설명
입력받은 문자열에서 특정 문자열을 찾아 원하는 문자열로 바꾸는 코드이다.
먼저, 코드의 첫 머리에서 문자열 관련 라이브러리 함수 <cstring>을 불러온다. 함수 원형을 선언한 후, main()함수에 문자열과 관련된 배열들을 선언하고 그 배열들의 크기는 기호상수 volume = 81을 사용한다. 크기가 81인 이유는, 문제에서 최대 80자의 문자열을 입력받으라고 하였는데 실제로 80자를 입력하면 문장의 끝을 알리는 NULL문자가 기본적으로 추가되므로 81자가 저장된다. 그래서 크기를 81로 정하였다.
그 후 입력받을 문자열, 찾을 문자열, 바꿀 문자열을 각각 입력받는다. 공백문자도 포함하여 입력받아야 되기 때문에 cin이 아닌 cin.getline을 이용하여 입력을 받는다. 입력을 받으면 그 입력받은 문자열들을 매개변수로 하는 함수 find_change를 호출한다.
함수 find_change는 매개변수가 캐릭터형 포인터 *input, *find, *change, *temp이고 선택한 문자열을 원하는 문자열로 수정하는 함수이다. 함수 내에는 문자열을 찾는 함수 strstr()의 값을 저장할 캐릭터형 포인터 *find_word를 추가로 선언한다.
먼저, if 문을 이용하여 strstr(input, find) == 0 이라는 조건식을 가진 조건문을 만든다. 이는 input이라는 입력받은 모든 문자열 내에서 find라는 찾고자 하는 문자열이 없는가를 판단하는 조건식이다. 만약 "programming“ 이라는 문자열 내에서 "xw"라는 문자열을 찾는다면, strstr함수는 input[0]번부터 시작해서 뒤쪽으로 찾아가는 방식으로 작동하게 된다. 찾고자 하는 ”xw"라는 문자열이 input의 문자열에 없으므로 함수는 처음부터 시작하여 문장의 끝까지 찾게 되고, 문장의 끝을 알리는 문자열인 NULL 문자(아스키 코드값 0)를 만나게 되면 “찾는 문자열이 없습니다.” 라는 문장을 출력하게 된다.
만약 strstr(input, find) == 0 이 아니라면, 문자열을 무조건 찾았다는 의미이므로 문자열을 찾아 바꾸는 식을 세운다.
참고 자료
없음