내용 출처 : YES C (정보공학연구소 /생능출판사)
혼자 연구하는 C/C++ (SoEn.kr /와우북스)
Ⅰ. 문자열
① C언어에는 문자열에 관한 데이터형이 따로 없고, 배열을 이용해서 문자열을 처리한다.
② 문자열을 포인터를 이용해서 처리하는 것도 가능한데, 이는 배열의 이름이 포인터 상수이기 때문이다.
③ C언어는 문자열을 배열의 요소요소에 각각의 문자를 넣고 마지막에 '\0'(NULL문자)를 넣는 것으로 처리한다.
④ 즉, 모든 문자열의 마지막에는 '\0'문자가 들어간다. 예를들어 string이라는 6글자는 's','t','r','i','n','g','\0'의 7글자 7바이트로 저장된다.
⑤ 한문자라도 ''(홀따옴표)로 묶으면 문자상수이고, ""(겹따옴표)로 묶으면 널문자가 포함된 문자열상수가 된다.
Ⅱ. 문자열 변수의 초기화
① 문자열 변수를 선언하고 초기화하는 것은 char str[] = {'s','t','r','i','n','g',\0'}이나 char str[] = "string" 등의 방법을 사용할 수 있다.
② char str = "string"의 형태로는 선언 및 초기화 할 수 없다.
③ 이외에는 <string.h> 헤더파일에 미리 정의된 문자열 관련 함수를 이용하여 처리하는 방법들이 있다.
Ⅲ. 문자분류 및 문자변환 표준함수
① 아래 표의 함수들은 <ctype.h>에 정의되어 있다.
② is로 시작하는 함수들은 괄호 안의 문자에 대해서 해당하는 검사를 한 후, 참일 경우 0이 아닌 값, 거짓일 경우 0을 반환한다.
③ to로 시작하는 함수들은 문자를 다른 형태로 변환한다.
④ 아래 표의 함수들은 모두 문자를 하나씩 처리하는 함수이다.
함수 |
설명 |
해당문자 |
int isalnum(int c) |
알파벳 또는 숫자인가? |
a~z, A~Z, 0~9 |
int isalpha(int c) |
알파벳인가? |
a~z, A~Z |
int isascii(int c) |
ASCII문자인가? |
|
int iscntrl(int c) |
제어문자인가? |
BEL BS CR FF HT NL VT |
int isdigit(int c) |
10진수(0~9)인가? |
0~9 |
int islower(int c) | 소문자인가? | a~z |
int isupper(int c) |
대문자인가? |
A~Z |
int ispunct(int c) |
구두점 문자인가? |
! " # % & ' ( ) ; < = > ? [ \ ] * + - , . / : ^ _ { | } ~ |
int isspace(int c) |
공백 문자인가? |
CR FF HT NL VT space |
int isxdigit(int c) |
16진수인가? |
0~9, A~F, a~f |
int isgraph(int c) |
그래픽 문자인가? |
isalnum() or ispunct() |
int isprint(int c) |
출력 가능한 문자인가? |
isgraph() or isspace() |
int toascii(int c) |
ASCII로 변환 |
|
int tolower(int c) |
소문자로 변환 |
|
int toupper(int c) |
대문자로 변환 |
|
⑤ 아래 표의 함수들은 문자열을 변환하는 함수로서 <string.h>에 정의되어 있다.
함수 |
기능 |
char* _strupr_s(char* s) |
문자열을 대문자로 변환 |
char* _strlwr_s(char* s) |
문자열을 소문자로 변환 |
Ⅳ. 데이터 변환에 관련된 함수
① 아래 표의 함수들은 문자열을 정수형이나 실수형으로 변환하는 함수들로 <stdlib.h> 헤더 파일에 정의되어 있다.
함수 | 기능 |
int atoi(char* string) |
string을 int형으로 변환 |
long int atol(char* string) |
string을 long int형으로 변환 |
double atof(char *string) |
string을 double형으로 변환 |
char* _itoa_s(int value, char* string, int radix) |
int value를 주어진 기수법(radix)의 string으로 변환 |
char* _ltoa_s(long value, char* string, int radix) |
long value를 주어진 기수법(radix)의 string으로 변환 |
//이 외에도 여러 함수들이 많이 나오는데 일단 생략.
//필요하다 생각되면 내용을 추가하도록 하겠음.
//무엇보다도 함수는 예제와 함께 설명되어야 하니까...