2013. 4. 3. 16:41ㆍ프로그래밍/C언어 TIP
◈ 문자형
문자형은 ASCII코드를 사용한다. ASCII코드는 American Standard Code for Information Interchange의 약자로 미국의 정보교환용 표준코드(부호)를 말한다. 아스키코드는 다음과 같은 표이다. 아래의 ASCII 코드는 대문자·소문자의 알파벳, 숫자, 기호, 제어부호 128종을 각 8비트로 코드화한 것이다.
ASCII코드는 주로 char형으로 저장되는데 그 이유는 ASCII코드의 순번 255로 char와 일치하기 때문이다. ASCII코드에서 10진수로 32번 이하의 번호는 제어문자를 표현한다.
예시) char A;
A = 'A'
printf("%c\n",A);
아스키의 'A'를 저정하고 있는 변수 A를 10진수로 출력하도록 하는 소스. char형으로 지정해준 A는 변수 A가 되고 작은 따옴표 안에 들어간 A는 %c라는 문자 형식 지정자에 의해 아스키의 문자가 된다.
아스키코드의 원화sign(\)은 10진수 92로 출력하고자 할 때 두 개를 써줘야 한다.아래 그림 처럼
A = '\\'; (한글Dos) A = '\\'; (영문 Dos)
원화sign을 하나 쓰게 되면 뒤에 붙은 작은 따옴표를 표시하지 말라고 인식하게 되기 때문에 하나를 더 써줘야 제대로 된 인식을 할 수 있다. 아래의 그림은 확장 아스키 코드이다
확장아스키코드가 만들어 지기 전까지 컴퓨터가 본격적으로 쓰여지기 시작할때는 불과 8비트밖에 되지 않는 정보처리량을 가졌다. 미국에서는 이 중 7비트를 이용하여, 총 128개의 출력 문자신호를 매핑 하였으며, 이중 표준으로 정해진 것이 ASCII 코드이다. 이후에, 사용되지 않던 나머지 1비트를 추가하여 영문에 존재하지 않는 128개의 유럽의 알파벳이나 문자표를 추가하였는데, 이것이 확장 ASCII 코드이다. 영문 DOS시절 HEX Editor등을 통해 쉽게 들여다 볼 수 있던 코드들이며, 현재의 윈도라든지, 리눅스 등에서도 이 코드들이 기반이 되어 움직인다. 표현범위는 2^8 개 ( 0~255사이 )이다. 한글도 아스키 코드로 표현이 가능하다. 문자열을 다루는 작업중에서 가장 불편하고 시간 소모가 많이 드는 일이 적절한 한글 코드변환이다. 한국코드는 표준으로 정해진 하나의 코드는 쓰는게 아니라 여러 코드를 각기 사용하기 대문에 데이터 입출력에 한 코드에서 다른 코드로의 변환 작업이 아주 빈번히 일어난다. 한글 코드의 종류이다.
1. 조합형 한글 코드
2. euc-kr(완성형 한글 코드)
3. cp949(확장형 완성형 한글 코드)
4. 유니코드
한글은 한글 코드에서 한글자당 2byt가 할당되어 표현된다. 따라서 2^16개의 글자가 표현가능하다.
◈ 문자열
문자열은 하나 이상의 연속된 문자이다. 작은 따옴표는 문자 하나에만 사용하고, 문자열을 표시할때는 큰따옴표는 사용한다. 이때 큰따옴표자체는 문자열에 속하지 않는다. 문자열이 메모리에 저장되면 맨 마지막 쉘은 \n 문자(NULL문자)가 나오게 되는데 이것은 C언어 컴파일러가 자동적으로 넣어주는 것이다. 문자 'A'와 문자열의 "A"는 다르다. 문자 'A'는 문자형 상수로 1바이트 내에 저장된다. 하지만 문자열 "A"는 컴파일러에 의해 주어진 NULL문자가 추가되어 2바이트인 문자열 상수다. Sizeof 함수를 이용하여 선언된 배열의 크기도 확인이 가능하다.
<예제 : p2-11>
/* 문자열을 화면에 출력하는 소스 */
#include <stdio.h>
int main()
{
char word[30]; // [30]은 배열의 선언으로 char 형의 문자를
30개 저장할 수 있는 공간을 선언한다.[30 byte]
printf("please enter anything: ");
scanf("%s", word); // %s는 문자열을 입력 받는 형식 지정자
printf("%s, this is what you typed.\n", word);
return 0;
}
입력을 Korea pride라고 쳤지만 출력은 Korea만 출력되었다. 왜 그럴까? 그 이유는 형식지정자 %s에 의해 스트링을 읽을 때 단락문자(공백문자, 탭문자, 개행문자 등)을 만나게 되면 읽기를 중단하기 때문이다.
Tip. 문자배열은 NULL문자가 없다.
'프로그래밍 > C언어 TIP' 카테고리의 다른 글
201303/선택문(if문, else if문, switch문) (0) | 2013.04.03 |
---|---|
201303/연산자. 형변환(type casting). (0) | 2013.04.03 |
201303/실수형. 형식지정자 %u. (0) | 2013.04.03 |
201303/정수형. scanf()함수. sizeof()연산자. (0) | 2013.04.03 |
201303/자료형 (0) | 2013.04.03 |