14일차 - 문자열

💯 Days Of Code 챌린지 2주 후 문자열 리터럴과 다양한 C 문자열 연산에 대해 배웠습니다.

소개



C에서 문자열은 내장 유형이 아닙니다. C-스트링은 null 문자, "\0 "로 끝나는 1차원 문자 배열을 갖는 규칙입니다.
이것은 "abc "의 내용을 가진 C-스트링이 4개의 문자 'a', 'b', 'c' 및 '\0'를 갖는다는 것을 의미합니다.

문자열 리터럴



문자열 리터럴은 char의 null 종료 정적 지속 시간 배열을 나타냅니다. 정적 저장 기간이 있기 때문에 문자열 리터럴 또는 동일한 기본 배열에 대한 포인터는 자동 배열에 대한 포인터가 사용할 수 없는 여러 가지 방법으로 안전하게 사용할 수 있습니다.

예시:

const char *hello = "World";


위와 같이 achar *를 문자열 상수로 초기화할 때 일반적으로 문자열 자체는 읽기 전용 데이터로 할당됩니다. 문자열은 배열의 첫 번째 요소인 문자 'h'에 대한 포인터입니다.

문자열 리터럴은 읽기 전용 메모리에 할당되므로 수정할 수 없습니다. 수정하려고 하면 정의되지 않은 동작이 발생하므로 const 를 추가하는 것이 좋습니다.

수정 가능한 문자열을 만들려면 다음과 같이 문자 배열을 선언하고 문자열 리터럴을 사용하여 해당 내용을 초기화할 수 있습니다.

char modifiable_string[] = "hello world";


예시:

#include <stdio.h>

void  main() {
    const char *hello = "World";
    char foo[] = "bar";
    printf("%s\n",hello);
    printf("%s\n",foo);
    foo[0] = 'B';
    printf("%s",foo);
}


출력 -

World
bar
Bar



길이 계산: strlen()



예시:

#include <stdio.h>
#include <string.h>

void  main() {
    const char *str = "Hello World";
    int len = strlen(str);
    printf("%d\n", len); // 11
}


Note - strlen doesn't count '\0' while calculating the length of a string.




두 문자열 연결



소스 문자열과 대상 문자열은 대상 문자열을 소스 문자열에 복사하는 "strcat "함수에 제공됩니다. 소스 문자열이 변경됩니다.

strcat(source,target);


예시:

#include <stdio.h>
#include <string.h>

void  main() {
    char first[] = "Hello";
    char second[] = " World";
    strcat(first,second);
    printf("%s\n",first); // Hello World
    printf("%s\n",second); // World
}



문자열이 다른 문자열의 구성 요소인지 확인합니다.


strstr(s1, s2) 문자열 s1에서 문자열 s2의 첫 번째 항목을 찾습니다.

예시:

#include <stdio.h>
#include <string.h>

void  main() {
    char first[] = "Hello World in this World";
    char second[] = "World";
    char *i;
    i = strstr(first,second);
    printf("%s\n",i); // World in this World
}


사용할 수 있는 색인을 찾으려면 strlen .

예시:

#include <stdio.h>
#include <string.h>

void  main() {
    char first[] = "Hello World in this World";
    char second[] = "World";
    int i;
    i = strlen(first) - strlen(strstr(first,second));
    printf("%d\n",i); // 6
}

좋은 웹페이지 즐겨찾기