main 함수 안의 코드 처리 결과 출력하기

이번 강의에서는, main 함수 안에 작성한 코드들의 결과를 출력해 볼게요.
변수들이 가지고 있는 값들을 printf를 이용하여 출력하는 방법을 알아볼거랍니다.



강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




printf 함수로 변수 출력하기

원하는 폴더/디렉토리를 만들고 gedit 문서 편집기를 이용하여 "lec6_main.c"라는 이름의 C 파일을 만들어 볼게요.
그리고, 이전 강의 main 함수 실행하기에서 코딩한 main 함수의 내용을 복사해서, 아래처럼 새로 만든 파일에 붙여넣어 보세요. 이 코드에 새로운 코드들을 추가해 나갈 것이랍니다.

lec6_main.c
#include <stdio.h>

int main (int argc, char *argv[ ]) {
	int myvar = 3;
	char mychar = 'a';
	char mychar2 = 76;

	myvar += argc;

	printf("My first print\n");
}

printf 함수를 이용하여 main 함수의 전달인자 argc에 들어온 입력값과 우리가 생성한 myvar, mychar, mychar2들이 가지고 있는 값들을 출력해 볼거예요.
그런데, 줄10에서 코딩한 printf의 사용 방법은 가장 기본적인 것으로, 언급한 변수들이 가지고 있는 값들을 출력하기에는 한계가 있지요. 즉, printf의 또 다른 사용법에 대한 공부가 더 필요하답니다.

[문법] printf - 서식화된 문자열 (Formatted String)

중요한 format specifier(서식 지정자)는 암기해 두면 좋습니다. 아래 데이터타입에 따른 서식 지정자(format specifier) 표를 보면, 여러 서식 지정자들이 보이는데요. 지금까지, 우리는 int와 char 데이터타입만 공부했으니, 다른 것들은 그냥 넘어가세요. 아래 표는 문법노트에서도 찾아볼 수 있어요.

printf를 어떻게 사용해야할지 이해가 되셨나요?
이제 그럼 main 함수에 아래 줄11~줄12의 코드를 추가해 보세요.

lec6_main.c
#include <stdio.h>

int main (int argc, char *argv[ ]) {
	int myvar = 3;
	char mychar = 'a';
	char mychar2 = 76;

	myvar += argc;

	printf("My first print\n");
	printf("We run a C file~!: argc=%d, myvar=%d\n", argc, myvar);
	printf("Show me characters: mychar=%d, mychar2=%c\n", mychar, mychar2);
}

줄11에서는, 서식 문자열에 변수 argc와 myvar가 가지고 있는 값들을 포함시켜서 출력하고 있지요. argc는 main 함수에 전달되는 전달값 혹은 입력값들의 갯수를 의미한답니다. 두 변수는 모두 정수형(int)이라서 format specifier(서식 지정자)로 %d를 사용하고 있지요.
줄12에서는, mychar와 mychar2에 있는 문자 'a'와 ASCII code 76을 출력하고자 해요. 그런데, C/C++에서 문자들에는 사실 ASCII code값들이 지정되어 있다고 했지요? 즉, 문자들이 사실은 다 정수값들인 것이지요. 줄12에서는 그것을 확인해 보고자 해요. 그래서, 서식 문자열에서 'a'를 담고 있는 mychar을 위한 서식 지정자는 정수형을 위한 %d를 사용했고, 76을 가지고 있는 mychar2을 위해서는 문자형 서식 지정자인 %c를 사용하고 있지요.





컴파일 후 실행하기

이제, 강의 첫 대면..main 함수에서 했던 것처럼, 파일을 저장하고 gedit 편집기 닫기를 하세요.
그리고, 아래 줄1처럼 터미널에서 "gcc lec6_main.c"을 실행하여 컴파일하세요.

.../my_folder$ gcc lec6_main.c
.../my_folder$ ls
a.out  lec6_main.c
.../my_folder$

컴파일이 잘 되었다면, 줄2에서처럼 터미널 명령어 ls를 실행해 보세요. 줄3에서처럼, 컴파일 후 a.out이라는 실행파일이 생성된 것을 볼 수 있어요.

이제, 프로그램을 실행해 보지요.
아래 줄3에서와 같이 "./a.out"라고 명령하면, 우리의 프로그램이 실행된답니다. "./a.out"는 a.out 파일의 경로 정보를 담고 있다는 것 주목해 주세요. 즉, "./"에서 "."는 현재 폴더/디렉토리 (아래 예에서는 my_folder)를 의미하고, "/"는 "~안의"라는 의미를 갖지요. 고로, "./a.out"는 "현재 폴더안에 있는 a.out파일"이라는 의미인 것이지요.

.../my_folder$ ls
a.out  lec6_main.c
.../my_folder$ ./a.out
My first print
We run a C file~!: argc=1, myvar=4
Show me characters: mychar=97, mychar2=L
.../my_folder$

줄3에서 실행파일을 실행하면, 줄4~줄6에서와 같이 우리가 코딩한대로 출력이 되는것을 볼 수 있답니다.
줄5을 보면, argc의 값이 1이지요? 실행할 때 "./a.out"라고 하면, 실행파일 경로 "./a.out" 자체가 main함수의 전달정보로 주어지기 때문에 argc의 값이 1인 것이예요.
줄6에서는, 문자 'a'의 ASCII code값인 97이 출력되었고, mychar2 저장되어 있던 코드값 76에 대응하는 문자 'L'이 출력된 것을 볼 수 있지요.

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: lec6_main.c

혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오른쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로