본문 바로가기

Language/C

<C언어 기초> 07. 문자열

· 문자열

* 문자열과 문자

 - 우리는 지금까지 문자열을 사용하기 위해서 string자료형을 사용하였다. 문자열(string)은 실제로는 문자(char)자료형 데이터들의 배열이다.

 

 - string s = "HI!"; 와 같은 문자열 s가 정의 되어있다고 한다면 메모리 상에 다음과 같이 저장될 것이다.

 

 - s는 문자의 배열이므로 s[0] 과 같은 방법으로 문자에 접근할 수 있다.

 

 - \0은 문자열의 끝을 나타내는 널 중단 문자이다. 이는 모튼 비트가 0인 1바이트이다.

 

 - 이번에는 여러 문자열의 배열을 보자.

 

string names[3];

names[0] = "HARRY";
names[1] = "IU";
names[2] = "SUZY";

printf("%s\n", names[0]);
printf("%c%c\n", names[0][0], names[0][1]);

// HARRY
// HI

 

 - 먼저 길이가 3인 names라는 문자열의 배열을 정의하였다.

 

 - 각각에 string 이름을 넣어주었고, 첫 번째 값을 출력하면 HARRY가 나온다.

 

 - 마지막줄에서 names[0][0] 과 같이 2차원 배열을 통해서 문자에 접근하고 있음을 볼 수 있다.

 

* 문자열의 활용

 - 우리는 지금까지 문자열의 길이를 직접 입력하는 방식을 선택했었다. 그러나 실생활에서는 문자열과 문자열의 길이를 둘 다 받을 일은 거의 없을 것이다. 문자열만 받고도 문자열의 길이를 알 수 있기 때문이다. 물론 for문을 돌며 갯수를 샐 수도 있지만 string.h 라이브러리의 strlen()함수를 이용하면 편리하게  문자열의 길이를 알 수 있다.

 

 - 위에서 봤었던 예시와 비슷하게 사용자에게 문자열을 받아서 거기 담긴 문자를 하나 하나 출력하는 프로그램을 만들어 보자.

 

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

int main(void)
{
    string s = get_string("Name: ");
    printf("Output:\n");
    for (int i = 0, n = strlen(s); i < n; i++)
    {
        printf("%c\n", s[i]);
    }
}

// Name: harry
// Output:
// h
// a
// r
// r
// y

 

 - s를 통해 사용자에게 string값을 받고 for문을 돌며 i가 문자열의 길이(n) 가 될 때까지 문자를 출력한다.

 

 

 


 

 

참고

 

 

 이 글은 하버드 대학교 David Malan 교수CS50 강의를 수강 후 정리하며 쓴 글입니다. 코드는 C언어로 작성되었으며, 개발환경은 CS50 IDE에 최적화되어 있습니다. 일부 라이브러리는 다른 환경에서 별도의 설정이 필요할 수 있습니다.

 

 

 

CS50 공식사이트

 

CS50

Introduction to the intellectual enterprises of computer science and the art of programming. This course teaches students how to think algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data structures, encapsulation, r

cs50.harvard.edu

 

부스트코스

 

다 함께 배우고 성장하는 부스트코스

부스트코스(boostcourse)는 모두 함께 배우고 성장하는 비영리 SW 온라인 플랫폼입니다.

www.boostcourse.org

 

CS50 IDE

 

CS50 IDE

integrated development environment for students and teachers

ide.cs50.io

 

 

 

 

'Language > C' 카테고리의 다른 글

<C언어 기초> 06. 배열  (0) 2021.01.27
<C언어 기초> 05. 사용자 정의 함수  (0) 2021.01.24
<C언어 기초> 04. 자료형과 연산자  (2) 2021.01.23
<C언어 기초> 03. 루프  (0) 2021.01.22
<C언어 기초> 02. 조건문  (0) 2021.01.21