컴퓨터공학/C언어

C 언어 2 - 2 기본 입출력함수

Arkeiyou 2021. 9. 25. 17:22
학습내용
1. 식별자 개념과 규칙
2. printf() 함수
3. scanf() 함수
※ 실습 : printf()와 scanf()함수 사용

학습목표
1. 식별자의 개념과 규칙을 설명할 수 있다.
2. printf() 함수를 사용할 수 있다.
3. scanf() 함수를 사용할 수 있다.

 

1. 식별자 개념과 규칙

 

1) 식별자(identifier)

-- 식별자(identifier) : 구별하기 위해 사용되는 이름으로, 변수명, 배열명, 함수명, 구조체명 등을 가리킨다.

-- 키워드(keyword) = 예약어(reserved word) : C언어에서 고유한 의미를 가지고 있는 특별한 단어.    

 auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while

 

2) 식별자 규칙

-- 변수명 작성 규칙

     영문자, 숫자, 밑줄(_)을 사용할 수 있다. 첫 번째 문자는 반드시 영문자 또는 밑줄(_)이어야 한다. 예약어는 변수명으로 사용할 수 없으며, 밑줄(_)을 제외한 특수문자도 사용할 수 없다. 대소문자를 구별한다.

-- 좋은 변수 이름은 어떤 것일까?

     역할을 가장 잘 설명하는 이름을 변수명으로 정하는 것이 좋다.

     여러 단어로 되어 있을 경우 단어와 단어를 밑줄로 연결하거나 단어의 첫 문자를 대문자로 입력하는 등 가독성을 높이는 것이 좋다. 변수명을 정하는 방식을 일관성있게 통일하는 것이 무엇보다 중요하다.

 

 

2. printf() 함수

 

1) printf() 함수

-- 개요 : printf() 함수는 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수이다. 주어진 문자열을 출력하는 역할을 수행한다. (cf_ #include <stdio.h>)

 

2) 형식화(Formatted) 출력 ★

-- 기능 : 주어진 값을 형식(format)에 맞춰 출력할 수 있다. 이때 형식이란 출력할 값을 10진 정수로 출력할 것인가? 또는 실수, 문자, 문자열 등의 형식으로 출력할 것인가에 대한 것이다.

-- 형식

printf("형식문자열", 출력할 값) ;

     예_

printf("%d", num);

-- 형식지정자(format specifier)

     형식지정자는 값을 출력하는 형식을 지정한다. 형식지정자가 사용된 위치에 지정된 값을 출력한다.

     %d : 10진 정수로 출력. 예_ printf("%d", 10)

     %f : 실수로 출력. 예_ printf("%f", 3.2)

     %c : 문자로 출력. 예_ printf("%c", 'a')

     %s : 문자열로 출력. 예_ printf("s", "abc")

 

     * 여러 개의 값 출력하기

printf("%d / %d = %f", num1, num2, result) ;

     형식문자열 안에 형식 지정자를 여러 개 지정할 수 있다. 이때 형식지정자의 개수와 출력할 값의 개수를 일치시켜주어야 한다. 또한 형식지정자의 자료형과 출력할 값이 저장된 변수의 자료형이 반드시 일치해야 한다. 형식지정자의 개수가 변수의 개수보다 더 많은 경우에는 오류 메시지가 발생하지만 형식지정자의 개수보다 변수의 개수가 더 많으면 무시하고 출력하는 특징이 있다.

     

     * 문자 폭 지정하기

     출력 결과물은 커서 위치를 기준으로 왼쪽에서 오른쪽으로 출력된다. 문자폭을 지정하면 출력할 값을 문자 폭의 오른쪽 끝에 맞춰서 출력하고 남는 부분에 빈칸을 출력한다. 문자폭과 함께 0을 지정하면 빈칸 대신 0으로 채워지게 된다. 문자폭보다 큰 값은 폭을 넘어서 출력한다.

※ 형식지정자 뒤에 입력된 \n은 줄바꿈을 의미하는 제어 문자이다. (제어 문자 항목 참조)

 

     * 정밀도 지정하기

     실수를 출력할때 소수점 이하 6자리로 출력하는 것이 디폴트값이다. 이때 형식지정자에 숫자를 입력해서 소수점 자리수를 지정할 수 있다. 

     문자폭과 정밀도를 함께 지정할 수도 있다. 예를 들어 '%8.4d'형식지정자를 입력할 경우, 출력할 전체 8자리에 대해 정수를 4자리로 출력하라는 의미가 된다. 문자폭의 남는 부분에는 빈칸이 출력되고, 정밀도에서 지정한 정수 자릿수보다 출력할 정수의 자릿수가 적을 경우 남는 자리는 0이 출력된다.

 

3) 제어 문자(Escape Sequence)

-- 제어 문자란 제어 목적으로 사용되는 문자들로, 제어문자는 화면에 출력되지 않는다.

   예_ 줄바꿈 문자, 탭 문자, 벨소리 문자, 백스페이스 문자 등

제어 문자 이름 의미
\0 널(null)문자 문자열의 끝
\n 줄바꿈(newline) 다음 라인의 시작 위치로 커서를 이동한다.
\t 탭문자(tab) 다음 탭 위치로 커서를 이동한다.
\' 작은따옴표 작은따옴표를 출력한다.
\" 큰따옴표 큰따옴표를 출력한다.
\\ 역슬래시 역슬래시를 출력한다.

 

 

3. scanf() 함수

 

1) scanf() 함수

-- 개요 : 키보드로부터 입력을 받기 위한 표준 입력 라이브러리 함수이다. 키보드로부터 값을 받아서 선택된 변수에 저장한다. 이때 입력되는 데이터의 형식을 지정할 수 있다.

 

2) 형식

     printf 함수와 scanf 함수의 차이로 printf 함수는 변수의 이름만을 사용하지만 scanf 함수는 변수의 주소를 사용한다는 점이 있다. &는 주소연산자로, &n은 변수 n의 주소를 가리킨다. 예를 들어

printf("%d", n);

에서 printf 함수는 변수 n의 값을 %d위치에 출력하고,

scanf("%d", &n);

에서 scanf 함수는 정수를 입력받아 변수 n에 저장한다.

     형식지정자는 printf 함수에서와 거의 같지만 double형은 double대신 lf를 사용한다. (l은 L의 소문자 l이다. i의 대문자 I이 아니다.)

float fData;
double dData;
scanf(“%f”, &fData);
scanf(“%lf”, &dData);

      scanf 함수도 printf 함수에서와 같이 여러 변수를 입력할 수 있는데, 이때 데이터의 경계를 공백(스페이스바, tab키, enter키)으로 구분한다.

scanf("%d %d", &x, &y);

※ scanf 함수를 사용하기 전에 printf 함수로 안내문을 출력해보자.

     printf 없이 scanf 함수를 단독으로 사용할 수도 있다. (scanf 함수를 사용할때 오류 메시지가 뜨는 경우에는 맨 첫줄에 #define _CRT_SECURE_NO_WARNINGS를 사용하여 해결할 수 있다.)

     그런데 scanf 함수만 사용할 경우 아래처럼 아무런 말 없이 빈 화면에 커서만 깜빡거리게 된다. 

 

이 상태에서 입력을 받으면 scanf 함수는 정상적으로 작동한다. 그러나 scanf 함수라는걸 모르는 경우에는 작동이 안되는 것으로 오해할 수 있으므로 안내문을 적어주자.

 

 

 

 

 

 

 

 

 

 

 

 

 

학습정리
1. 식별자 개념과 규칙
* 식별자(identifier)는 구별하기 위해 사용되는 이름이다.
* 변수명 작성 규칙으로는 영문자, 숫자, 밑줄(_)사용 가능, 첫 번째 문자는 반드시 영문자 또는 밑줄(_)이어야 하며, 예약어는 사용할 수 없다.

2. printf() 함수
* 모니터에 출력을 하기 위한 표준 출력 라이브러리 함수
* 주어진 문자열을 출력하는 기능과 주어진 값을 형식(format)에 맞춰 출력하는 기능이 있음.

3. scanf() 함수
* 키보드로 입력하기 위한 표준 입력 라이브러리 함수
* 키보드로부터 값을 받아서 변수에 저장한다.
* scanf() 할수를 사용하기 전에 printf() 함수로 안내문을 출력해주는 것이 좋다.

 

 

 

 

 

 

'컴퓨터공학 > C언어' 카테고리의 다른 글

C 언어 3 - 2 데이터형  (0) 2021.09.26
C 언어 3 - 1 변수와 상수  (0) 2021.09.26
C 언어 2 - 1 C언어 기본구조  (0) 2021.09.25
C 언어 1 - 2 프로그래밍 과정  (0) 2021.09.25
C 언어 1 - 1 프로그래밍의 개념  (0) 2021.09.25