안녕하세요?
교수님 정말 그 동안 노력 안 했던 거 탓하면서 처절하게 풀었어요 .
그래도 열심히 하면 조금이라도 좋아지겠지 하면서요!
그냥 결과 끼워맞추기인데요.
<strcmp>
1. 길이가 다르면 다른 문자열이니까 -1을 리턴해라
2. 길이가 같다면 그 길이 만큼 돌면서 각 배열의 같은 위치의 문자를 하나씩 비교해서 다른 게 있으면 -1을 리턴하고 다른 게 없으면 0을 리턴한다.
머리가 복잡해서 myStrlen 함수를 먼저 만들어서 길이 비교를 했고요.
그걸 이용해서 myStrcmp를 만들었어요.
<결과화면>

<코드>
// strcmp_self.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
using namespace std;
void Compare(int input);
int myStrcmp(const char arr[],const char arr2[]);
int myStrlen(const char arr[]);
int main()
{
char name1[] = "ABCDEF";
char name2[] = "ABCDEF";
char name3[] = "AbCDEF";
cout << name1 << " == " << name2 << " ? " << endl;
Compare(myStrcmp(name1, name2));
cout << name1 << " == " << name3 << " ? " << endl;
Compare(myStrcmp(name1, name3));
//cout << "strcmp(name1, name2) : " << strcmp(name1, name2) << endl;
return 0;
}
int myStrlen(const char arr[])
{
int count = 0;
while (1)
{
if (arr[count] == '\0')
break;
count++;
}
return count;
}
int myStrcmp(const char arr[], const char arr2[])
{
int result = 0;
if (myStrlen(arr) != myStrlen(arr2))
{
result = -1;
}
else
{
for (int i = 0; i < myStrlen(arr); ++i)
{
if (arr[i] != arr2[i])
result = -1;
else
result += 0;
}
}
return result;
}
void Compare(int input)
{
if (input == 0)
{
cout << "Equal" << endl;
}
else
{
cout << "Not Equal" << endl;
}
}
<strcat>
<결과화면>

<코드>
// concatenate_test.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
int myStrlen(const char arr[]);
char* myStrcat(const char* x, const char* y);
int main()
{
char str1[] = "Jack";
char str2[] = " Jack";
//strcat(str1, str2);
cout << myStrcat(str1, str2) << endl;
//cout << str1 << endl;
return 0;
}
char* myStrcat(const char* x, const char* y)
{
//cout << myStrlen(x) + myStrlen(y) + 1 << endl;
int length = myStrlen(x) + myStrlen(y) + 1;
//char concatenatedString[20]{ '\0',};
char* concatenatedString = new char[length] {'\0',};
//concatenatedString[0] = 'H';
//concatenatedString[1] = 'I';
for (int i = 0; i < myStrlen(x); ++i)
{
concatenatedString[i] = x[i];
}
for (int j = 0; j < length; ++j)
{
concatenatedString[myStrlen(x) + j] = y[j];
}
//delete[] concatenatedString;
/*concatenatedString[5] = y[1];
concatenatedString[6] = y[2];*/
return concatenatedString;
}
int myStrlen(const char arr[])
{
int count = 0;
while (1)
{
if (arr[count] == '\0')
break;
count++;
}
return count;
}
감사합니다.