CS50_c언어_(1)[c기초, 문자열]

김두미·2022년 6월 18일
0
post-thumbnail

1. C 기초

#include <stdio.h>

int main(void) {
	printf("hello, world!\n");
}

hello, world!를 출력한 뒤 줄바꿈 하는 코드입니다.

실습은 cs50을 위한 사이트에서 진행하였습니다.
자세한 사용법은 다음 주소에서 확인할 수 있습니다.
https://www.boostcourse.org/cs112/lecture/133454?isDesc=false


좌측의 리스트를 통해 파일들을 확인할 수 있습니다.
우측 상단에서는 코드를 입력할 수 있습니다.
좌측 하단은 터미널 창입니다. 여기는 명령어 프롬프트가 있어 $ 옆에 명령어를 입력할 수 있습니다.


앞서 블로그에 정리하였듯이 컴퓨터는 0과 1의 이진수만을 이해할 수 있습니다.
저희가 방금 입력한 코드는 이진수가 아닌 영어에 가깝습니다.
이것을 컴퓨터가 이해할 수 있는 이진수로 바꾸기위해서는 compiler를 이용합니다.
즉, compiler는 [소스코드] -> [머신코드] 로 번역하는 역할입니다.



터미널의 명령어 프롬프트에 clang <코드 파일 이름>을 통해 컴파일할 수 있습니다.
clang은 코드를 컴파일하는 프로그램의 이름입니다.


저는 hello.c라는 파일을 만들었으므로
clang hello.c를 입력하 후 enter을 눌렀습니다.


파일 트리에 a.out파일이 생겼음을 확인할 수 있습니다.
a.out은 머신코드입니다.
이를 실행하려면 ./<파일 이름>을 입력해주면 됩니다.


이렇게요.

그러면 hello, world! 가 잘 출력됩니다.
./a.out을 입력하였습니다. 이것은 현재 디렉토리에 있는 a.out을 실행시킨 것입니다.

만약 코드를 수정하고 싶다면 수정한 후 다시 컴파일해주어야합니다.
터미널 창에 < clang hello.c > 입력

만약 이름을 a.out이 아닌 임의로 지정하고 싶다면 명령행 인자를 추가하면 됩니다.

  • o 를 중간에 입력하여 지정할 임의이 이름을 넣어주면 됩니다.
    hello로 만들기 위해
    clang -o hello hello.c라고 입력하였습니다.


파일 트리에 hello가 잘 추가되었습니다.


명령어 ls를 통해 현재 폴더 또는 디렉토리에 있는 파일의 리스트를 확인할 수 있습니다.

"* " 붙은 파일 이름은 컴퓨터가 이해할 수 있는 머신코드라는 의미를 갖고있습니다.

여기서 알 수 있는 것을 한줄로 말하면
마우스와 그래픽 UI로 할 수 있는 모든 일은 명령어만으로도 할 수 있다. 입니다.






2. 문자열

#include <stdio.h>

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

'%s'는 형식 지정자입니다.
그 뒤에 s는 string에서 따온 글자로 string이 들어갈 형식임을 알려줍니다.

string(문자열)은 쌍따옴표 안에 들어간 0개 이상의 문자배열을 의미합니다.

컴퓨터 공학에서 "="는 같다는 뜻이 아니라 할당연산자입니다.
오른쪽에 있는 내용을 왼쪽에 넣는다.



이 코드를 그냥 clang을 하게 되면 에러를 발생시킵니다.
왜냐하면 string이 뭔지도 모르고, get_string함수가 무엇인지도 모르기 때문입니다.
이를 해결하기 위해

#include <cs50.h>

를 추가해주면 됩니다.

cs50과 연결해주기 위해서 -lcs50도 붙여야합니다.
두 코드가 한 프로그램으로 실행될 수 있도록 하기위해서 입니다.

이렇게요!


이렇게 하면 string 파일이 잘 만들어지고


잘 실행됩니다.

그런데 clang의 명령어가 좀 길지않나요?
그때 사용할 수 있는 똑똑한 명령어 make가 있습니다.

make는 string.c(소스코드)를 찾아 머신코드로 컴파일 해줍니다.
그 머신코드의 이름은 string으로 생성됩니다.



만약 jack.c 파일이 있다면
make jack을 하면 jack파일이 생기고 ./jack을 이용해 실행시킬 수 있습니다.

profile
개발자를 꿈꾸는 대학생

0개의 댓글