반응형
배열을 이용한 문자열

아래의 코드에서 Hello World!에서 공백까지 포함해서 12글자인데 str[13]으로 표현한 이유는

문자열의 끝에는 \0(NULL)문자가 있어야 하기 때문입니다.

 

컴파일러는 문자열의 끝을 \0(NULL)문자로 판단합니다.

char str[13] = "Hello World!";

 

참고로 \0(NULL)과 공백은 다릅니다.

\0(NULL)은 아스키코드 값0에 해당하며,

공백은 아스키코드 값32에 해당합니다.

 

널 문자는 모니터 출력에서 의미를 갖지 않는다.

그래서 아무것도 출력이 되지 않을 뿐입니다.

 

 

 

문자열입력 : scanf함수

char형 배열 즉 문자열은

입력할때 서식문자로 %s로 받으며,

인자로 넣을때 주소연산자 &를 쓰지 않는다.

문자배열 즉, 문자열은 주소의 의미를 가지고 있습니다!

char str[50];

scanf("%s", str);

 

아래의 코드에서

문자열을 입력할때 abc def를 입력하지만

결과는 abc만 나온다. 아래의 코드는 문자열에서

널문자를 만나기전 까지 문자열의 인덱스를 순회하면서

한글자씩 출력하는 코드입니다.

그렇다면 abc 와 def사이에 공백이 있지만 끝나지 않을거 같지만

scanf는 공백기준으로 입력을 받는다.

그렇기에 입력버퍼에는 abc def가 들어가 있지만

scanf의 기능 때문에 입력버퍼에는 def가 남아있고

abc가 출력이 되는것입니다!

char str[50] = {0};
int index = 0;

printf("문자열 입력: ");           // abc def
scanf("%s" , str);
printf("입력 받은 문자열 : %s \n", str);      // abc

printf("문자 단위 출력 : ");
while(str[index] != '\0')
{
	printf("%c", str[index]);	// abc
    index++;
}

 

NULL문자 표현방법
  • '\0'
  • NULL
  • 0

 

아스키코드표 출처 : http://cafe.daum.net/flowlife

 

데이터 과학자(Data Scientist) 세상

컴퓨터 프로그래밍/데이터 과학자/데이터 엔지니어에 관심있는 분들과 함께합니다.

cafe.daum.net

 

반응형

 

반응형

'C' 카테고리의 다른 글

포인터 연산  (0) 2023.05.15
포인터와 배열의 관계  (0) 2023.05.15
C언어의 꽃 포인터!  (0) 2023.05.14
난수에 대하여!  (0) 2023.05.12
배열에 대하여!  (0) 2023.05.12

+ Recent posts