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() 함수로 출력할 때도 동일하게 적용된다.
- %d: 정수형 10진수를 입·출력하기 위해 지정한다.
- %u: 부호없는 정수형 10진수를 입·출력하기 위해 지정한다.
- %o: 정수형 8진수를 입·출력하기 위해 지정한다.
- %x: 정수형 16진수를 입·출력하기 위해 지정한다.
- %c: 문자를 입·출력하기 위해 지정한다.
- %s: 문자열을 입출력하기 위해 지정한다.
- %f: 소수점을 포함하는 실수를 입·출력하기 위해 지정한다.
- %e: 지수형 실수를입출력하기 위해 지정한다.
- %ld: long형 10진수를 입·출력하기 위해 지정한다.
- %lo: long형 8진수를 입·출력하기 위해 지정한다.
- %lx: long형 16진수를 입·출력하기 위해 지정한다.
- %p: 주소를 16진수로 입·출력하기 위해 지정한다.
JAVA에서의 표준 입력
- JAVA에서 키보드로 입력받은 값을 변수에 저장하려면 먼저 Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 이를 사용해야 합니다.
- 형식
- Scanner scan01 = new Scanner(System.in);
- inNum = scan01.nextInt();
- 객체 변수 생성
- Scanner: 입력에 사용할 객체 변수를 생성할 때 사용하는 클래스 이름입니다. 그대로 적어줍니다.
- scan01: 객체 변수명입니다. 사용자 임의로 적어줍니다.
- new: 객체 생성 예약어입니다. 그대로 적어줍니다.
- Scanner(): 클래스의 이름입니다. ()를 붙여 그대로 적어줍니다.
- System.in: 표준 입력장치, 즉 키보드를 의미합니다. 키보드로부터 값을 입력받는 객체 변수를 생성할 것이므로 그대로 적어줍니다.
- 객체 변수 활용
- inNum: 입력받은 값을 저장할 변수입니다. 이 변수는 미리 선언되어 있어야 합니다.
- scan01: 입력에 사용할 객체 변수 이름입니다. 객체 변수 생성 시 사용한 객체 변수 이름과 동일해야 합니다.
- nextInt(): 입력받은 값을 정수형으로 반환합니다.
printf() 함수
- printf() 함수는 C언어의 표준 출력 함수로 인수로 주어진 값을 화면에 출력하는 함수이다.
- 형식: printf(서식 문자열, 변수)
- 서식 문자열: 변수의 자료형에 맞는 서식 문자열을 입력한다.
- 변수: 서식 문자열의 순서에 맞게 출력할 변수를 적는다. scanf()와 달리 주소 연산자 &를 붙이지 않는다.
- 예: printf("%-8.2f", 200.2); (V는 빈 칸을 의미함) => 200.20VV
- % : 서식 문자임을 지정
- 8 : 출력 자릿수를 8자리로 지정
- 2 : 소수점 이하를 2자리로 지정
- f : 실수로 출력
주요 제어문자
- 제어문자란 입력 혹은 출력 내용을 제어하는 문자이다.
- \n(new line): 커서를 다음 줄 앞으로 이동한다.
- \b(backspace): 커서를 왼쪽으로 한 칸 이동한다.
- \t(tab): 커서를 일정 간격 띄운다.
- \r(carriage return): 커서를 현재 줄의 처음으로 이동한다.
- \0(null): 널 문자를 출력한다.
- \'(single quote): 작은따옴표를 출력한다.
- \"(double quote): 큰따옴표를 출력한다.
- \a(alert): 스피커로 벨 소리를 출력한다.
- \(backslash): 역 슬래시를 출력한다.
- \f(form feed): 한 페이지를 넘긴다.
- 예: 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); (V는 빈 칸을 의미함) => 200.20VV
- % : 서식 문자임을 지정
- 8 : 출력 자릿수를 8자리로 지정
- 2 : 소수점 이하를 2자리로 지정
- f : 실수로 출력
- 형식 2: 값이나 변수의 내용을 형식없이 출력합니다.
System.out.print()
- 문자열을 출력할 때는 큰따옴표로 묶어줘야 합니다.
- 문자열 또는 문자열 변수를 연속으로 출력할 때는 +를 이용합니다.
- '숫자+숫자'는 두 숫자를 합한 값을 출력하지만, '문자열+숫자' 또는 '숫자+문자열'과 같이 문자열과 숫자가 섞인 경우에는 모두 문자열로 인식되므로 값이 붙어서 출력됩니다.
- 예제 1: System.out.print("abc123" + "def"); => abc123def
- 예제 2: System.out.print("abc" + 12 + 34); => abc1234
- 예제 3: System.out.print("abc" + (12+34)); => abc46
- 형식 3: 값이나 변수의 내용을 형식없이 출력한 후 커서를 다음 줄의 처음으로 이동합니다.
System.out.println()
- println() 메소드는 출력 후 다음 줄로 이동한다는 것을 제외하면 print() 메소드와 사용법이 동일합니다.
기타 표준 입출력 함수
- 입력
- getchar(): 키보드로 한 문자를 입력받아 변수에 저장하는 함수
- gets(): 키보드로 문자열을 입력받아 변수에 저장하는 함수로, Enter를 누르기 전까지를 하나의 문자열로 인식하여 저장함
- 출력
- putchar(): 인수로 주어진 한 문자를 화면에 출력하는 함수
- puts(): 인수로 주어진 문자열을 화면에 출력한 후 커서를 자동으로 다음 줄 앞으로 이동하는 함수