-
문자열 - 바로 실행해보면서 배우는 C언어CS/C언어 2019. 12. 22. 16:57
정수 데이터타입 char
크기 : 1바이트(8비트), -128 ~ +127
아스키 코드 방식으로 256개의 글자 표현 가능. (영소문자, 특수문자, 숫자 등)
* 아스키 코드 : 문자를 숫자에 하나씩 매칭시켜 표현하는 방식.
* 유니코드 : 문자를 2바이트로 처리해 256256 = 약 6만5천개 문자 표현 가능. (한글 등)
char ch = 'a';
형식지정자 %c 사용하면 문자('a')로 출력, %d 사용하면 숫자(97, 'a'의 아스키코드)로 출력됨.
char ch = 'ab';
char 데이터타입은 1바이트로, 한 글자만 담을 수 있다. 따라서 마지막으로 입력한 b만 담긴다.
char 타입 변수에 여러 글자를 담고 싶다면 char 타입 배열을 만들면 된다.
char ch[5] = "abcd";
한 글자를 출력할 때는 %c 형식지정자, 여러 글자가 담긴 문자열을 출력할 때는 %s 형식지정자 사용.
배열을 출력할 때는 어디까지 출력할 것인지를 컴퓨터에게 알려주기 위해
배열에 '종료 문자'(0, null, \0 등의 값)를 포함시켜야 한다.
ch[5] 배열의 크기가 5인데 4개의 문자만 담았기 때문에 마지막 한 자리는 자동으로 0이나 null 값이 되어 종료문자의 역할을 하게 된다.
⇒ 문자 배열(문자열)의 마지막 자리에는 0, null 등 종료 문자가 들어갈 자리가 있어야 한다.
문자열은 선언과 동시에 값을 할당해야한다.
선언 이후 값을 할당하려면
ch[0]= 'a';
ch[1] = 'b';
와 같이 하나씩 값을 대입하지 않는 이상 오류가 발생한다.
단, 문자를 입력받아 문자열(배열)에 저장하는 건 선언 이후에 해도 상관없다.
변수가 문자열이 아닌 문자인 경우, 입력할 때 1개를 초과해서 입력하면 처음 글자만 변수에 담긴다. abc → a
문자열을 scanf()로 입력받을 때는 "&"를 사용하지 않아도 된다. 배열의 경우 이름 자체에 주소가 담겨있어 따로 주소값을 알려줄 필요가 없기 때문이다.
문자열 갯수 세기 정답
#include <stdio.h> int main() { char ch[30]; int length = sizeof(ch) / sizeof(char) -1; scanf("%s", ch); int sum = 0; for(int i = 0; i<length; i++) { if(ch[i] == 0) { break; } sum++; } printf("%d", sum); return 0; }
※ 출처 : 바로 실행해보면서 배우는 C언어, 7강 문자열
'CS > C언어' 카테고리의 다른 글
조건문 - 바로 실행해보면서 배우는 C언어 (0) 2019.12.29 이중 반복문(실습) - 바로 실행해보면서 배우는 C언어 (0) 2019.12.28 일차원 배열 - 바로 실행해보면서 배우는 C언어 (0) 2019.12.28 연산자와 수식 - 바로 실행해보면서 배우는 C언어 (0) 2019.12.23 반복문 - 바로 실행해보면서 배우는 C언어 (0) 2019.12.21