C언어/ char 배열 선언시 주의사항

리얼니트·2021년 9월 10일
0

1학년

목록 보기
13/24
post-thumbnail

char 배열 선언시 저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언해야한다는 점을 명심하자.

여분의 공간, 문자열의 마지막에 널 문자(/0)를 저장해야 하기 때문이다.

널 문자는 아스키 코드 값이 0인 문자를 말하며 문자 상수로는 /0으로 표현된다. 문자열의 끝을 표시하는 용도로 사용된다.

str[80]이라는 배열에 길이가 5인 문자열을 입력받는다면, 나머지 부분은 모두 널 문자로 채워진다.
printf는 배열 크기와 상관없이 널문자가 나올때까지만 출력하도록 만들어졌다. 따라서 정확하게 초기화된 문자열만 출력할 수 있다.

char str[80] = "applejam";
printf("%s\n",str);
scanf("%s", str);
printf("%s\n",str);

결과
applejam
grape(입력)
grape

scanf함수는 사용자가 입력한 문자열 다음에 배열에 빈 부분 모두를 널 문자로 채운다. 따라서 마지막 행의 printf함수에서 grapejam이 아닌 grape만 출력이 되는 것이다.

char arr1[3], arr2[3];
    scanf("%s %s", arr1, arr2);
    printf("%s %s",arr1,arr2);

입력
123 456
결과
456

배열 크기를 3으로 잡아놓고 입력값 길이를 3으로 주었기 때문에 결과값이 이상하게 나온다.

char arr1[4], arr2[4];
    scanf("%s %s", arr1, arr2);
    printf("%s %s",arr1,arr2);

입력
123 456
결과
123 456

(참고 : 혼자 공부하는 C언어, 서현우 저)

profile
방구석에서 잘 살아요

0개의 댓글