· 문자열
* 문자열과 문자
- 우리는 지금까지 문자열을 사용하기 위해서 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 IDE
'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 |