티스토리 뷰

CS/C

[C언어] 문자열

무화과(Fig) 2023. 7. 5. 00:02

C는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해줘야 한다.

 

만약 저장하고자 하는 값의 종류가 문자열(string)이라면 컴퓨터에게 이를 알려야 한다. 이때 string을 형식 지정자라고 하며 형식지정자는 string 이외에도 여러가지 종류가 있다.

 

*형식 지정자 모음

형식지정자 -> 표현하는것 -> 대응되는 자료형

%d -> 10진수 정수 (4바이트) -> int

%ld -> 10진수 정수 (8바이트) -> long

%f -> 실수형 (4바이트) -> float

%lf -> 실수형 (8바이트) -> double

%c -> 문자 -> char

%s -> 문자열 -> char*

%o -> 8진수 -> int

%x -> 16진수 -> int

%p -> 주소값 -> void*

%u -> 부호없는 10진수 (4바이트) -> unsigned int

%lu -> 부호없는 10진수 (8바이트) -> unsigned long

 

 


string answer = get_string("What's your name?\n");

일반적으로 = 는 같다 라는 뜻이다. 하지만 프로그래밍 언어에서는 오른쪽에서 왼쪽으로 가는 화살표와 비슷하다고 생각하면 좋다.

 

쉽게 말해 오른쪽에 있는 것을 왼쪽이 지정한다는 것이며 이를 할당 연산자라고 한다.

 

 

 

 

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

int main(void)
{
    string answer = get_string("What's your name?\n");
    printf("hello, %s\n", answer);
}

위 코드에서는 get_string 함수가 사용자의 이름을 반환한다면 그 이름을 answer이라는 변수에 저장하는 것이다.

 

이후 printf 함수로 출력 할 때 answer이라는 변수에 들어있는 이름을 출력해야 하기 때문이 %을 사용해준다. 이 때도 어떤 종류의 인자를 받는지 명시해야한다. 여기에서는 이름이라는 문자열을 받기 때문에 string에서의 s를 %뒤에 붙여서 인자를 받아준다.

 

 

 

맨 윗 줄을 보면 stdio.h 라는 파일에서 printf를 가져왔던 것 처럼 get_string 함수도 cs50.h라는 파일안에 저장되어 있다.

이 파일을 포함해야만 전체 코드를 컴파일 하고 실행할 수 있다.

 

 

따라서 터미널창에 아래 명령어를 입력하여 컴파일을 할 수 있다.

$ clang -o string string.c -lcs50

여기서 -o string 은 string.c 를 string.out 이라는 머신코드로 저장하도록 하는 명령어이다. -lcs50은 “link”라는 의미를 지닌 -l 이라는 인자에 추가로 포함한 “cs50” 파일을 합친 것이다. 이를 통해 컴파일시 cs50 파일을 연결하도록 알려줄 수 있다.

 

 

하지만 이런 복잡한 과정 대신 make 명령어를 통해 간단하게 컴파일을 할 수도 있다.

$make string

 

이와 같이 작성한 코드를 컴파일 하고 실행하면, 사용자에게 입력값을 받고 문장 내에 포함하여 출력하는 프로그램이 된다.

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

[C언어] 자료형, 형식 지정자, 연산자  (0) 2023.07.25
[C언어] 증감연산자  (0) 2023.07.19
[C언어] 조건문과 루프  (0) 2023.07.13
[C언어] C 기초  (1) 2023.07.02
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함