본문 바로가기
C/☞

[52] 문자열 함수

by TR. 2020. 7. 27.

문자열 함수

#include <string.h>

ㄴ 헤더파일 추가 (문자열 함수 제공)

 

1) strlen() : 문자열의 사이즈 반환

   ㄴ strlen( 배열명 )

 

char fruit[100] = "apple";
printf("%c\n", fruit[1]);

char name[100] = { 0 };

printf("이름입력 : ");
scanf_s("%s", name, 100);

printf("name : %s\n", name);

// 1.
// strlen() 함수 : 문자열의 사이즈 반환
int size = strlen(name);
printf("%d\n", size);

 

2) strcpy_s() : 문자열 복사 (문자열은 = 대입으로 초기화 불가)

   ㄴ strcpys( 복사할주소,  크기, 복사대상 )

 

// 2.
// strcpy_s() 함수 : 문자열 복사 (문자열은 =대입으로 초기화 불가)

// 1) 복사할 주소
// 2) 크기
// 3) 복사 대상

char* temp = new char[size +1];	// 실제길이의 +1만큼 동적할당
                           	// 마지막 \0 값 자리 확보
strcpy_s(temp, size + 1, name);
printf("temp : %s\n", temp);

 

3) strcat() : 문자열 확장 /  String Concatenate(잇다)

   ㄴ strcat( 확장대상, "추가할 문자열")

 

// 3.
// strcat()_s 함수 :  문자열 확장

// 1) 확장대상
// 2) 추가할 문자열 

char words[100] = { 0 };
strcat_s(words, "apple juice");

printf("%s\n", words);

 

4) strtok() : 문자열 자르기 / String Tokenize

ㄴ strtok("string", "구분자")

ㄴ 구분자를 발견하면 "\0" 끝처리 문자로 대치함

 

# define _CRT_SECURE_NO_WARNINGS 
// 문자열에 대한 처리 -> _s 안정성 개선 함수로 권장 (무시)

# include <Windows.h>
# include <stdio.h>
# include <string.h>

int main() {
	char dylan[] = "Do not gentle into that good night";
	char* token;

	token = strtok(dylan, " ");

	while (token != NULL) {
		printf("%s\n", token);
		token = strtok(NULL, " ");
	}

	system("pause");
}

 

5) strcmp() : 문자열 비교 / Compare

strcmp(a, b) = ?

-1  : a < b   음수

ㄴ  1  : a > b   양수

ㄴ  0  : a == b 0

 

// 5. 
// strcmp() 함수 : 문자열 비교 

char a[10] = "abc";
char b[10] = "def";

int result = strcmp(a, b);
printf("%d", result);

 

6) _itoa_s() : 형변환 (숫자->문자) / Integer to ASCII

ㄴ _itoa_s(변환할숫자, 저장할주소, 10)

*표준함수 아님 주의

# include <Windows.h>
# include <stdio.h>
# include <stdlib.h>
# include <string.h>

int main() {
	// 6.
	// 형변환 (숫자->문자)
	// itoa

	int num = 10;
	char str[100] = { 0 };

	// _itoa_s(int, char*, 10) 
	// 1) 변환할 수
	// 2) 저장할 주소
	// 3) 10진수

	_itoa_s(num, str, 10);
	printf("%s", str);

}

'C > ' 카테고리의 다른 글

[55] 가변 배열 컨트롤러  (0) 2020.07.27
[54] 동적할당 기본  (0) 2020.07.27
[51] 문자열 기본  (0) 2020.07.27
[00]-A. 캐릭터 이동  (0) 2020.07.24
[00] 캐릭터 이동  (0) 2020.07.24

댓글