아스키코드
-128개로 구성, 따라서 7개의 비트로 표현가능
-대소문자간의 값의 차는 32(대문자가 먼저임)
문자(character)의 표현 방법
-따옴표로 묶어서 표현
-%c 사용하여 출력
컴파일러
-문자데이터를 아스키코드로 변경시킴
-%c 전달 시 아스키코드 값을 아스키코드 문자로 변환시킨다.
문자열(string)
-문자열 변수 : 변경가능한 문자열을 저장할 수 있는 변수
-'A':문자
-"A":문자열
-출력할때 %s 사용
NULL 문자
-문자열의 끝을 나타낸다. (\0)
-어디서 종료되는지 알 수 가 없어 표시가 필요
-NULL이 없으면 쓰레기값이 들어감
-문자(character)에는 \0값이 안들어감 그냥 1byte BUT 문자열에는 뒤에 \0dl emfdjrka
(ex. 똑같이 A를 써도 문자에서는 1byte 문자열에서는 2byte)
문자배열의 초기화
-char str[4]="";
-char str[]="abc";
...
문자열 상수
-텍스트 세그먼트(text segment)에 저장
-char *p = "HelloWorld";
-변수p(4byte) :텍스트 세그먼트의 첫번째 주소값을 저장 /데이터 세그먼트(값을 변경할 수 있는 메모리 영역)
-텍스트 세그먼트(값을 읽기만하고 변경할 수는 없는 메모리 영역)
문자의 표준 함수(라이브러리 함수)
■putchar 함수
-int putchar(int c);
-putchar('A');
-성공시 0 아닌 값을, 실패시 EOF(-1) 반환
■getchar 함수
-int ch=getchar(); //ch에 문자 저장
■puts 함수
-int puts(conint puts(const char * s);
-puts("Hello World!"); //출력됨
-출력버퍼로 이동시킴
■gets 함수
-char * gets(char * s); //성공 시 매개변수로 전달된 값을, 실패시 NULL 포인터 반환
-char str[20];
-gets(str); //배열 str에 문자열 저장
-엔터키 입력되는 순간, 입력 버퍼로 이동 //입력버퍼 : 임시 메모리 공간
-\n 문자를 지정한 메모리 공간에 저장하기 전에 널 문자(\0)로 바꿈
■strlen 함수//#include <string.h>
-문자열의 길이를 계산해서 반환하는 기능의 함수
-한글은 한 글자당 3byte
-NULL 문자는 문자열 길이에 포함되지 않음
■strcpy, strncpy 함수
visual에서는 _s 써야하는 걸로 알고있음
#include <string.h>
char * strcpy(char * dest, const char * src);
char * strncpy(char * dest, const char * src, size_t n);
src 에 전달된 문자열을 dest에 복사
size n은 얼만큼 복사할건지
*숫자 셀 때 NULL 문자 포함해야함
■strcat, strncat 함수
-두개의 문자열을 연결하고 싶은 경우
-dest 뒤에 src 붙여줌
-strncat의 세번째 전달인자는 덧붙일 문자열의 최대길이를 제한하는 것임
#include <string.h>
char* strcat(char* dest, const char* src);
char* strncat(char* dest, const char* src, size_t n);
■strcmp, strncmp 함수
-두 문자열이 동일하면 0 반환
-사전 편찬 순서상 s1이 앞서면 0보다 작은 값 반환
-s2가 앞서면 0보다 큰 값 반환
#include <string.h>
int strcmp(const char * s1 , const char * s2);
int strncmp(const char * s1, const char * s2, size_t n);
문자열 배열과 문자열을 참조하는 포인터
char vStr[3]="String"; //vStr은 변수형태의 문자열
char * cStr="String"; //cStr은 문자열의 주소값 저장, 참조하는 문자열은 상수 형태의 문자열
ex. char * cStr=0x12;
0x12번지 : String(메모리 공간에 할당된 문자열)
'Computer Science > C&C++' 카테고리의 다른 글
[C언어] 함수 중심의 포인터 활용 (0) | 2021.05.19 |
---|---|
[C언어] 메모리 공간의 동적 할당 (1) | 2021.05.19 |
[C언어] 포인터 배열, 헷갈리는 부분들 (0) | 2021.05.13 |
[C언어] dptr을 이용해 *ptr1과 *ptr2 관계 서로 바꾸기 (1) | 2021.05.10 |
[C언어] 포인터 개념 (0) | 2021.05.10 |