easy software

C언어 배열길이 출력하기 본문

C언어/포인터와 배열

C언어 배열길이 출력하기

JAVA 웹개발자 2015. 1. 14. 12:00

안녕하세요. 이번시간에 다뤄볼 내용은 배열의 길이를 출력하는 것입니다.

 

사용자로부터 문자열 하나를 입력받고 그 문자열의 길이를 출력해보려고 하는데요,

 

C언어에서 문자열의 끝은 항상 \0 으로 이루어져있습니다.

 

즉, 길이를 알아내려면 \0 전 까지의 길이만 알면 된다는거죠.

 

반복문에 \0 를 만나기 전까지만 길이를  재라고 하면 되겠죠?

 

\0 은 null문자라고 해서, 아스키 코드 0번이며 화면에 출력되지않는 문자입니다.

 

분명히 메모리는 차지하고 있지만 출력은 되지않고 문자열의 끝을 알려주는 녀석이죠.

 

문자열에 항상 null 문자가 포함되기 때문에 abcd라는 문자열을 배열에 저장하려 한다면 배열의 길이

는 5가 되어야 합니다.

 

아래의 코드를 보고 이해해 보시기 바랍니다.

 

*단, 이번 예제에서는 문자열을 '안녕하세요 홍길동 입니다.' 가 아닌 '안녕하세요홍길동입니다'로 입력해야 합니다.

 

이유는 scanf함수에 공백(띄어쓰기, tab, 엔터)을 입력하면 그 공백을 기준으로 각각 하나의 문자열로 인식하기 때문입니다.

 

차후에 학습할 다른 함수에서는 문자열을 공백이 있어도 그대로 입력받을 수 있지만, 지금 시간에는 공백없이 입력해야 함을 주의하세요.

 

#include <stdio.h>

 

int main(void){

 

 char arr[100];
 int leng = 0;

 

 printf("문자열을 입력하시면 길이를 출력합니다. : ");

//문자열을 입력받을 때는 변수앞에 &를 입력하지 않음을 주의
 scanf_s("%s", arr, 100);//scanf_s 사용시 마지막 인자로 배열의 길이를 전달해야 함

 

 while (arr[leng] != '\0')
      leng++; //null 문자인 \0을 찾지 못하면 길이를 1 증가시킴

 

     printf("길이 : %d\n", leng);

 

 return 0;


}

Comments