본문 바로가기

2학년/C

[C] 입출력

입력과 출력

 1. 출력 함수 printf()

    printf() 함수는 C의 표준 출력 함수로, <stdio.h> 헤더파일에 정의되어 있다. 이를 이용함으로써 프로그램에 다양한 데이터를 출력할 수 있다. 

더보기

 #include <stdio.h> 

        int printf(const char * restrict format, ...); 

   이스케이프 시퀀스 

    printf 함수 내에서 특수한 동작을 수행하는 문자를 뜻한다. 

  서식지원자 

   printf 함수는 변수, 상수등을 화면에 다양한 형태로 출력하기 위하여 "서식지정자"를 지원한다. 이는 데이터를 8진수, 10진수, 16진수, 문자, 문자열, 정수, 실수 등 프로그래머가 원하는 형태로 출력할 수 있도록 도와주는 역할을 한다.  서식지정자는 컴퓨터가 어떤 정보를 어떻게 해석할 것인지 지정한다. 

%c 하나의 문자
%s 문자열
%d 부호 있는 10진 정수
%i 부호 있는 10진 정수 
%f 고정 소수점으로 표현한 실수(소수점 6자리)
%o 부호 없는 8진 정수
%u 부호 없는 10진 정수
%x 부호 없는 16진 정수
%e 부동 소수점으로 표현한 실수 
%% 퍼센트 기호 출력 

example)  printf("%d %c %lf",2022,'a',3.14);

 

2. 입력을 위한 scanf() 함수

    C언어의 표준 입력 함수로, <stdio.h> 헤더파일에 정의 되어있다. 마찬가지로 원하는 서식으로 다양한 데이터를 입력받을 수 있다. 

더보기

 #include <stdio.h> 

   int scanf(const char* restrict format, ...);

     example)

     int age, score; 

     scanf("%d %d", &age, &score); 

         C언어에서 우선적으로 데이터를 저장할 공간, 즉 메모리를 할당받아야 데이터를 입력받을 수 있다. 이를 변수의 선언이라 부른다. (int age, score; 가 이에 해당함. int는 정수형 데이터를 의미하고, age와 score는 정수형 변수가 됨) 

           scanf() 함수를 사용할 땐 반드시 인자값으로 변수의 주소 연산자, 즉 &(ampersand)를 사용해야 한다. scanf는 변수의 주소를 입력받아 그 주소에 사용자가 입력한 값을 저장해주는 함수이기 때문이다. 따라서 변수의 이름이 아닌 변수의 주소를 인자로 받는다. 

        %d,  &age --> &a는 a라는 변수가 메모리상에 저장된 주소

        %d, age    --> a는 단순 변수이므로 주소값 아님 

 

 

  double형 실수의 입력

    C언어에서 실수는 float형 (4byte),double형 (8byte) 총 2종류가 존재한다. 

     float     -> %f 

    double -> %lf

     로 받아야한다. byte가 높으면 높은 소숫점의 고정확도를 갖는다. 8byte의 메모리를 차지하고, 고정확도를 요구하는 double형 실수 변수에 float형의 %f 서식지정자를 통해 값을 입력받으면, 그 값은 총 4byte 만큼의 정확도로 저장될 것이고, 나머지 4byte의 데이터를 유실하게 된다. 이때, 출력이 원하는대로 나오지 않는다. 

 

 

 

    

'2학년 > C' 카테고리의 다른 글

[C]변수와 연산자(4)  (0) 2023.07.22
[C]변수와 연산자(3)  (0) 2023.07.21
[C]변수와 연산자(2)  (0) 2023.07.20
[C] 변수와 연산자(1)  (0) 2023.07.19
c언어와 컴파일 과정  (0) 2023.07.17