ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어) 문자열, 문자열 배열 기본 개념
    컴퓨터 공부/C언어) 백준 단계별 풀이 2020. 3. 19. 12:07

    0개 이상의 문자 여러 개 배열( 길이가 0인 것도 문자열)

    ▶ char a[10] = " "(널문자로 초기화) --> 최대 9자 저장 가능

    왜냐하면, 문자열 맨 끝 무조건 \0(널문자)

    #널문자 아스키코드 : 0 (문자 '0'과 다름 주의!!)

    출력 형식 = %s (널문자 나올 때까지 출력, so 널문자 관리 조심 또 주의!)

     

    '문자'

    "문자열"

     

    char str[10] = "hello"

    나머지 자리는 자동으로 \0으로 채워짐 -->  h e l l o \0 \0 \0 \0 \0

     

     

    선언과 별로로 따로 문자열 변수에 값 넣기 : strcpy

    strcpy(str,"hello");

     

    포인터 --> 문자열 (선언)

    char * ptr = "hello"; ( 출력만 가능! 값 변경 x)

     

    ptr      상수테이블         s

    □  →      hello    ←      □  (char *s;

                                          s=ptr; )

                   .

                 


    문자열 배열

    2차원 배열!

    ▶ char str[3][10] = {"Hello", "World", "Program" };

    저장공간 생성, 변경 가능

    H e l l o \0 \0 \0 \0 \0
    W o r l d \0 \0 \0 \0 \0
    P r o g r a m \0 \0 \0

    str[0] --> "Hello" (1차원 배열)

    str[1] --> "World"

    str[2] --> "Program"

     

    strcpy (str[0] , "name");

    N a m e \0 \0 \0 \0 \0 \0
    W o r l d \0 \0 \0 \0 \0
    P r o g r a m \0 \0 \0

     

    ▶ char *ptr [3] = {"Hello", "World", "Program" };

    우선순위 []>* (3개짜리 배열 먼저 생성, 그 안에 포인터 변수 각각 생성)

    ptr

    *p *p *p

    각각의 포인터 --> 상수 테이블 속 문자들 가리킴.

     

    ※ scanf vs gets

    scanf는 숫자로 받음

    gets는 문자로 입력받음

     

    ※ fgets (str, 9, stdin) //9글자 제한, str에 저장, strdin : 표준입출력 (키보드)

    \n 엔터까지 저장!!!

    h i \n \0 \0 \0

    str[strlen(str-1)] = '\0';

    h i \0 \0 \0 \0

     

    '컴퓨터 공부 > C언어) 백준 단계별 풀이' 카테고리의 다른 글

    C언어) 문자열 처리 함수 정리  (0) 2020.03.19
    11720번) 문자열 계산  (0) 2020.03.19
    11654번 아스키코드  (0) 2020.03.19
    4344번 평균은 넘겠지  (0) 2020.03.19
    중간값 구하기  (0) 2020.03.19
Designed by Tistory.