C++프로그래밍/C 와 C++ 기초실습

문자열(포인터) 연습해보기

season97 2024. 9. 20. 12:55

※ C / C++을 이미 알고 있으나 개인적인 공부를 위해 포스팅 하는 글이므로

C++에 대한 구체적인 정보를 담고 있지 않습니다.

 

1) 문자열 길이 번환

int StrLen(const char* str)
{
	int cnt = 0;
	while (*(str+cnt) != '\0')
	{
		cnt++;
	}
	return cnt;
}

ㆍ 간단하게 문자열의 길이를 반환하는 함수. \0을 만나기 전까지 반복문을 돌려준다.

 

2) 문자열 복사

포인터를 이용한 방식으로 해볼 예정이다.

char* StrCpy(char* dest, char* src)
{	char* ret = dest;
	while (*src != '\0')
	{
		*dest = *src;
		*dest++;
		*src++;
	}
	*dest = '\0';
	return ret;
}

ㆍ 포인터의 메모리 커서를 변경해 줄 것이기 때문에 초기값을 미리 ret에 저장해뒀다.

ㆍ \0을 만나기 전까지 커서를 이동하며 복사해줬다.

 

3) 문자열 뒤에 문자열 삽입

char* StrCat(char* dest, char* src)
{
	char* ret = dest;
	while (*dest != '\0')
	{
		*dest++;
	}
	while (*src != '\0')
	{
		*dest = *src;
		*dest++;
		*src++;
	}
	*dest = '\0';
	return ret;
}

ㆍ 마찬가지로 초기값을 저장해 주고 dest의 커서를 뒤로 이동시켜 준 후 *src를 *dest에 넣어줬다.

 

4) 문자열 비교하기 

int StrCmp(char* a, char* b)
{
	int i = 0;
	while (a[i] != '\0' || b[i] != '\0')
	{
		if (a[i] > b[i])
			return 1;
		if (a[i] < b[i])
			return -1;
		i++;
	}
	return 0;
}

ㆍ 두 분자열이 같으면 0 아스키순으로 앞에가 먼저면 -1 뒤에가 먼저면 1을 반환하는 함수

 

5) 문자열 뒤집기 

void ReverseStr(char* str)
{
	int len = StrLen(str);

	for (int i = 0; i < len / 2; i++)
	{
		int temp = str[i];
		str[i] = str[len - 1 - i];
		str[len - 1 - i] = temp;
	}
}