[정답] 73. 문자열 정리하기
1. 문자열 길이를 구하는 함수를 만드시오.
(strlen 함수와 같은 기능을 하는 함수 만들기)
답:
//문자열 길이를 구하는 함수를 만드시오.
//(strlen 함수와 같은 기능을 하는 함수 만들기)
#include <string.h>
#include <stdio.h>
int mystrlen(const char *str);
int main(void)
{
char arr[100];
printf("문장 입력:");
gets_s(arr, sizeof(arr));
printf("<mystrlen
함수 이용>%s
string length:%d\n", arr,
mystrlen(arr));
printf("<strlen
함수 이용>%s
string length:%d\n", arr,
strlen(arr));
return 0;
}
int mystrlen(const char *str)
{
const char *tstr = str;
while (*str++);//참인 문자면 반복
return str - tstr -1; //종료 문자가 있는 주소에서 원래 주소의 차 -1이 문자열 길이
}
2. 문자열 비교하는 함수를 만드시오.
(strcmp 함수와 같은 기능을 하는 함수 만들기)
답변:
//문자열 비교하는 함수를 만드시오.
//(strcmp 함수와 같은 기능을 하는 함수 만들기)
#include <stdio.h>
#include <string.h>
int mystrcmp(const char *str1, const char *str2);
void TestCase(const char *str1, const char *str2);
int main(void)
{
char arr1[10] = "hello";
char arr2[10] = "yahoo";
char arr3[10] = "hello";
TestCase(arr1, arr2);
TestCase(arr1, arr3);
TestCase(arr2, arr3);
return 0;
}
void TestCase(const char *str1, const char *str2)
{
int gap;
gap = mystrcmp(str1, str2);
if (gap == 0)
{
printf("%s와 %s는 서로 같음\n",str1,str2);
}
else
{
if (gap > 0)
{
printf("%s가 %s보다 사전식 비교에서 큽니다.\n", str1, str2);
}
else
{
printf("%s가 %s보다 사전식 비교에서 작습니다.\n", str1, str2);
}
}
}
int mystrcmp(const char *str1, const char *str2)
{
while (*str1 && (*str1++ == *str2++));
return *str1 - *str2;
}
3. 문자열 복사하는 함수를 만드시오.
(strcpy_s 함수와 같은 기능을 하는 함수 만들기)
답:
//문자열 복사하는 함수를 만드시오.
//(strcpy_s 함수와 같은 기능을 하는 함수 만들기)
#include <stdio.h>
#include <string.h>
#include <assert.h>
char *mystrcpy_s(char *dest, size_t size, const char *src);
int main(void)
{
char name[10] = "hello";
char name2[10];
mystrcpy_s(name2, sizeof(name2),
name);
printf("%s\n", name2);
return 0;
}
char *mystrcpy_s(char *dest, size_t size, const char *src)
{
char *temp = dest;
if (strlen(src) >= size)//src문자열 길이가 size보다 크거나 같으면
{
assert(0);//예외 창 띄우기
}
while (*dest++ = *src++);
return temp;
}
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
[정답] 디딤돌 C언어 67. 정리하기(함수) (0) | 2016.05.01 |
---|---|
[정답] 디딤돌 C언어 52. 함수 개요 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 50. 인덱스 연산자 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 49. 간접 연산자 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 47. 포인터 + 정수 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 46. 배열 선언문 (0) | 2016.05.01 |
[정답] 디딤돌 C언어 44.정리하기(제어문) (0) | 2016.05.01 |
[정답] 디딤돌 C언어 43. 제어문 연습 - 별출력 (0) | 2016.04.30 |
[정답] 41. 반복문(while, do while, for) (0) | 2016.04.30 |
[정답] 디딤돌 C언어 40. 선택문(switch case) (0) | 2016.04.30 |