문자열 함수 만들기

이인혁·2024년 5월 14일

C

목록 보기
15/23

1. 문자열의 문자의 갯수 세는 함수 strlen2

문자열의 문자 갯수 세어주는 함수 C언어는 0은 거짓, 0이외 숫자는 참
코드

#include <stdio.h>

int strlen2(char* pstr) {
	int i = 0;
	while (pstr[i]) {
		i++;
	}
	return i;
}

int main() {
	char str[30] = "Monster";

	int count = strlen2(str);

	printf("str: %s, 문자열의 문자의 갯수는: %d\n", str, count);
    
    return 0;
}

결과

str: Monster, 문자열의 문자의 갯수는: 7

2. 문자열 복사함수 strcpy2

pdest: 문자열 복사 공간
psrc: 문자열의 소스
리턴값: 복사된 문자열의 선두번지 주소값

코드

#include <stdio.h>

char* strcpy2(char* pdest, char* psrc) {
	int i = 0;
	while (psrc[i]) {
		pdest[i] = psrc[i];
		i++;
	}
	pdest[i] = psrc[i];
	return pdest;
}

int main() {
	char str[30] = "Monster";
	char buff[30];

	char* pstr = strcpy2(buff, str);

	printf("buff: %s\n", buff);
    
    return 0;
}

결과

buff: Monster

3. 문자열 비교함수 strcmp2

문자열 비교해주는 함수 문자열이 같으면 0을 리턴, 다르면 1을 리턴

코드

#include <stdio.h>

int strcmp2(char* pstr1, char* pstr2) {
	int len = 0;
	int len1 = 0;
	int len2 = 0;
	while (pstr1[len1]) {
		len1++;
	}
	while (pstr2[len2]) {
		len2++;
	}
	if (len1 > len2) {
		len = len1;
	}
	else {
		len = len2;
	}
	for (int i = 0; i < len; i++) {
		if (pstr1[i] != pstr2[i]) {
			return 1;
		}
	}
	return 0;
}

int main() {
	char str[30] = "Monster";
	char buff[30] = "Monster";

	int isSame = 0;

	isSame = strcmp2(str, buff); //같으면 0을 리턴, 다르면 1을 리턴

	if (isSame) {
		printf("str: %s와 buff: %s의 문자열이 다르다.\n", str, buff);
	}
	else {
		printf("str: %s와 buff: %s의 문자열이 같다.\n", str, buff);
	}
    
    return 0;
}

결과

str: Monster와 buff: Monster의 문자열이 같다.

4. 문자열 병합함수 strcat2

문자열 str1과 문자열 str2를 병합하는 함수
pstr1: 문자열을 병합할 공간
pstr2: 병합할 문자열
리턴값: 병합된 문자열의 선두번지 주소값

코드

#include <stdio.h>

char* strcat2(char* pstr1, char* pstr2) {
	int len1 = 0;
	int len2 = 0;
	while (pstr1[len1]) {
		len1++;
	}
	while (pstr2[len2]) {
		len2++;
	}
	for (int i = len1; i <= len1 + len2; i++) {
		pstr1[i] = pstr2[i - len1];
	}
	return pstr1;
}

int main() {

	char str1[30] = "mon";
	char str2[] = "ster";

	pstr = strcat2(str1, str2);
	printf("str1: %s, str2: %s, pstr: %s\n", str1, str2, pstr);
    
    return 0;
}

결과

str1: monster, str2: ster, pstr: monster

5. 대소문자 변경함수

A(65) ~ Z(90)
a(97) ~ z(122)

코드

#include <stdio.h>

int toUpper(char ch) {// 대문자 변경
	char n = 'a' - 'A';
	ch = ch - n;
	return ch;
}

int toLower(char ch) {// 소문자 변경
	char n = 'A' - 'a';
	ch = ch - n;
	return ch;
}

int main() {

	int ch = toUpper('k');

	printf("ch = %c\n", (char)ch);

	ch = toLower('L');

	printf("ch = %c\n", (char)ch);

	return 0;
}

결과

ch = K
ch = l
profile
게임개발공부블로그

0개의 댓글