CS50 Sandbox
폴더 아이콘 옆의 +버튼을 눌러서 파일을 생성해주자
int main(void)
{
}
의 뜻은 시작한다의 의미를 가지고 있다.
앞으로 작성할 코드는 모두 이 코드 안에 쓰게 될 것이다.
printf("hello,world");
C언어에서 printf는 say와 동일하다. 출력하고 싶은 것이 있을 때 사용한다.
코드의 끝에는 항상 ; 을 적어줘야 하며, 글자나 단어, 문장을 적을 때는 항상 ""으로 감싸줘야 한다.
컴파일러 Compiler
이렇게 작성한 코드는 소스코드라 불리며, 컴퓨터가 이해하기 위해서는 머신코드로 변환해야 한다.
이렇게 변환을 해 주는 프로그램을 컴파일러라고 부른다.
>_ Terminal
작성한 코드는 하단의 터미널Terminal에 명령어를 작성함으로써 실행시켜 볼 수 있다.
우리가 입력한 코드는 소스코드이기에 이것을 머신코드로 변경을 해야한다.
$ clang hello.c
$는 ~를 진행하겠습니다의 뜻을 가지고 있으며, 위 코드를 터미널에 입력하게 되면 a.out 이라는 머신코드가 생성된다.
$ clang hello.c
$ ./a.out
hello,world$
./a.out은 a.out 코드를 실행한다는 뜻이고 Enter를 누르면 hello,world$가 나타난다.
$가 hello,world 뒤에 나타난 것은 줄바꿈을 해주지 않아서 나타난 문제이다.
줄바꿈은 \n 을 입력하면 된다.
#include <stdio.h>
int main(void)
{
printf("hello,world\n");
}
$ ./a.out
hello,world$
위 처럼 printf문 뒤에 \n을 입력하고 다시 a.out 파일을 실행시키면 변하는 것이 없다.
새로 컴파일을 하지 않았기 때문이다.
$ clang hello.c
$ ./a.out
hello,world
처음부터 다시 hello.c 파일을 머신코드로 변환하고 실행시켜주자.
잠깐, 그럼 머신코드인 a.out의 파일명은 변경할 수 없는걸까? 당연히 변경할 수 있다.
$ clang -o hello hello.c
$ ./hello
hello,world
컴파일을 할 때 -o "생성할 머신코드 파일명" "컴파일 할 소스코드 파일명" 을 적어주자
hello로 머신코드를 생성했고, 정상적으로 작동하는 것을 확인할 수 있다.
$ ls
a.out* hello* hello.c
$ rm a.out
rm: remove regular file 'a.out'? y
$ ls
hello* hello.c
$
존재하는 파일들은 ls 를 통해 확인할 수 있는데 파일명 뒤에 * 표시가 붙은 것은 머신코드이다.
삭제는 rm 명령어를 통해 진행할 수 있다.
댓글