Computer Science/C\C++

[C언어] 문자열 관련

hyunjin 2021. 5. 16. 17:27

아스키코드 

-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(메모리 공간에 할당된 문자열)