일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 언제나 휴일
- 클래스 다이어그램
- 캡슐화
- 동영상 강의
- 파이썬
- 동영상
- 강의
- 충남 천안
- 소켓 통신
- C++
- 네트워크 프로그래밍
- 알고리즘
- 소스 코드
- 산책하기 좋은 곳
- c#
- 표준 라이브러리 함수
- 추천
- 실습
- Windows Forms
- 프로젝트
- 표준 입출력
- c언어
- 언제나휴일
- 실습으로 다지는 c#
- 무료 동영상 강의
- 안드로이드 앱 개발
- 독립기념관
- 원격 제어 프로그램
- 졸업 작품 소재
- 유튜브 동영상 강의
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[C언어 소스] 부분 문자열 비교하는 함수 만들기 본문
알고리즘
부분 문자열 비교(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2, n:비교할 문자 개수)
….반복(n이 0보다 크면서 str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)
……..str1과 str2를 다음 위치로 이동
……..n을 1 감소
….str1과 str2가 가리키는 문자의 차이 반환
소스코드
//부분 문자열 비교하는 함수 만들기
#include <stdio.h>
int mystrlen(const char *str);
//사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별
//차이가 없으면 0 반환
int mystrncmp(const char *str1, const char *str2, size_t n);
int main(void)
{
char src[100] = "This is test1. He is a student. She is a teacher.";
char key[10] = "is";
int len;
int i;
len = mystrlen(key);
printf("원본 문자열:%s\n\n", src);
printf("is로 시작하는 부분 문자열 목록\n\n");
for (i = 0; src[i]; i++)
{
if (mystrncmp(src + i, key, len) == 0)//부분 문자열 비교 결과가 0일 때
{
printf("%s\n", src + i);
}
}
return 0;
}
int mystrlen(const char *str)
{
int cnt;
//str[cnt]가 거짓 문자(종료 문자, '\0')가 나올 때까지 cnt를 1증가
for (cnt = 0; str[cnt]; cnt++);
return cnt;
}
int mystrncmp(const char *str1, const char *str2, size_t n)
{
//비교할 개수 n이 0이거나
//str1이 가리키는 문자가 종료 문자나 str1과 str2가 가리키는 문자가 다를 때까지 반복
for (n--; n&& *str1 && (*str1 == *str2); str1++, str2++)
{
n--;
}
return *str1 - *str2;
}
언제나휴일 여행 및 산책
'C & C++ > C++ 예제 및 소스' 카테고리의 다른 글
[C언어 소스] 연결리스트를 이용하여 구현한 큐 (0) | 2025.01.09 |
---|---|
[C언어 소스] 문자열 길이를 계산하는 함수 만들기 (0) | 2025.01.08 |
Queue를 이용한 스케쥴러 시뮬레이션 [C++] (0) | 2025.01.08 |
파서 트리를 이용한 계산기 [C++] (0) | 2025.01.08 |
함수 개체, 회원 및 회원 컬렉션 구현[C++] (0) | 2025.01.08 |
개체 출력자 실습 – 회원 클래스 및 쉬프트 연산자 중복 정의 [C++] (0) | 2025.01.08 |
다형성 실습 – 오케스트라, 음악가, 피아니스트, 드러머 [C++] (0) | 2025.01.08 |
상품과 할인 상품 – 상속 실습 [C++] (0) | 2025.01.08 |