
문자열을 다루기 위해서는 문자열 형식을 가진 변수가 필요하다.
사용자로부터 문자열을 입력받고 이를 다른 문자열과 합쳐서 출력하는 프로그램을 C로 작성해보자.

사용자의 이름을 받아서 저장할 변수를 스크래치와 같이 answer이라고 정했다.
이 때 유의해할 점은 C는 오래된 언어이기 때문에 변수가 저장하는 데이터의 종류를 아주 정확하게 명시해줘야 한다.
따라서 저장하고자 하는 값의 종류가 문자열(string)이라는 것을 알려줘야 하며, 이때 string을 형식지정자라고 합니다.
프로그래밍 언어에서 =는 오른쪽에 있는 것을 왼쪽에 지정한다는 의미이며, 이를 할당 연산자라고 한다.
get_string 함수가 사용자의 이름을 반환하면 그 이름을 anwser이라는 변수에 저장하는 것이다.
이제 printf 함수로 출력을 해보자.

우리는 answer이라는 변수에 들어있는 이름을 출력을 해야하기 때문에 %를 사용해야 하며, 이 때도 어떤 종류의 인자를 받는지 말해줘야 한다.
이름이라는 문자열을 받기때문에 string에서의 s를 %뒤에 붙여서 인자를 받아주면 된다.
printf("hello, %s\n", answer);
#include <cs50.h>
#include <stdio.h>
int main(void) {
string answer = get_string("What's your name?\n");
printf("hello, %s\n", answer);
}
이 코드에서 가장 위에 포함된 cs50.h 파일 안에 string이라는 문자열 형식과 get_string 이라는 함수에 대한 코드가 포함되어 있다. 이 파일을 포함해야만 전체 코드를 컴파일 하고 실행할 수 있다.
터미널창에 아래 명령어를 입력하여 컴파일을 할 수 있다.
$ clang -o string string.c -lcs50
여기서 -o string 은 string.c 를 string.out 이라는 머신코드로 저장하도록 하는 명령어이다.
-lcs50은 “link”라는 의미를 지닌 -l 이라는 인자에 우리가 추가로 포함한 “cs50” 파일을 합친 것으로, 이를 통해 컴파일시 cs50 파일을 연결하도록 알려줄 수 있다.
다소 복잡한 위의 과정은, 아래의 make 명령어를 통해 간단하게 수행할 수도 있다.
$ make string
이와 같이 작성한 코드를 컴파일 하고 실행하면, 사용자에게 입력값을 받고 문장 내에 포함하여 출력하는 프로그램이 된다.
"좋아하는 동물을 알려주세요"로 질문하여 동물 이름을 animal이라는 변수에 저장하고, 이를 "내가 좋아하는 동물은"으로 출력해주는 코드를 작성해보자.
