본문 바로가기

C

[C언어] 문자열 함수(strlen, strcpy, strcmp)

반응형

1. int strlen(const char *str1) : 문자열 길이

  - str1의 문자열 길이를 반환한다.

  - 문자열 끝을 알리는 널 문자('\0')를 제외한 문자열 길이를 반환한다.

  - #include<stdio.h>

  - #include<string.h>

2. char strcpy(char *str1, const char *str2, n) : 문자열 복사

  - str2에서 str1로 n 개의 문자열을 복사한다.

  - #include<stdio.h>

  - #include<string.h>

3. char strcmp(const char *str1, const char *str2) : 문자열 비교

  - str1과 str2를 비교하여 -1, 0, 1의 값(정수)을 반환한다.

  - #include<stdio.h>

  - #include<string.h>

 

str1 > str2 1
str1 < str2 -1
str1 == str2 0

※ 사전에 나오는 순서를 기준으로 한다. (a, b, c ...)

 

#include<stdio.h>

int main(){
   char ch[] = {'K', 'O', 'R', 'E', 'A'};          // 초기화를 하면 배열의 크기([])를 생략 할 수 있다.
   char ch1[] = {'K', 'O', 'R', 'E', 'A', '\0'};   // '\0' : 널문자
   char ch2[20] = {'K', 'O', 'R', 'E', 'A', '\0'};

   char str1[] = "KOREA";
   char str2[20];   // 크기가 20이면, 영문자 19 or 한글 9자가 들어갈 수 있으며, 마지막은 공백(\n)이 저장된다.

   printf("ch : ");
   for(int i = 0; i < 5; i++)   // 문자를 출력할 때는 배열 하나하나를 출력해 주어야 한다.
      printf("%c", ch[i]);

   printf("\n");

   printf("str1 : ");
   for(int i = 0; i < 5; i++)
      printf("%c", str1[i]);

   printf("\n----------------------------------\n");
   printf("ch(문자열 출력) : %s\n", ch);   // (오류)'문자열'이 아니기 때문에 쓰레기 값이 출력된다.
   printf("ch(문자 출력) : %c\n", sh);     // (오류)
   printf("str1 : %s\n", str1);
   printf("\n----------------------------------\n");

   strcpy(str2, "장보고");   // (오류)str2 = "장보고", 문자열은 데이터열을 사용할 수 없다.
   printf("str2 : %s\n", str2);

   printf("\n----------------------------------\n");
   printf("ch의 길이 : %d\n", strlen(ch));     // (오류)마지막에 '\0'가 없어서 제대로 된 문자열 길이값이 출력되지 않는다.
   printf("ch1의 길이 : %d\n", strlen(ch1));
   printf("ch2의 길이 : %d\n", strlen(ch2));   // 배열의 크기를 지정해 주었어도, '\0'까지의 문자열 길이값이 출력된다.
   printf("\n----------------------------------\n");

   return 0;
}

 

반응형