[C언어] 문자열 연결, 입력, 비교, 탐색 함수 제작

  • 등록일 / 수정일
  • 페이지 / 형식
  • 자료평가
  • 구매가격
  • 2007.11.07 / 2019.12.24
  • 7페이지 / fileicon zip (압축파일)
  • 평가한 분이 없습니다. (구매금액의 3%지급)
  • 1,200원
다운로드장바구니
Naver Naver로그인 Kakao Kakao로그인
[C언어] 문자열 연결, 입력, 비교, 탐색 함수 제작
목차
#define MAX 20

int _strlen(char a[]); // 문자열 길이
int _strfind1(char a[], char b); // 원하는 문자 찾기
void _strcpy(char a[], char b[]); // 문자열 복사
void _strcat(char a[], char b[], char c[]); // 문자열 연결
int _strcmp(char a[], char b[]); // 문자열 비교
int _strfind2(char a[], char b[]); // 문자열 탐색
void _strget(char a[]); // 문자열 입력
본문내용
Ⅰ. 문제의 제기
헤더 파일은 직접 정의하여 사용할 수 있으며, 이때는 ""를 이용해서 소스에 포함시켜 주어야 한다. 이번 리포트에서는 헤더 파일에 문자열과 관련된 함수들을 정의하고 소스 파일에서 끌어 쓰도록 프로그램을 구현한다. 헤더 파일에는 문자열에서 문자열을 검색하는 함수, 두 문자열을 비교하는 함수, 두 문자열을 연결하는 함수가 포함되어야 한다. 문자열을 검색하는 함수의 경우는 검색할 문자열을 찾아내기 위한 반복문 이용 방식을 결정하여야 하며, 문자열을 비교하는 경우는 어떤 경우들이 동일하지 않은 문자열 인지 생각해 보아야한다. 또한 문자열을 연결하는 함수는 저장할 문자열의 인덱스를 어떻게 유지해 줄지를 생각해 보아야 한다. 아래서부터 이런 문제점을 중심으로 프로그램을 구현해 본다.
※ 작성된 프로그램의 전체 소스 #붙임1 (main.cpp, myString.h)

Ⅱ. 문제해결의 방식 및 알고리즘 구현
1. 프로그램 설명
헤더 파일에 문자열에서 문자열 검색, 두 문자열 비교, 두 문자열 연결 함수를 포함시켜 프로그램을 구현한다. 또한 기존 제작한 문자열 길이, 문자열 복사, 문자 검색 함수도 헤더 파일에 선언하여 준다.

2. 문제해결 접근 방식
(1) 문자열 연결 함수의 제작 문제
두 문자열을 연결하기 위해서는 첫 문자열을 저장하고 난 후 두 번째 문자열을 저장할 때 저장되는 배열의 인덱스를 어떻게 유지할 지를 생각해야 한다. 만약 저장하는 문자열과 동일한 인덱스를 사용한다면 연결되지 않고 두 번째 문자열만 남을 것이기 때문이다. 따라서 저장 배열의 인덱스를 따로 유지해주어야 하며, 이는 새로운 카운터 변수를 선언하는 것으로 해결 할 수 있을 것이다.

(2) 문자열 비교 함수의 제작 문제
문자열을 비교하는 함수는 동일한 경우 1, 다른 경우 0을 리턴하는 방식으로 구현되어야 한다. 이때 다른 경우는 어느 때인지를 생각해야하는데, 기본적으로 다른 문자가 포함된 경우가 포함된다. 이는 두 배열의 동일 인덱스 상의 데이터를 비교하여 다른 경우 0을 리턴하는 방식으로 구현 할 수 있을 것이다. 또 하나 생각해야 하는 것은 두 문자열의 길이가 다른 경우이다. 짧은 문자열과 긴 문자열은 앞부분이 동일하고 남는 부분이 동일하지 않도록 인식되어야 한다. 따라서 다른 문자 검색이 끝난 후 두 문자열 중 하나라도 NULL에 도달하지 않았다면 0을 리턴하는 방식으로 이를 해결해야 한다. 이 두가지 경우에 해당되지 않는 경우는 1을 리턴하여 준다.

(3) 문자열을 검색하는 함수의 제작 문제
문자열에서 문자열을 검색하는 함수는 검색할 문자열을 어떻게 다룰 것인지 생각해야 한다. 우선 검색할 문자열이 기존 문자열 보다 길다면 무조건 검색 실패를 리턴한다. 그외의 경우는 기존 문자열의 인덱스를 증가시키면서 검색하면 될 것이다. 이때 검색할 문자열의 카운터는 따로 만들어야하며, 다른 문자를 만날때마다 0으로 초기화 시켜주어야 한다. 같은 문자열을 만나고 카운터를 증가한 것이 검색할 문자열의 길이와 동일하다면 검색성공을 리턴한다. 리턴은 기존 문자열에서 검색한 문자열의 시작 인덱스를 해주어야 하므로 검색할 문자열 카운터를 현재 인덱스에서 뺀 후 리턴하면 될 것이다.

3. 알고리즘 구현
(1) 문자열 연결 함수의 알고리즘
위 검토한 바에 따라 알고리즘을 작성하면 우선 두 개의 카운터가 필요할 것이며, 그중 하나는 저장할 배열의 인덱스를 제어할 것이다. 첫 문자열을 저장하고 난 후에도 저장 배열의 인덱스는 초기화 시키지 않으며 두 번째 문자열까지 저장된 후에는 0을 저장해야 할 것이다. 이와 같은 내용을 간략히 나타내면 다음과 같다.

ⅰ. cnt1, cnt2을 0으로 초기화
ⅱ. cnt1이 첫 배열의 길이보다 크거나 같을 때까지 c[cnt2]에 저장 후 cnt1, cnt2 증가
ⅲ. cnt1을 0으로 초기화
ⅳ. cnt1이 두 번째 배열의 길이보다 크거나 같을 때까지 c[cnt2]에 저장 후 cnt1, cnt2 증가
ⅴ. c[cnt2]에 0을 저장

(2) 문자열 비교 함수의 알고리즘
문자열의 비교 함수는 두 문자열의 길이를 모두 알아야 하며, 이를 lena, lenb라고 한다. 문자열 a와 b의 현재 값이 다른 경우는 0을 바로 리턴하며, 현재 인덱스가 lena 또는 lenb 보다 크거나 같아지면 반복문을 멈춘다. 반복문을 멈춘 당시 두 배열 중 하나라도 0이 아니라면 0을 리턴하고 그렇지 않으면 1을 리턴한다. 이를 간략히 나타내면 아래와 같다.
ⅰ. cnt가 lena 또는 lenb 보다 작은 경우 반복문을 계속한다.
ⅱ. a[cnt]와 b[cnt]가 다르면 0을 리턴하고, 아니면 cnt를 증가시킨 후 ⅰ로 돌아간다.
ⅲ. a[cnt], b[cnt] 중 하나라도 0이 아니라면 0을 리턴하고, 그렇지 않으면 1을 리턴한다.

자료평가
    아직 평가한 내용이 없습니다.
회원 추천자료
  • [공학기술]라이브러리[p9]1000
  • 함수를 추출함으로써, 코드 재사용을 지원할 수 있습니다.※ 용어설명 STL : STL은 Standard Template Library의 약자로서, C++에서 일반적인 자료 구조와 알고리즘을 구 현해 놓은 라이브러리의 집합이다. 지원하는 자료구조에는 vector, map, set 등이 있으며, 여러가지 탐색 변경 알고리즘을 지원해 주고 있다. vector와 같은 자료 구조에 삽입할 변수의 형이 정해지 있지 않고, 일반적인 형이라고 가정한 뒤 vector와 같은 컨테이너가 구현되어 있다. 즉 이 때는 C++언어

  • 정보처리기사 필기 요약자료
  • 입력은양쪽에서 일어나고출력은 한곳에서만이루어지는 구조1장 데이터 입출력 및 인터페이스 구현 2과목 소프트웨어 개발비선형 구조 - 트리(Tree)정점(Node, 노드)과선분(Branch, 가지)을이용하여사이클을이루지않도록구성한그래프(Graph)의 특수한형태10 하나의기억 공간을노드(Node)라고하며, 노드와 노드를연결하는 선을링크(Link)라고 함 가족의계보(족보), 조직도 등을표현하기에적합-노드(Node) : 트리의 기본구성요소, 자료항목(A, B, C, D, E, F, G, H

  • 정보처리기사 핵심 요약집
  • 입력할 때에는 양쪽에서, 출력할 때에는 한쪽에서 수행되도록 알고리즘을 구성한 자료이다. ⑫ 트리- 이진 트리와 포화 이진 트리, 완전 이진 트리와 경사 이진 트리, 스레드 이진 트리가 있다. ⑬ 그래프- 그래프는 연결된 객체 간의 관계를 표현할 수 있는 자료 구조이다. - 수학자 라온하르트 오일러에 의해 처음 창안되었다. ⑭ 검색- 기억 공간에 저장된 여러 자료 중에서 특정 조건에 맞는 자료를 찾아내는 과정이다. ⑮ 해싱- 일반적인 탐색 방법

  • [컴퓨터공학, 컴퓨터과학]마이크로컴퓨터(어셈블리어, 어셈블리언어) 요약강좌
  • C를 강제로 값을 바꾸는 명령어- STC(Set Carry Flag) : C 플래그를 1로 하는 명령.- CLC(Clear Carry Flag) : C 플래그를 0으로 하는 명령.- CMC(Complemet Carry Flag) : C 플래그의 값의 보수를 취하는 명령.② 프로시저의 오류 조건 표시 혹은 로테이트 명령(RCL, RCR 등)dml 수행시에 사용 가능.ꊴ 프로그래밍 예제(1) 프로그램의 알고리즘① 두 수를 입력 ② 입력된 숫자 코드를 이진수로 변환③ 두 수를 더한다. ④ 결과를 ASCII 코드로 변환⑤ 그 결과를 출력< 5장 출제예상

  • [정보처리기사] 정보처리기사 과목별 문제분석
  • C, COBOL, PASCAL 등의 호스트 언어와 DBMS가 지원하는 데이터 조작어에 능숙한 컴퓨터 전문가이다.☞일반 사용자일반 사용자는 보통 터미널을 이용하여 데이터베이스에 있는 자원을 활용할 목적으로 질의어나 응용 프로그램을 사용하여 데이터베이스에 접근하는 사람들이다.☞큐(Queue)-(1,2회)운영체제의 작업 스케줄링에 응용된다. ☞Stack을 이용하는 예■ 부프로그램 호출시 복귀주소를 저장할 때■ 함수 호출의 순서 제어■ 인터럽트가 발생하여 복

오늘 본 자료 더보기
  • 오늘 본 자료가 없습니다.
  • 저작권 관련 사항 정보 및 게시물 내용의 진실성에 대하여 레포트샵은 보증하지 아니하며, 해당 정보 및 게시물의 저작권과 기타 법적 책임은 자료 등록자에게 있습니다. 위 정보 및 게시물 내용의 불법적 이용, 무단 전재·배포는 금지됩니다. 저작권침해, 명예훼손 등 분쟁요소 발견시 고객센터에 신고해 주시기 바랍니다.
    사업자등록번호 220-06-55095 대표.신현웅 주소.서울시 서초구 방배로10길 18, 402호 대표전화.02-539-9392
    개인정보책임자.박정아 통신판매업신고번호 제2017-서울서초-1806호 이메일 help@reportshop.co.kr
    copyright (c) 2003 reoprtshop. steel All reserved.