1. Home
  2. 프로그래밍 강좌/C
  3. [C언어 강좌] #2-1 printf 로 마음대로 출력하기

[C언어 강좌] #2-1 printf 로 마음대로 출력하기

// By File (pgh268400) 


#include <stdio.h>

int main(void){
    printf("Hello C World!!\n");
    return 0;
}

 

안녕하세요 파일입니다. 항상 프로그래밍 언어에서 시작하는 것은 출력을 해보는 건데요. 우선 저번 소스코드부터

시작하겠습니다. 저번에 실행을 하면 Hello World!! 가 출력되는 것이 나왔는데 기억나시나요?

 

저번에는 아무것도 모르고 따라만 했지만 오늘은 이걸 상세하게 알아보겠습니다.

 

전처리기

 

#include <stdio.h>

우선 시작은 요렇게 시작하네요.

 

우선 include라는 영어는 대부분 아시겠지만 

 

include 미국·영국 [ɪnˈkluːd] 발음듣기 영국식 발음듣기 중요도 별점 2개 다른 뜻(2건) 예문보기
1. 포함하다   2. ~을 (~에) 포함시키다

 

무엇을 포함하다, 포함시키다는 의미죠? 

한마디로 stdio.h 를 포함시킨다고 할 수 있겠는데요. 여기에 특수문자 #이 들어갔는데 이런 것을 전처리기라고 합니다.

컴파일러가 컴파일을 하기 전에 먼저 처리하라는 의미입니다.

 

stdio는 Standard Input Output(표준 입출력)의 줄임말입니다. 즉 stdio.h라는 헤더 파일을 끌어오는 겁니다.

C언어에서 사용에 편하라고 함수들을 구현해놨는데 그것들이 헤더 파일에 묶여서 정의되어있고 

stdio.h 에는 printf( ), scanf( ) 등이 있어서 이것을 사용할 수 있는 겁니다.

 

C언어에 존재하는 여러 헤더 파일들

 

 

 

메인함수

 

int main(void){       
  printf("Hello C World!!\n");    
  return 0;
}

 

그리고 main( )이라는 함수를 정의했습니다.

main 함수는 모든 프로그램의 시작점이며(Entry Point 라고도 합니다.), 프로그램을 처음 실행하면 운영체제(OS)가 main() 부분을 찾아서 프로그램을 실행하게 됩니다.

 

함수라.. 기억이 날듯 말듯 합니다

함수는 초등학교 때도 배웠을 건데요. f(x) = x + 2 라던지...

예를 들면 상자에 과자 3개를 넣었는데 5개가 나왔다던지 하는 겁니다.

함수에는 입력값(INPUT)이 있고 안에서 처리하는 식(FUNCTION)출력 값(OUTPUT)이 있습니다.

 

여기서 main 은 함수의 이름으로 프로그램 실행 시 이름 그대로 맨 처음에 실행되고 맨 나중에 종료되게 됩니다.

 

void라고 적힌 곳은 함수가 받는 입력값(argument)입니다.

void라는 말 그대로 입력받는 값이 없다는 겁니다.

 

저희 목적은 print로 출력만 하는 거니깐요.

void 이므로 쓰지 않아도 정상 작동합니다.

 

앞에 int (정수)는 자료형인데 함수 출력 값(반환 값)의 형태를 지정합니다.

 

* 함수라는 용어는 뒤에서 한번 더 배우게 되니 거기서 제대로 배우시면 되겠습니다.

 

http://blog.naver.com/PostView.nhn?blogId=sharonichoya&logNo=220339079484&parentCategoryNo=&categoryNo=22&viewDate=&isShowPopularPosts=false&from=section

C언어에서의 자료형 표입니다.

이것을 다 암기하거나 이해하실 필요는 없고

필요할 때마다 참고하시면 됩니다.

 

자료형에 관해선 나중에 변수 강의 때 한 번 더 쓰겠습니다.

 

함수란?
본 글에서 함수라는 단어가 많이 나올겁니다. 프로그래밍에서 함수는 수학에서 함수와 비슷하게 입력과 출력을 가질 수 있고, 여러 줄의 코드에 이름을 붙여서 사용하는 코드 뭉치입니다.
지금 이 정도 설명으로썬 함수를 이해하기 매우 어렵습니다. 그렇기에 무언가 영어로 이름이 써져있고 () 괄호가 쳐져있으면 다 함수라고 부르는구나. 이해하시면 됩니다. ex) main(), printf(), scanf()...
자세한 내용은 함수 파트에서 자세히 배우게 됩니다.

 

 

 

함수처리

 

그리고 내부에서 처리하는 식이 바로 "Hello World!!"를 출력하는 부분입니다.

대괄호로 묶은걸 볼 수 있는데 main 함수가 작동 시에 저 대괄호 내부의 내용이 실행됩니다.

 

그러면 내부에서 처리하는 소스를 보겠습니다

 

printf("Hello C World!!\n");
return 0;

 

printf 함수는 출력할 때 사용하는 함수입니다. stdio.h 에 정의되어 있습니다.

 

저렇게 문자열을 출력할 때는 "(큰 따옴표)를 사용해 묶어서 출력합니다.

 

작은따옴표는 사용할 수 없습니다. (일부 언어에서는 인정함 ex) python )

 

\n 은 개행 문자로 New Line의 약자입니다. 한 줄 띄라는 의미겠죠?

 

그리고 ; 를 세미콜론이라고 하는데 우리가 글을 쓰면서 마침표를 찍듯 C언어에서의 마침표입니다.

 

그리고 마지막으로 프로그램이 끝나면 컴퓨터는 이것을 모르니깐 알려줘야 합니다.

return의 기능은 2가지입니다. 1. 특정값을 반환함 2. 함수의 종료를 알림

return 0; 의 의미의 경우 0을 반환하고 main() 함수를 종료한다는 의미 입니다.

 

보통 0은 False, 1은 True 이므로 main 함수가 false(거짓) 가 되어 종료가 되는 겁니다.

숫자를 반환하는 이유는 아까 함수 반환 값의 형태를 int로 지정해서 그렇습니다

 

주석

그리고 설명하진 않았지만

// By File (pgh268400) 

이 부분은 주석입니다

보통 프로그램에서 부연 설명할 때 쓰는데 

 

// By File (pgh268400) 

#include <stdio.h>

int main(){   
/* 
파일의 C언어 강의 
전체 주석  
*/ 
  
printf("Hello World!!"); 
return 0; 
}

// By File (pgh268400) 

#include <stdio.h>

int main(){   
  printf("Hello World!!"); //부분 주석 
  return 0
}

 

전체 주석 시엔 /* */ 로 사용하고 부분 주석 시엔 // 로 사용합니다.

프로그램을 많이 만들다 보면 뭐가 뭔지 모르는데 이럴 때 달아둔 주석이 크게 도움이 됩니다.

 


 

 

 

벌써 과부하가 올 거 같다고요?

정상입니다. 처음 배우는 건 뭐든 어려우니깐요

뇌는 많이 쓸수록 노화에 저항하는 능력이 강해진다고 합니다.

힘들어도 더 파이팅하고 따라가 봅시다!!

 


 

특수문자 처리하기

 

// By File (pgh268400) 

#include <stdio.h>

int main(){   
printf("출력 연습해볼까\n\n");   //개행 문자를 통한 2줄 띄기
printf("\\ 역슬래시 출력하기\n"); 
printf("큰따옴표 : \" \n"); 
printf("\작은따옴표 : \'"); 


return 0; 
}

출력하다 보면 의문이 생길 겁니다

문자열을 묶을 때는 "를 사용한다고 했는데 만약에"를 출력하고 싶으면 어떻게 해야 하는 거지?

printf로 그대로 출력하면 될까? 하고 해 봤으나 역시 오류가 납니다.

 

이런 문자를 출력하기 위해 \(역슬래시) 기호를 사용하는데요

 

\a 경고음 소리 발생
\b 백스페이스
\f 폼 피드
\n 개행
\r 캐리지 리턴
\t 수평 탭(tab)
\v 수직 탭
\\ 역슬래시
\' 작은따옴표
\" 큰따옴표

 

위의 표와 소스코드를 참고하며 직접 출력하는 연습을 해보세요 ^^

아마 이 중에서 사용하는 건 

역시 이 표는 암기할 필요 없고 모를 때마다 여러 번 반복해서 익히면 됩니다

출력할 때 오류 나거나 겹치는 무언가가 있다면 \기호를 사용해서 표기하면 됩니다.

 

아마 이 중에서 사용할 건 표에서 하이라이팅 해둔 부분 정도 일 겁니다..

 

 

서식문자 처리하기

이제 문자열도 마스터했겠다.. 숫자를 출력해봅시다!

일단 간단한 덧셈을 먼저 해볼까요?

 

3+5 를 해볼겸.. 소스코드를 작성했는데

 

#include <stdio.h>

int main(){   

printf(3+5);  

return 0; 
}

 

애석하게도.. 작동하지 않네요 왜그럴까요? C언어에서는 이런식으로 바로 계산해서 출력할 수 없고

서식문자란 것을 사용합니다. 

 

printf( ) 의 이름이 왜 print( ) 가 아니고 printf( ) 인지 궁금해 하실분이 있을건데요 f는 Formatted 의 약자로 포맷,서식을 나타내는데 서식문자를 사용해 다양한 값들을 출력 할 수 있습니다.

 

예제를 통해 보겠습니다

 

#include <stdio.h>

int main(){   

printf("3+5는 ? = %d", 3+5);  
return 0; 
}


3+5는 ? = 8
--------------------------------
Process exited after 0.02388 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .

 

 

%d 라는 서식문자를 이용해 3+5 를 표현했군요! 문자라는 이름그대로 마치 문자처럼 적고 뒤에 %d 의 값을 

지정해 줬습니다. %d는 10진수 정수(+, - 둘다 가능) 를 표현할때 쓰는 서식문자 입니다

 

%d, %i 10진수 정수 (+, - 둘다가능)
%x, %o 16진수 정수 , 8진수 정수 (+ 만 가능)
%f, %lf, %Lf 10진수 실수 (+, - 둘다 가능)
%c 한개의 문자
%s 문자열 (string)
%u 10진수 정수(+ 만 가능)
%e e 표기법에 의한 실수
%E E 표기법에 의한 실수
%g 소수점 이하 자리 수에 따라 %f, %e 둘중 하나를 선택
%G 소수점 이하 자리 수에 따라 %f, %E 둘중 하나를 선택
%% %기호 출력

서식문자의 종류입니다. 역시 여러번 보면서 익혀두세요.

 

 

#include <stdio.h>

int main(){
	printf("%d + %d = %d\n", 12,5,12+5);
	printf("%d - %d = %d\n", 20,5,20-5);
	printf("%d * %d = %d\n", 9,5,9*5);
	printf("%d / %d = %d\n", 11,5,11/5); //몫구하기 -- 소숫점을 사용하지 않음 
	printf("%d / %d = %d", 11,5,11%5); //나머지 구하기 
	return 0;
}

12 + 5 = 17
20 - 5 = 15
9 * 5 = 45
11 / 5 = 2
11 / 5 = 1
--------------------------------
Process exited after 0.02345 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .

사칙연산 모두 가능합니다.

알아둘점은 나눗셈시 나머지는 %기호 몫은 / 기호 입니다 

나눗셈시 115로 나누면 정수에선 2이상 나누지 못하므로 몫이 나옵니다.

 

#include <stdio.h>

int main(){
	printf("10진수 : %d, 16진수 : %x, 8진수 정수 : %o\n", 30,30,30);
	printf("10진수 : %d, 16진수 : %x, 8진수 정수 : %o", -50,-50,-50);
	return 0;
}

10진수 : 30, 16진수 : 1e, 8진수 정수 : 36
10진수 : -50, 16진수 : ffffffce, 8진수 정수 : 37777777716
--------------------------------
Process exited after 0.02567 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .

 아까 위표에서 16진수는 %x로 , 8진수는 %o로 표기한다고 했습니다.

음수를 표기해보면 10진수는 표현이 가능하나 16진수와 8진수에선 쓰레기값이 나옵니다.

즉 양수만 표현 가능합니다.

 

2편에서 계속됩니다.... 

 

SNS 공유하기
네이버밴드
카카오톡
페이스북
X(트위터)

최근글
인기글
이모티콘창 닫기
울음
안녕
감사
당황
피폐