strlen()은 문자열의 길이를 반환하는 함수이고
strcmp()는 두 문자열이 같으면 1, 다르면 0을 반환하는 함수이다.
char형 배열의 빈 인덱스에는 NULL이 들어가 있다는 것을 이용한다.
strlen() 구현
#include <iostream>
using namespace std;
int calcLen(char name[20]) {
for (int i = 0; i < 20; i++)
{
if (name[i] == '\0') {
return i;
}
}
}
int main() {
char name[20] = "consolelog";
int len = calcLen(name);
cout << len << endl;
return 0;
}
실행결과
문자열 배열 안에 입력받는 문자가 있는지 체크하는 함수 구현
1. 함수를 사용한 방법
#include <iostream>
using namespace std;
int calcLen(char strset[20])
{
for (int i = 0; i < 20; i++)
{
if (strset[i] == '\0') {
return i;
}
}
}
int isFind(char strset[3][20], char ch, int len[])
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < len[i]; j++)
{
if (strset[i][j] == ch) {
return 1;
}
}
}
return 0;
}
int main() {
char strset[3][20] = { "jony", "consolelog", "assistant" };
int len[3] = { 0 };
for (int i = 0; i < 3; i++)
{
len[i] = calcLen(strset[i]);
}
char ch;
cin >> ch;
int flag = isFind(strset, ch, len);
if (flag) {
cout << "yes";
}
else {
cout << "no";
}
return 0;
}
2. flag를 사용한 방법
#include <iostream>
using namespace std;
int calcLen(char str[20]) {
for (int i = 0; i < 20; i++)
{
if (str[i] == '\0')
{
return i;
}
}
}
int main() {
char strset[3][20] = {
"jony",
"consolelog"
"assistant"
};
char ch;
cin >> ch;
int flag = 0;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < calcLen(strset[i]); j++)
{
if (strset[i][j] == ch)
{
flag = 1;
}
}
}
if (flag) {
cout << "yes";
}
else {
cout << "no";
}
return 0;
}
실행결과
strcmp() 함수구현
1. 함수를 사용한 방법
#include <iostream>
using namespace std;
int calcLen(char buf[20]) {
for (int i = 0; i < 20; i++)
{
if (buf[i] == '\0') {
return i;
}
}
}
int isSame(char buf1[20], char buf2[20]) {
if (calcLen(buf1) != calcLen(buf2))
{
cout << "no";
return 0;
}
for (int i = 0; i < 20; i++)
{
if (buf1[i] != buf2[i])
{
cout << "no";
return 0;
}
}
cout << "yes";
return 0;
}
int main() {
char buf1[20], buf2[20];
cin >> buf1 >> buf2;
isSame(buf1, buf2);
return 0;
}
2. flag를 사용한 방법
#include <iostream>
using namespace std;
int calcLen(char buf[20]) {
for (int i = 0; i < 20; i++)
{
if (buf[i] == '\0') {
return i;
}
}
}
int main() {
char buf1[20], buf2[20];
cin >> buf1 >> buf2;
int len1 = calcLen(buf1);
int len2 = calcLen(buf2);
if (len1 != len2) {
cout << "no";
return 0;
}
int flag = 1;
for (int i = 0; i < len1; i++) {
if (buf1[i] != buf2[i]) {
flag = 0;
break;
}
}
if (flag) {
cout << "yes";
}
else {
cout << "no";
}
return 0;
}
실행결과
[SWEA] 1288. 새로운 불면증 치료법 (java) (0) | 2024.01.14 |
---|---|
[SWEA] 1974. 스도쿠 검증 (java) (1) | 2024.01.11 |
[SW Expert Academy] 12712. 파리퇴치3 (java) (1) | 2024.01.09 |
[JAVA] 재귀함수(recursive function) 연습1 (0) | 2022.01.08 |