잡지식

c언어 배열 끝에 '\0'

문정훈 2021. 12. 12. 15:26

c언어에서

 

1) 만약 char a[] ="abc"; 이렇게 저장하면 실제 aa[2]을 만들지 않고

null문자를 포함해 a[3]를 만든다. 즉 a배열은 a[3] = "abc\0"; 이게 된다.

 

2) char* a = "abc"; 이것 역시 마찬가지로 "abc(\0)"을 뜻한다.

 

3) 만약 char a[2] ="abc"; 이렇게 저장하면 a[0] = 'a'; a[1] ='b'; a[2] ='c';

이렇게 저장하지만 printf(“%s\n”, a); 출력을 해보면

#include <stdio.h>
int main() {
	char a[3] = "abc";
	printf("%s\n", a);
}

위와 같이 abc가 뜨나 %s 자체가 null까지 읽어야하는데 null이 없는 문자열을 출력하므로 abc 끝에 저렇게 된다.

따라서 배열에 문자열을 지정할 때 char a[2] ="abc"; 가 아닌 char a[3] ="abc"; 으로 해줘야하는게 맞음.

 

 

'잡지식' 카테고리의 다른 글

scanf_s와 동적할당  (0) 2021.11.02