연재 완료/C Lang 이론

C언어 이론6. 문자형 배열 및 표준함수 몇가지

라이피 (Lypi) 2018. 5. 10. 19:19
반응형

내용 출처 : 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으로 변환


//이 외에도 여러 함수들이 많이 나오는데 일단 생략.

//필요하다 생각되면 내용을 추가하도록 하겠음.

//무엇보다도 함수는 예제와 함께 설명되어야 하니까...

반응형