c언어에서
1) 만약 char a[] ="abc"; 이렇게 저장하면 실제 a는 a[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 |
---|