2010.07.19 23:00

printf()에서의 포맷 지정자

                                                                      < SourceCode 1 >
                                                                         < 출력결과1 >
                                                                          < SourceCode 2 >
                                                                            < 출력결과2 >
%Nd : 정수 유형의 데이터를 N칸에 맞게 10진수로 출력
%No : unsigned int 유형의 데이터를 N칸에 맞게 8진수로 출력
%Nx : unsigned int 유형의 데이터를 N칸에 맞게 16진수로 출력
%Nu : unsigned int 유형의 데이터를 N칸에 맞게 10진수로 출력
%Nhd : short int 유형의 데이터를 N칸에 맞게 10진수로 출력
%Nho : unsigned short int 유형의 데이터를 N칸에 맞게 8진수로 출력
%Nhx : unsigned short int 유형의 데이터를 N칸에 맞게 16진수로 출력
%Nhu : unsigned short int 유형의 데이터를 N칸에 맞게 10진수로 출력
%Nld : long int 유형의 데이터를 N칸에 맞게 10진수로 출력
%Nlo : unsigned long int 유형의 데이터를 N칸에 맞게 8진수로 출력
%Nlx : unsigned long int 유형의 데이터를 N칸에 맞게 16진수로 출력
%Nlu : unsigned long int 유형의 데이터를 N칸에 맞게 10진수로 출력



%f  : float유형의 데이터를 소수점 형태로 출력 (4byte )
%e : float유형의 데이터를 지수형태로 출력
%lf : double유형의 데이터를 소수점 형태로 출력( 8byte )
%le : double유형의 데이터를 지수형태로 출력
%Lf : long double유형의 데이터를 소수점 형태로 출력( 10byte )
%Le : long double유형의 데이터를 지수형태로 출력

            < SourceCode 3 >

                              < 출력결과3 >

%Nf : 소수점 이하 N개의 숫자만을 출력                                       
ex) %.2f = 소수점 이하 둘째 자리까지 출력

%s : string형태
%p : pointer형태
%c : char형태
저작자 표시 비영리 변경 금지
신고
Posted by Daos
2010.07.11 16:08
                   <  출력 결과 >





< HelloWorld.c Source Code >
1. #include<stdio.h>
#include명령문은 C 전처리기 지시자 (preprocessor directive)의 한 예로 컴파일 하기 전에 소스 코드를 대상으로 몇가지 사전 작업을 실시하는데 이것을 전처리(preprocessing)이라고 합니다.
 이 첫 번째 라인은 컴파일러에게 stdio.h파일에 있는 정보를 포함시키라고 지시하는데 이 효과는 stdio.h파일의 전체 내용을 키보드로 입력한 것과 동일한 효과를 가져옵니다. include파일들은 많은 프로그램들이 공통적으로 사용하는 정보를 공유하는 편리한 방법을 제공합니다.
 stdio.h ( standard input/output header ) 파일은 모든 C 컴파일러 패키지의 일부로 제공되며, 여기에는 printf()와 같은 입력 함수와 출력 함수에 대한 정보가 들어있습니다.

 일반적으로 헤더파일에는 컴파일러가 최종 실행 프로그램을 만드는데 사용하는 정보가 들어있습니다. 예를들어 상수를 정의하거나 함수 이름과 그 함수들이 어떻게 사용되어야 하는지를 지시합니다. 하지만 함수의 실제 코드는 헤더파일이 아니라 미리 컴파일된 코드로 구성된 라이브러리 파일에 들어있습니다. 필요한 라이브러리 코드를 찾는 일은 컴파일러의 링커 부분이 담당하고요. 즉, 헤더파일은 컴파일러가 프로그램을 바르게 구성하도록 안내하는 역할을 합니다.

2. main() 함수
 C프로그램들은 하나 또는 그 이상의 함수(function)들로 구성됩니다. 함수는 C 프로그램을 구성하는 기본 모듈이고요.
()는 함수라는 것을 말합니다.
 여기서 main()은 프로그램에서 반드시 존재하여야 하며, 모든것들이 여기서 부터 시작됩니다.

  • 함수의 기본적인 구조
    반환타입 함수명(전달인자)
    { <- 함수 시작
          return 반환타입에 맞는 반환값을 반환;
    } <- 끝
    • 함수의 시작과 끝은 begin, end와 비슷한 역할을 합니다.
  • mian()를 쓰는 여러 방식...하지만 표준을 지킬것.
    1. main()
        C90 표준은 이 형식을 마지못해서 지원했지만, C99 표준은 지원하지 않습니다. 따라서 사용하는 컴파일러가 이형식을 지원하더라도 사용하지 않는것이 좋습니다.
    2. void main()
    몇몇 컴파일러는 지원하지만 어떠한 표준도 이것을 옵션으로 정하지 않았습니다. 그러므로 컴파일러들은 이 형식을 굳이 지원할 필요가 없으며, 실제로 몇몇 컴파일러들은 지원하지 않습니다.

    즉, 표준 형식을 지켜야합니다. 안그러면 다른 컴파일러로 프로그램을 옮길때 고생하지 않습니다.

3. 주석

 


주석을 사용하는 이유는 자기 자신을 포함한 누군가가 프로그램을 이해하기가 훨씬 쉬워지기 때문입니다. 또한 자신이 만든 프로그램을 후임자나 다른 팀원이 유지보수, 수정 등 코드를 고쳐야 하는 경우 소스 코드에 아무런 설명이 없으면 그 사람이 이해해야하는데 걸리는 시간과 거기서 받는 스트레스가 엄청날 것입니다. 하지만 설명을 해놓았다면... 그런일이 훠얼씬 줄어 들겠지요?
  주석은 여는 기호인 /*와 닫는 기호인 */사이에 들어 있는 내용을 말합니다. 반드시 내용은 /* */ 한 쌍으로 존재하는 곳 안에 입력해야 에러가 나지 않습니다.
 하지만 한 라인 주석( // 내용 ) 은 닫는 기호 없이 사용 할 수 있으며 // 기호 뒤로는 전부 주석처리 됩니다.

4. 선언 명령문 (declaration statement)
현재 위의 소스 코드 내에는 없지만.

int num;

을 선언 명령문( declaration statement )라고 합니다.
 선언 명령문은 원래 전통적인 규칙으로 함수의 블록 시작 위치에 선언해야 했지만, C99에서는 C++의 관행을 받아들였기 때문에, 블록 안의 어디에서나 변수를 선언 할 수 있다.

5. printf()
 printf()함수는 전달인자안의 큰따옴표 사이에 있는 텍스트를 화면에 출력해 주는 함수입니다. 프로그램이 이 함수가 있는 라인에 도착하면 printf()로 제어가 넘어가고, 그 호출된(called)함수가 일을 끝내면 제어가 다시 원래의 호출한(calling) 함수(여기서는 main())로 넘어갑니다.
하지만 \n 기호는 출력 되지않았는데 이것들은 이스케이프 시퀀스(escape sequence)의 한 예로 \n은 newline(개행) 문자를 나타냅니다.
예를 들어 \t는 탭(Tab), 백스페이스 문자(Backspace)는 \b로 나타냅니다. 이스케이프 시퀀스(escape sequence)는 언제나 백슬래시(\)문자로 시작합니다.

신고
Posted by Daos

티스토리 툴바