0430_String.c
먼저 기본라이브러리 함수인 strcat()을 사용해 보았다.
char str1[100] = "I love you. ";
char str2[100] = "Do you love me?";
strcat(str1, str2); //앞에 것에 뒤를 연결
printf("%s\n", str1);
printf("%s\n", str2);
strncat(str1, str2, 6);//앞에 것에 뒤의 숫자(6)만큼 연결
printf("%s\n", str1);
printf("%s\n", str2);
위의 코드처럼 제공되는 함수를 사용하면 손쉽게(?) 문자열을 합칠 수 있다.
아래코드는 strcat을 구현(?)해본 코드이다.
int count = 0;
int i = 0;
int count2 = 0;
int j = 0;
for (i = 0; str1[i] > '\n'; i++)
count++;
for (j = 0; str2[j] > '\n'; j++)
count2++;
for (int i = 0; i<count2; i++)
{
str1[count + i] = str2[i];
}
strlen을 사용 하기 전 코드 이기 때문에 for문을 이용하여 각각
문자열의 길이를 count를 통해 저장하였다.
그리고 난 후 새로운 for문을 만들었는데 이는 str1에 str2를 붙이기 위하여
count2만큼, 즉 str2의 문자열 길이만큼 반복하게 하였는데,
str1[count + i] 즉 str의 마지막 문자부터 시작하여
str2[i] = str2의 처음문자 부터 마지막 문자를 넣어서 합쳐 주는 코드이다.
- 이전 코드를 아래에 넣고 주석을 달고 위에서 새로운 코드를 추가하였는데
글을 작성할때는 반대로 읽어버렸다. 다음부터는 순서를 지켜가며 작성을 하도록 해야겠다.
마지막으로 문자열의 길이를 구하는 코드이다.
다른 문자열 함수를 구현해 보는 것에 비해 문자열의 길이를 구하는 함수의 구현은
간단하다. (하지만 strlen()의 감사함을 잊지 않았다)
int count = 0;
int i = 0;
while (string[i++] > '\n')
count++;
printf("문자열의 길이는 %d(%d)입니다.\n", count,i);
count = strlen(string);
printf("strlen의 길이는 %d입니다.\n", count);
사실 이 코드는
while (string[i++] > '\n')
count++;
이 코드가 다라고 할 수 있다.
문자열의 요소가 '\n' 즉 널값일 때 까지 while문으로 반복하여 count를 +시켜주어
해당 문자의 길이를 알아내는 간단한 코드 였다.
마침 글
교육을 받기 전 인턴쉽을 진행하였었는데 안드로이드를 개발할때는 JAVA를 사용하였고,
기본적으로 연습할때는 C#을 사용했기 때문에 문자열을 작성할때는 String클래스를 사용했었다.
하지만 C동네로 다시와보니 String클래스가 없었다.. (C가 제일 불편한 것 나는 문자열 처리인것 같다..)
교육을 들으면서 다시한번 String 클래스의 감사함을 느끼게 되었다..
모든 소스코드는 저의 깃허브 https://github.com/hanamuk 에서 공유 하도록 하겠습니다.
교육에서 작성한 코드는 Bit_MasterClass 저장소에 있습니다.
'언어 > C' 카테고리의 다른 글
string reverse, 공백제거 (0) | 2021.05.17 |
---|---|
string 대소문자 변경 (0) | 2021.05.17 |
C언어 (0) | 2020.03.11 |