일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 간단한 앱만들어보기
- 고정비트레이트
- Zoom Lense
- 렌즈
- C Mount
- 실생활알고리즘
- 변수
- 카메라
- camera
- 프로그래머스 lv2
- 심도
- 저장소와 동적메모리
- CS Mount
- 이미지센서
- 조건 제어문
- 저조도
- ASCCII
- c언어
- Digital Slow Shutter
- image sensor
- Gain
- main 함수 인자 전달
- Patch Cleaner
- Depth of Fileld
- 변수의 초기화와 대입
- 과초점거리
- 아이리스
- AppInventer
- Pixel Bit Format
- 무게선별자동화
- Today
- Total
카메라 개발자 공부방(SW)
[15장] 문자열 라이브러리(string.h) 본문
이번 시간은 string.h를 활용한 문자열 처리에 대해 공부해보겠습니다.
<string.h>에는 문자열을 손쉽게 처리하기 위한 함수들이 내장되어있습니다.
그중에서 우린 문자열 복사, 길이, 덧붙이기, 탐색에 대해 살펴보겠습니다.
문자열 복사는 strcpy 함수로 가능합니다.
strcpy 첫 번째 인자는 복사될 메모리 주소(Destination) 두 번째 인자는 복사할 문자열 주소(Source)입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
const char* pStr = "Hello World";
char buf[32] = {};
strcpy(buf, pStr);
printf("%s", buf);
return 0;
}
// 실행결과
// Hello World
<string.h>의 strcpy를 이용해 문자열 복사를 한 예제입니다.
_CRT_SECURE_NO_WARNINGS은 strcpy의 경고를 무시하고 사용하겠다. 정도로 알고 넘어가겠습니다~!
const는 pStr이 가리키는 메모리 공간의 값을 변경시키지 않겠다 정도로만 이해해주시기 바랍니다~
(다른 챕터에서 다루겠습니다.)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
void StrCpy(char* pDst, const char* pSrc)
{
for (int k = 0; pSrc[k]; k++)
pDst[k] = pSrc[k];
}
int main()
{
const char* pStr = "Hello World";
char buf[32] = {};
StrCpy(buf, pStr);
printf("%s", buf);
return 0;
}
// 실행결과
// Hello World
strcpy를 직접 구현한 예제입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
const char* pStr = "Hello World";
int length = strlen(pStr);
printf("length: %d\n", length);
}
// 실행결과
// 11
문자열의 끝은 \0 문자로 표식 한다는 것을 기억하고 계시죠?
시작 주소를 시작으로 \0까지의 문자열 개수를 세서 반환하는 함수입니다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int Strlen(const char* pStr)
{
int count = 0;
for (int i = 0; pStr[i]; i++)
count++;
return count;
}
int main()
{
const char* pStr = "Hello World";
int length = strlen(pStr);
printf("length: %d\n", length);
return 0;
}
// 실행결과
// 11
위의 예제는 strlen이란 함수를 직접 작성해보았습니다~
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
const char* pStr = "Hello World";
char buf[32] = "ABC";
strcat(buf, pStr);
printf("%s", buf);
return 0;
}
// 실행결과
// ABCHello World
strcat은 destination buffer에 문자가 있다면 그 뒤에 덧붙이는 함수입니다.
덧붙이기 위해선 destination buffer에 저장되어있는 문자열의 개수를 미리 알고 있어야 합니다
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
const int MAX = 32;
void Strcat(char* pDst, const char* pSrc)
{
if (strlen(pDst) + strlen(pSrc) < MAX) {
int len = strlen(pDst);
strcpy(pDst + len, pSrc);
}
}
int main()
{
const char* pStr = "Hello World";
char buf[MAX] = "ABC";
Strcat(buf, pStr);
printf("%s", buf);
return 0;
}
// 실행결과
// ABCHello World
위의 코드는 직접 구현해본 예제입니다~!
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
const char* pStr = "Hello World";
const char* pSrc = strstr(pStr, "World");
printf("%s\n", pSrc);
return 0;
}
// 실행결과
// World
strstr 함수는 문자열에서 해당 문자열과 동일한 위치를 주소를 반환해주는 함수입니다~!
주소로 반환하니 포인터 변수로 저장시켜야겠죠?
자 오늘은 여기까지~
'Langauge > C' 카테고리의 다른 글
[17장] 동적메모리와 저장소 (0) | 2021.10.06 |
---|---|
[16장] 아스키 코드(ASCII) (0) | 2021.10.05 |
[14장] 배열과 문자열 (0) | 2021.10.03 |
[13장] 포인터의 포인터(pointer of pointer) (0) | 2021.10.02 |
[12장] 포인터와 배열 (0) | 2021.10.01 |