C언어 기초 문법 - helloworld 출력해보고 printf, scanf, 줄바꿈 이해하기
가장 먼저 C언어에서 가장 기초적으로 다뤄야 하는 문법인 printf 함수에 대해서 알아가는 시간을 가져보겠습니다.
visualstudio를 켜주시고 혹은 gcc도 가능합니다.
#include <stdio.h>를 하는 이유는 standard input output이라는 헤더파일을 포함한다라는 의미입니다.
저 헤더파일 속에 내장된 printf 함수와 scanf 함수를 사용해보려고 합니다.
(헤더파일이란 미리 visualstudio 프로그램이 실행 될 때 함수들을 만들어서 모아 놓은 겁니다. )
int main() { 을 하는 이유는 C언어는 순차적으로 함수들을 실행하면서 그 함수들의 흐름대로 프로그램이 동작하도록 하는 원리로 이루어져 있습니다.
그래서 어떠한 프로그램이 동작하여도 메인 함수 내부에서 첫 시작을 하고 메인함수 내부에서 끝납니다.
따라서 main이 없는 C언어 프로그램의 동작은 기대하기가 어렵습니다.
이제 오늘 알아볼 printf 함수는 출력창에 쌍 따음표 안에 있는 내용을 출력하여 줍니다.
ctrl+F5키를 눌러주시고 결과화면을 보시면
위와 같이 나오게 됩니다. 그런데 계속하려면 아무키나 누르십시오 . . . 이 hello world!를 출력하고 바로 옆에 있어서 보기가 흉합니다. 소스코드를 수정하겠습니다.
위에 보이는 소스코드에서 달라진 것이 무엇이 있을까요? printf 함수 쌍 따음표 안에 \n이 추가가 되었습니다.
결과를 보시면
위와 같이 출력이 됩니다. 그렇다면 \n이 출력을 할 때에 줄바꿈을 해준다는 것을 알 수 있습니다.
그럼 이제 다음 단계로 넘어가셔서 scanf함수를 사용해 보겠습니다.
먼저 scanf함수를 사용하기에 앞서서 short, int, long, double 등과 같은 자료형과 변수에 대해서 아셔야합니다.
메모리 참조에 대해서도 아셔야 하는데 그거는 나중에 다룰 내용이라 그냥 직관적으로 봐주시면 감사하겠습니다.
변수란 말 그대로 변할 수 있는 수를 의미합니다.
자료형이란 변수에 메모리를 할당해주는데 그 메모리를 얼마나 할당해줄지 사전에 정하는 것입니다.
소스코드를 보시면
위에서 사용된 변수라는 것은 무엇일까요? a입니다. 그렇다면 자료형은 무엇일까요? int 입니다.
말 그대로 int a = 0; 이라는 것의 정의를 내리면 '메모리에 int(4byte)만큼의 공간을 할당해놓고 그 공간의 이름은 a라고 한다. 그리고 그 공간에는 0이라는 값을 넣어 놓는다.'입니다.
이후, scanf_s라는 함수를 사용하며 %d &a라는 것이 나왔습니다. '%d란 정수를 담겠다.'를 의미합니다. &a란 메모리 공간중에 a라는 이름을 가진 공간에 저장하겠다.'를 의미합니다. 왜 근데 하필 실수는 아니고 계속 정수 얘기만 하는지 궁금하실거 같습니다. int라는 자료형이 정수를 담을 수 있는 공간4byte를 할당할 수 있도록 하는 것이기 때문에 정수를 다루고 있습니다. 실수는 float이나 double과 같은 자료형으로 할당할 수 있고 %d가 아닌 %f를 사용하시면 됩니다.
이제 scanf_s 함수를 통해서 a라는 이름을 가진 메모리 공간에 넣고싶은 값을 담았습니다.
그렇다면 다음 라인을 출력하게 된다면 영희의 나이는 (%d -> 내가 입력한 수)살 인거 같아요..!라고 출력이 될겁니다.
이 출력 창에서 42를 입력하고 엔터를 치게 된다면 아래와 같이 나오게 됩니다.
예쁘게 나올 수 있도록 소스코드를 수정해보겠습니다.
띄어쓰기를 한번 해주고 \n 이라는 줄바꿈 문자를 사용했습니다.
조금더 깔끔해졌습니다. 한번 소스코드를 다 직접 쳐보시고 왜 이렇게 동작을 할지에 대해서 생각해보세요!
프로그래밍은 타이핑을 직접 해보지 않으면 실력이 늘지 않습니다. 좋은 하루 되세요~
추가설명 +)
scanf에서 _s를 붙히는 이유는 과거에는 안붙혔지만 보안이 업그레이드 되면서
최신버전에서는 붙히도록 권장이 아닌 필수가 되었습니다.