컴퓨터 프로그래밍/C

C언어 표준 출력 함수/서식 문자

나노콛 2019. 7. 18. 13:40

(복습) 아래 소스 코드에서 틀린 것을 찾아보세요.

#include <stdio.h>

int main()
{
 int value;
 char value2;
 int intvalue3;
 int char;
 int do;
 int 1int;
 int _char;
 int str 123;
 int #num1;
 int $num2;

 return 0;
}

#include <stdio.h>  //전처리기
int main()          //함수
{                   //함수의 범위 { }
 int a = 0;         //변수의 선언과 초기화
 printf("Hello World \n");  //함수 호출
 return 0;          //함수의 리턴(종료)
}

위의 소스를 실행하면 Hello World가 출력되는 것을 알 수 있습니다.
그러나 이런 출력 또는 입력의 기능은 C언어의 자체 기능이 아닙니다.

개발 회사에서 제공하는 Library 함수가 있는데요 이것을 표준 Library라고 합니다.

stdio.h에 표준 Library 선언이 되어있습니다.
#include를 살펴봅시다.
std(standard) i(input) o(output).h(헤더 파일)
이 헤더 파일 안에 입출력에 관련한 함수들이 있어서 printf("Hello World \n"); 이 함수를 호출하여 글자 출력을 확인할 수 있습니다.


표준 출력 함수

#include <stdio.h>

int main()
{
 puts("Hello~");
 puts("World");

 return 0;
}

puts()는
입력된 문자열을 출력하고 개행을 합니다.
문자열은 쌍따옴표를 이용합니다.
여기서 개행이란 한 줄을 띄운다는 의미입니다.

#include <stdio.h>

int main()
{
 int num1=10;
 int num2=20;

 printf("Hello~"); //인자가 1개
 printf("World");

 printf("num1 = %d\n",num1); //인자가 2개 콤마로 구분
 printf("num2 = %d\n",num2);

 return 0;
}

pritnf()는
입력된 인자 값을 출력합니다.
그리고 가변 인자 함수로써 인자의 개수가 변합니다.
인자의 개수는 ,(콤마)로 구분합니다.

서식 문자는 %d입니다.
서식 문자는 출력 형태를 구성합니다. 여기서 %d는 10진수 정수 형태로 출력한다는 의미입니다.

printf("num1 = %d\n",num1); 여기에서
뒤의 num1은 변수이며 변수가 아닌 실제 값을 써도 됩니다.

마지막으로 \n 이것은 개행을 의미합니다. 한 칸 띄운다는 의미입니다.

이것을 출력하면 아래와 같이 나오는데요

소스를 수정하여 아래와 같이 만들어보세요 방법은 여러 가지입니다.


서식 문자(포맷 스트링)

#include <stdio.h>

int main()
{
 int a = 97;

 printf("10진수 : %d \n", 30); //decimal
 printf("8진수 : %o \n", 30);  //octal
 printf("16진수 : %x \n", 30); //hexa

 printf("문자 : %c \n", 'a');  //char
 printf("문자 : %c \n", a);
 printf("문자 : %c \n", 0x61);

 printf("문자열 : %s \n", "String");  //string
 printf("주소 : %p \n", &a);  //pointer

 return 0;
}

서식 문자는 %d %o %x %c %s %p가 사용되었습니다.
각각 주석에 되어있는 영어의 의미를 가지고 있으니 기억하기도 쉽습니다.

printf("문자 : %c \n", 'a'); 이 내용을 보면
문자열을 표현할 때는 쌍따옴표를 쓰지만
문자를 표현할 때는 작은따옴표를 씁니다.

 printf("문자 : %c \n", a); 여기서는
작은따옴표를 쓰지 않았습니다.

위에서 선언한 int a = 97; 변수 a의 이름이었습니다.
그러면 97은 무슨 의미일까요

 

ASCII 코드표

[ASCII 코드표] || 문자 || 10진수 || 16진수 || 2진수 || | (null) | 0 | 00 | 00000000 | | ☺ | 1 | 01 | 00000001 | | ☻ | 2 | 02 | 00000010 | | ♥ | 3 | 03 | 00000011 | | ◆ | 4 | 04 | 00000100 | | ♣ | 5 | 05 | 00000101 | | ♠ | 6 | 06 | 00000110 | | ● | 7 | 07 | 00000111 |

terms.naver.com

아스키코드표에서 찾아보면
소문자 a라는 것을 알 수 있습니다.


printf("문자 : %c \n", 0x61);
숫자 앞에 0x 가 붙으면 16진수를 나타냅니다.
아스키코드표에서 16진수에서 61을 찾으면 소문자 a라는 게 확인됩니다.

만약에 숫자 앞에 0이 붙어있다면 그것은 8진수를 나타냅니다.

printf("주소 : %p \n", &a);
주소는 메모리의 주소입니다. &이것은 주소 연산자입니다. &이것은 (ampersand)라고 읽습니다.

























#include <stdio.h>

int main()
{
 int value;
 char value2;
 int intvalue3;
 int char;  //오류
 int do;    //오류
 int 1int;  //오류
 int _char; 
 int str 123; //오류
 int #num1;  //오류
 int $num2;

 return 0;
}

 

 

문제

아래와 같이 소스를 짜면 어떻게 될까요?

#include <stdio.h>
int main()
{
 int num1=10;

 printf("%d %d\n",num1);

 return 0;
}
728x90