※ 공부 내용의 복습 개념으로 정리된 글입니다. - 출처 시나공
C언어의 표준 입 · 출력 함수의 개요
표준 입출력 함수(Input-Output Functions)란 키보드로 입력받아 화면으로 출력할 때 사용하는 함수로, 대표적으로 scanf(), getchar(), gets(), printf(), putchar(), puts() 등이 있습니다.
scanf() 함수
scanf() 함수는 C언어의 표준 입력 함수로, 키보드로 입력받아 변수에 저장하는 함수입니다.
형식
- scanf(서식 문자열, 변수의 주소)
- 서식 문자열 : 입력받을 데이터의 자료형을 지정합니다.
- 변수의 주소 : 데이터를 입력받은 변수를 접습니다. 변수의 주소로 입력받아야 하기 때문에 변수에 주소연산자 &를 붙입니다.
예시
scanf("%3d", &a);
// %
// 서식 문자임을 지정
// 3
// 입력 자릿수를 3자리로 지정
// d
// 10진수로 입력
// &a
// 입력받은 데이터를 변수 a의 주소에 저장
특징
- 입력받을 데이터의 자료형, 자릿수 등을 지정할 수 있습니다.
- 한 번에 여러 개의 데이터를 입력 받을 수 있습니다.
- 원하는 자료형으로 변환이 가능합니다.
- 서식 문자열과 변수의 자료형은 일치해야 합니다.
예시
scanf("%d %f", &i, &j);
// '%d'와 i, "%f"와 j는 자료형이 일치해야 합니다.
서식 문자열
서식 문자열은 printf() 함수로 출력할 때도 동일하게 적용됩니다.
JAVA에서의 표준 입력
JAVA에서 키보드로 입력받은 값을 변수에 저장하려면 먼저 Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 이를 사용해야 합니다.
형식
① Scanner scan01 = new Scanner(System.in);
② inNum = scan01.nextInt();
① 객체 변수 생성
- Scaaner : 입력에 사용할 객체 변수를 생성할 때 사용하는 클래스 이름입니다. 그대로 적어줍니다.
- scan01 : 객체 변수명입니다. 사용자 임의로 적어줍니다.
- new : 객체 생성 예약어입니다. 그대로 적어줍니다.
- Scanner() : 클래스의 이름입니다. ()를 붙여 그대로 적어줍니다.
- System.in : 표준 입력장치, 즉 키보드를 의미합니다. 키보드로부터 값을 입력받는 객체 변수를 생성할 것이므로 그대로 적어줍니다.
② 객체 변수 활용
- inNum : 입력받은 값을 저장할 변수입니다. 이 변수는 미리 선언되어 있어야 합니다.
- scan01.nextInt()
- scan01 : 입력에 사용할 객체 변수 이름입니다. 객체 변수 생성 시 사용할 객체 변수 이름과 동일해야 합니다.
- nextInt() : 입력받은 값을 정수형으로 반환 합니다.
※ Scanner 클래스의 입력 메소드
- next() : 입력값을 문자열로 반환
- nextLine() : 입력받은 라인 전체를 문자열로 반환
- nextInt() : 입력값을 정수형으로 반환
- nextFloat() : 입력값을 실수형으로 반환
printf() 함수
printf() 함수는 C언어의 표준 출력 함수로, 인수로 주어진 값을 화면에 출력하는 함수입니다.
형식
- printf(서식 문자열, 변수)
- 서식 문자열 : 변수의 자료형에 맞는 서식 문자열을 입력합니다.
- 변수 : 서식 문자열의 순서에 맞게 출력할 변수를 적습니다. scanf()와 달리 주소 연산자 &를 붙이지 않습니다.
예시
printf("%-8.2f", 200.2); // 200.20VV (V는 빈 칸을 의미합니다.)
// % : 서식 문자임을 지정
// - : 왼쪽부터 출력
// 8 : 출력 자릿수를 8자리로 지정
// 2 : 소수점 이하를 2자리로 지정
// f : 실수로 출력
주요 제어문자
제어문자란 입력 혹은 출력 내용을 제어하는 문자입니다.
예시
printf("%d\n", a); // a의 값을 정수형 10진수로 출력한 후 다음 줄로 이동합니다.
JAVA에서의 표준 출력
JAVA에서 값을 화면에 출력할 때는 System 클래스의 서브 클래스인 out 클래스의 메소드 print(), println(), printf() 등을 사용하여 출력합니다.
형식 1 : 서식 문자열에 맞게 변수의 내용을 출력합니다.
System.out.printf(서식 문자열, 변수)
- printf() 메소드는 C언어의 printf() 함수와 사용법이 동일합니다.
예시
System.out.printf("%-8.2f", 200.2); // 200.20VV (V는 빈 칸을 의미합니다.)
// % : 서식 문자임을 지정
// - : 왼쪽부터 출력
// 8 : 출력 자릿수를 8자리로 지정
// 2 : 소수점 이하를 2자리로 지정
// f : 실수로 출력
형식 2 : 값이나 변수의 내용을 형식없이 출력합니다.
System.out.print();
- 문자열을 출력할 때는 큰따옴표로 묶어줘야 합니다.
- 문자열 또는 문자열 변수를 연속으로 출력할 때는 +를 이용합니다.
- '숫자 + 숫자'는 두 숫자를 합한 값을 출력하지만 '문자열 + 숫자' 또는 '숫자 + 문자열'과 같이 문자열과 숫자가 섞인 경우에는 모두 문자열로 인식되므로 값이 붙어서 출력됩니다.
예시
System.out.print("abc123" + "def"); // abc123def
System.out.print("abc" + 12 + 34); // abc1234
System.out.print("abc" + (12 + 34)); // abc46
형식 3 : 값이나 변수의 내용을 형식없이 출력한 후 커서를 다음 줄의 처음으로 이동합니다.
System.out.println();
- println() 메소드는 출력 후 다음 줄로 이동한다는 것을 제외하면 print() 메소드와 사용법이 동일합니다.
예시
System.out.print("abc123" + "def");
// abc123def
// ← 커서 위치
출력 데이터가 여러 개인 경우
기타 표준 입 · 출력 함수
파일 입 · 출력 함수
파일 입 · 출력 함수는 파일을 통해 데이터를 입 · 출력을 수행할 때 사용하는 함수로, foepn(), fclose(), fscaf(), fgets(), fgetc(), fprintf(), fputs(), fputc() 등이 있습니다.
- 파일 입 · 출력 함수를 사용하기 위해서는 파일을 메모리에 저장한 후 그 위치를 가리키는 파일 포인터 변수가 있어야 합니다.
- 파일 입 · 출력은 기본적으로 '파일 포인터 변수 선언 → 파일 입 · 출력 작업 → 파일 포인터 변수 닫기' 순서로 수행합니다.
주요 파일 입 · 출력 함수
기타 파일의 입 · 출력 함수
예제
다음은 'input.txt' 파일에서 숫자를 읽어 3을 곱한 후 'output.txt' 파일로 출력하는 C언어 프로그램입니다.
#includ <stdio.h>
main() {
// 정수형 변수 x를 선언
int x;
// 파일 포인터 변수 ifp를 선언하고, "input.txt"파일을 읽기 모드로 열어 ifp에 연결합니다.
FILE ifp = fopen("input.txt", "r");
// 파일 포인터 변수 ofp를 선언하고, "output.txt" 파일을 덮어쓰기 모드로 열어 ofp에 연결합니다.
FILE ofp = fopen("output.txt", "w");
// ifp에 연결되어 있는 "input.txt"로부터 정수를 입력받아 x에 저장합니다. (x = 128)
fscanf(ifp, "%d", &x);
// x의 값에 3을 곱한 값을 x에 저장합니다. (x = 384)
x = x * 3;
// ofp에 연결되어 있는 "output.txt"에 x의 값을 정수로 출력합니다.
fprintf(ofp, "%d", x);
// 파일 포인터 변수 ofp를 닫습니다.
fclose(ofp);
// 파일 포인터 변수 ifp를 닫습니다.
fclose(ifp);
※ 포인터(Pointer) 변수
포인터는 변수의 주소를 말하며, 포인터 변수는 변수의 주소를 저장할 때 사용하는 변수를 의미합니다.
※ 파일모드의 종류
- r : 파일을 읽는 용도로만 열음
- w : 파일을 열어 기존의 내용을 덮어쓰며, 파일이 없다면 새 파일이 생성됨.
- a : 파일을 열어 기존의 내용 끝에 이어 쓰며, 파일이 없으면 새파일이 생성됨.
- r+ : r 과 w를 합친 모드로, 파일이 없으면 수행되지 않음.
- w+ : r과 w를 합친 모드로, 파일이 없으면 새 파일이 생성됨.
- a+ : r과 a를 합친 모드로, 파일이 없으면 새 파일이 생성됨.
※ 파일 포인터 변수 해제
파일 포인터 변수는 임의로 메모리 영역을 확보하여 사용하는 것이므로 프로그램 종료 전에 fclose() 함수를 이용하여 사용하던 메모리 영역을 해제해야 다른 프로그램이 해당 영역을 사용할 수 있습니다.
'정보처리산업기사' 카테고리의 다른 글
정보처리산업기사 - 프로그래밍 언어 활용 - 반복문 (0) | 2024.08.15 |
---|---|
정보처리산업기사 - 프로그래밍 언어 활용 - 제어문 (0) | 2024.08.14 |
정보처리산업기사 - 프로그래밍 언어 활용 - 연산 (0) | 2024.08.12 |
정보처리산업기사 - 프로그래밍 언어 활용 - 변수 (0) | 2024.08.11 |
정보처리산업기사 - 프로그래밍 언어 활용 - 데이터 타입 (0) | 2024.08.09 |