반응형
배열을 이용한 문자열
아래의 코드에서 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 |