신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

strlen() 함수

strlen() 함수는 string length로 문자열의 길이를 반환해주는 함수이다.

 

#include <stdio.h>
 
int main(void) {
 
    char arr1[20] = { "Hello World!" };
    char arr2[20] = { "hi" };
 
    // strlen(배열) => 배열의 길이
    printf("arr1의 길이 = %d\n", strlen(arr1));
    printf("arr2의 길이 = %d\n", strlen(arr2));
 
    return 0;
}​

 

 

여기서 한가지 주의 할 것을 문자열의 끝을 알려주는 공백문자는 길이의 개수로 취급하지 않고 반환한다.

arr2 배열을 보더라도 알 수 있다.

 

 

 

strcpy()와 strncpy()

strcpy(a, b) : b문자열을 a에 복사

strncpy(a, b, n) : b문자열을 a에 n길이만큼 복사

 

#include <stdio.h>
 
int main(void) {
 
    char arr1[20] = { "Hello World!" };
    char arr2[20];
    char arr3[20];
    char arr4[20];
 
    strcpy(arr2, arr1); // 복사
    printf("strcpy() arr2 = %s\n\n", arr2);
 
    // +1을 해주는 이유는 공백 문자까지 넣기 위해서
    strncpy(arr3, arr1, strlen(arr1)+1);
    printf("strncpy() arr3 = %s\n\n", arr3);
 
    // +1을 안해주고 공백문자를 안넣게 되면 쓰레기값이 같이 출력된다.
    strncpy(arr4, arr1, strlen(arr1));
    printf("공백문자 안넣은 strncpy() arr4 = %s\n\n", arr4);
 
    return 0;
}
​

 

 

위 결과를 보면 알 수 있듯이 arr4에 끝에 이상한 값(한자)이 같이 출력되는 것을 알 수 있다.

 

이러한 쓰레기 값이 나오지 않게 하기 위해,

strncpy()를 사용할때는 공백문자도 같이 복사를 해줘야 한다.

 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기