본문 바로가기

Programming/C

[C lang] 2. printf(), scanf()

1. 기본적인 구조

 

드디어 C언어 명령어 세계에 입장하셨습니다 ㅋ

 

먼저 명령어를 설명하기 전에 프로그래밍을 어떻게 해야하는지 순서가 어떻게 되는지 부터 설명하겠습니다

 

일단 아직은 모르시겠지만 예시를 하나 들겠습니다

 

// Test 

#Include <stdio.h> 

int main (void) { 

printf ("나랑께"); 

return 0; 

} 

 

대충 구조가 이렇게 됩니다 

 

윗줄부터 차례로 설명하자면  

 

글씨가 /* */ 이걸로 감싸져 있네? 이런걸 주석 이라고 합니다 ,

 

주석이란 프로그래머가 프로그래밍을 하다 명령어 옆에 메모하고 싶은거나 아이디어나 프로그램 설명을 써 놓고 싶을 떄 

 

사용하는 것 입니다 

 

이 주석으로 처리된 부분은 소스파일을 컴파일 할 때 아무런 영향을 주지 않습니다. 만약 저 주석을 풀어버린다면 당연히 에러가 나겠죠  

 

주석은 2가지가 있습니다 여러줄 한번에 주석처리 , 한줄만 처리 

 

윗줄에 나온것처럼 /* */ 가 여러줄 한번에 주석처리하는거고요 // 가 한줄만 주석 처리하는 겁니다. 

 

우리가 소스파일에 저 주석처를 하게 되면 주석 처리된 부분이 초록색으로 변할겁니다 ㅋ 그걸로 주석처리가 된지 않됬는지 구분하시면 되겠습니다

 

또 주석안엔 주석처리를 해서는 안됩니다.

 

 

그다음 #include < stdio.h > 한번 그냥 무지식 상태에서 해석을 해봅시다 ..

 

#  ...음 이건 뭐냐ㅋㅋㅋ include 는 뭘 포함하는거같고 stdio.h 란 파일을 포함하는거 같네 ㅋ

 

맞습니다 ㅋㅋ 그대로 해석하시면 되요

 

여기서 좀 알아야 되는건 # 입니다. 이게 엄청?나요

 

이거의 이름은 '전처리기' 말대로 컴파일러가 컴파일을 하기전에 먼저 처리하라는 의미에요 ㅋ

 

stdio.h 는 헤더파일 입니다. 이 파일을 해석하면 Standard Input Output ( 표준 입출력 ) 줄여서 stdio

 

헤더파일이란 표준 라이브러리 함수 ( printf 나 scanf 이런 함수들 )들의 동작을 따로 정의해 놓은 파일 입니다

 

그러니 저런 함수를 사용하기전에 그 함수가 있는 헤더파일을 먼저 위에 적어주고 명령어를 사용해야겠죠?

 

 

그다음 int main ( void ) { 뭐시기.. } 이런게 보이는군요

 

main 은 메인 함수라 부르고 , 프로그램 실행 시 운영체제에 의해서 맨 처음 호출되고 맨 나중에 종료되는 겁니다

 

우리는 이제 이 함수 안에다가 명령어를 막 써 넣겠죠

 

근데 옆에있는 int 는 뭐냐고요? 뒤 함수 파트에서 나오는 개념인데 함수 앞에 저런 자료형을 써서 출력형태를 나타냅니다

 

int 는 미리 배우자면 정수형을 나타냅니다. main 옆 (뭐시기)는 입력형태를 나타냅니다 그리고 void 는 해석대로 '비어있는' 이란 뜻입니다 

 

전체를 해석해보면  입력 없이 ( void 니까 ) main 함수를 호출해서 출력은 정수 ( int 니까 )로 하라는 의미입니다

 

이해가 잘 안되시죠? 점차 공부하다 보시면 깨닫게? 되실 겁니다 ㅋㅋㅋ

 

그리고 함수의 처음과 끝은 중괄호로 표시합니다 그래서 { } 이렇게 묶어준거고요 .

 

또 중괄호 안에 이제 명령어를 써 넣는거죠

 

그리고 printf 란 함수 맨 뒤에 보면 세미콜론 ; 이 있는데요. 이것도 매우 중요합죠

 

새미콜론은 문장의 끝을 의미하는 마침표 같은 존재입니다.

 

그리고 return 은 반환과 종료의 의미를 갖고 있습니다.

 

retrun 0; 같은 경우는 0을 반환하고 main 함수를 종료해라 정도로 해석이 되겠죠?

 

0을 쓴 이유는 이 함수는 정수형 함수니 정수를 반환해야 하기 때문입니다

 

그리고 추가로 말하면 main 함수는 출력형 입력형 없이 걍 main() 이렇게만 써도 됩니다

 

 

이제 드디어 명령어를 배워 봅시다 

 

2. printf 함수

 

모든 프로그래머들이 초보 때 다 한번씩 써보고 해봤던 거   Hello World! 

 

한번 저 문잘 출력해 봅시다 ...  어떻게요?  

 

문자열을 출력할 때는 printf 란 출력함수를 사용합니다 . 그전에 printf 함수를 사용하기전에 printf 함수가 정의되있는 stdio.h 를 먼저 인클루드를 해야겠죠? 

 

printf 함수의 사용법은 printf ( " 여기다 문자열 넣으셈 " );  이렇게 쓰시면 됩니다 . 이 사용법 말고도 더 많은 사용법이 존재합니다 는 좀 있다가요..

 

#include <stdio.h> //printf 함수를 사용하기 위해서 

main () {
printf ( "Hello World");
 // Hello World 를 출력한다

} 

아 그리고 결과는 콘솔창에 결과가 뜹니다.

 

한번 소스창에 이렇게 치고 컴파일을( 단축키 -> F7 )하고 실행(디버깅)[단축키 -> F5]를 해보면   

출력되고 바로 프로그램이 꺼지는 현상이 발생합니다. 이걸 방지하기 위해서 getchar(); 이나 _getch(); 이나 system("pause");  를 사용합니다. 이 명령어는 뒤에서 다시 배우니 간략히 설명하면 , 순서대로 ,

getchar(); -> 문자1개를 받아들일 때 까지 기다림 // stdio.h 파일 필요

_getch(); -> 문자1개를 받아들일 떄 까지 기다림 (차이점은 생략 나중에 설명 ) // conio.h 파일 필요

system ( "pause"); -> 시스템 명령어 말대로 일시정지 // stdlib.h 파일이나 windows.h 파일 필요

 

이 중 하나를 마지막 부분에 넣어주면 바로 꺼지는걸 막을 수 있다.

 

그럼 성공적으로 바로 꺼지지 않고 Hello world 가 출력된걸 볼 수 있다.

 

printf 의 추가 기능을 설명하면

 

2-1. 추가 기능

 

특수문자가 사용이 가능한데

 

- 특수 문자

 

\a -> 경고음 소리 발생

\n -> 개행함 ( 엔터라 보면 됨 )

\b -> 백스페이스 ( 뒤로 한칸 )

\t -> 수평 탭

\v -> 수직 탭

\\ -> 역슬레시

\' -> 작은 따옴표

\" -> 큰 따옴표

 

등이 있다 . 사용법은 똑같이 printf 안에 넣어주면된다 ex) printf ("\a\a\n\a");

 

딱히 이 표를 외울 필요는 없다 그냥 필요할 떄 참고 하면 된다

 

또 서식문자가 사용이 가능하다.

 

- 서식 문자

 

먼저 예를 들어보면 printf ("%d", 1+1 );

 

이 명령의 뜻은 화면에 %d 를 출력하란 뜻이 아니라 1+1 인 2를 출력하란 뜻이다.

 

10진수는 Decimal 16진수는 HeXadecimal 8진수는 Octal 이며 각 알파벳 d,x,o 를 따서 만들었다

 

이런 서식문자를 사용해서 정수 실수 소수 문자 문자열 진수 등을 출력시킬 수도 있다.

 

아래 표도 그냥 몇개 필요한거만 외우고 필요하면 참고하면 된다

 

%d , %i -> 10진수 정수 ( 양수 음수 모두 )

%x , %o -> 16진수 , 8진수 ( 양수만 가능 )

%f , %lf -> 10진수 실수 ( 양수 음수 모두 가능 )

%c -> 문자 1개

%s -> 문자열

%u -> 10진수 정수 ( 양수만 )

%e -> e 표기법에 의한 실수

%E -> E 표기법에 의한 실수

%g -> 소수점 이하 자리 수에 따라 %f , %e  둘 중 하나 선택

%G -> 소수점 이하 자리 수에 따라 %f , %E 둘 중 하나 선택

%% -> %기호 출력

 

사용법은 printf ( "서식문자",맞는형태); ex) printf ( "%d 뺴기 %d 는 %d 이다 \n", 5 , 2 , 5-2 );

//순서대로 써줘야 한다

 

- 필드 폭 지정

 

출력되는 데이더의 필드 폭을 설정할 수 있다.

 

%03d -> 필드 3칸 확보 오른쪽 정렬 출력 나머지 공간은 0으로 출력

%-3d -> 필드 3칸 확보 완쪽 정렬

%+3d -> 필드 3칸 확보 온른쪽 정렬 양수는 + 음수는 - 붙여서 출력

 

사용법은 똑같고 저 값은 바꿔서 사용이 가능하다. 만약 실수 4자리 나머지 공간 0으로 하려면 %04f 이렇게

 

 

3. scanf 함수  

이제 scanf 함수이다

 

이 함수는 입력받는 함수이다 . 문자나 문자열이나 숫자나 , 서식문자의 형태에 따라서 입력받는 형태는 달리지겠죠 ㅋ

 

또 이 함수를 사용하기 위해서는 stdio.h 파일을 인클루드 해야한다

 

사용법은 다음과 같다

 

scanf ( "서식문자",&변수);

 

이것도 다음단원에 나오는 과정인데 . 미리설명하겠습니다, 변수란 입력받은 데이터를 저장하는 임시 공간이라고 생각하시면 됩니다

 

이 변수도 자료형태에 따라서 저장하는게 달라지겠죠

 

int 는 정수형

char 은 문자

float 실수 .... 등 있습니다

 

선언은 어디다 하냐면 함수의 맨 윗부분에 하고 방식은 이렇게 합니다          자료형태 변수명;            ex) int number;

이런형식으로 선언하면 된다

 

그럼 총 사용법을 적어보면

 

int age;

 

scanf ( "%d", &age );     // 왜 변수앞에 & 를 붙이는지도 나중에 나오는 개념이기 때문에 나중에 설명하겠다.

 

이렇게 입력을 받는거다

 

만약 입력받은걸 출력하고 싶으면

 

int age; // 추가로 말하면 바로 여기서 age 값을 정할 수도 있다

 

scanf ( "%d", &age );

printf (" 님의 나이는 %d살임", age );

 

이런형식으로도 사용이 가능하다.

 

 

 

오늘강의는 여기서 끝 ㅋ

 

'Programming > C' 카테고리의 다른 글

[C lang] 콘솔창 바로 안 꺼지게 하기  (4) 2014.04.26
[C lang] 4. 상수와 연산자  (0) 2014.04.26
[C lang] 3. 변수?!  (0) 2014.04.26
[C lang] 1. 컴파일러 설치하기  (0) 2014.04.26
[C lang] 0. C 언어란?  (0) 2014.04.26