[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.3) 데이터 입 / 출력

728x90

[정처기 필기] 4」 | 프로그래밍 언어 활용 - (2.3) 데이터 입 / 출력

「1」 소프트웨어 설계

「2」 소프트웨어 개발

「3」 데이터베이스 구축

> 「4」  프로그래밍 언어 활용

- 서버 프로그램 구현, > 프로그래밍 언어 활용, 응용 SW 기초 기술 활용

「5」  정보시스템 구축 관리

 

1 데이터 타입

2 변수

3 연산자

> 4 데이터 입 / 출력

5 제어문

6 반복문

7 배열과 문자열

8 포인터

9 구조체

10 Python의 기초

11 Python의 활용

12 스크립트 언어

13 라이브러리

14 예외 처리

4. 데이터 입 / 출력

C언어의 표준 입 / 출력 함수의 개요

 

키보드로 입력받아 화면에 출력할 때 사용하는 함수, scanf( ), getchar( ), gets( ), printf( ), putchar( ), puts( )

 

scanf( ) 함수

 

C언어 표준 입력 함수, 키보드로 입력받아 변수에 저장하는 함수

 

scanf(서식 문자열, 변수의 주소)

 

- 서식 문자열 : 입력받을 데이터의 자료형 지정

- 변수의 주소 : 데이터를 입력받을 변수를 적음, 변수에 주소연산자 & 붙임

 

- 입력받을 데이터의 자료형, 자릿수 등 지정 가능

- 한 번에 여러 개의 데이터 입력받을 수 있음

- 서식 문자열변수의 자료형일치해야 함

 

ex)

scanf("%3d", &a);

// % : 서식문자임을 지정

// 3 : 입력 자릿수를 3자리로 지정

// d : 10진수로 입력

// &a : 입력받은 데이터를 변수 a의 주소에 저장

 

서식 문자열

%d : 정수형 10진수

%u : 부호 없는 정수형 10진수

%o : 정수형 8진수

%x : 정수형 16진수

%c : 문자

%s : 문자열

%f : 소수점 포함하는 실수

%e : 지수형 실수

%ld : long형 10진수

%lo : long형 8진수

%lx : long형 16진수

%p : 주소를 16진수

 

ex)

scanf("%d", &); | 20

// 정수형 10진수로 저장 [ 20 ]

scanf("%2d", &); | 125

// 앞에 2자리까지 저장 [ 12 ]

scanf("%4f", &); | 12.123

// 소수점 포함하여 앞에 4자리까지 저장 [ 12.1 ]

scanf("%c", &); | SINAGONG

// 입력 데이터 중 앞에 1문자만 저장 [ S ]

char b[8]; 

scanf("%4c", b); | SINAGONG

// 입력 데이터 중 앞에 4자리까지 저장 [ SINA ]

char b[8];

scanf("%s", b); | GIL BUT

// 입력 데이터 중 빈칸 있으면 빈칸 앞까지 저장 [ GIL ]

char b[8], c[8];

scanf("%s %2s", b, c); | GIL BUT

// 배열 b는 입력 데이터 중 빈칸 앞까지만 저장, 배열 c는 입력 데이터 중 빈칸 이후 2자리 저장 [ GIL, BU ]

char b[8];

scanf("%d %f %s", &i, &j, b); | 345 2.62E-6 LOVE

// 입력 데이터 중 빈칸으로 구분, i는 정수형 10진수, j는 소수점 포함 실수형, 배열 b는 문자열 저장 [ 345, 2.62E-6, LOVE ]

char b[8], c[8];

scanf("%c %5c", b, c); | LOVE ME

// 배열 b는 입력 데이터 중 앞의 문자 1자리 저장, 배열 c는 배열 b에 저장된 문자 1자리 이후 5자리 저장 [ L, OVE M ]

scanf("%3d %5f", &i, &j); | 123456789

// i는 입력 데이터 중 앞의 3자리 저장, j는 i에 저장된 3자리 이후 소수점 포함 5자리 저장 [ 123, 45678 ]

scanf("%3d$$%3f", &i, &j); | 123$$456789

// 입력 데이터에 '$$'가 있어야 입력됨, i는 '$$'를 기준으로 앞에 3자리 저장, j는 '$$' 기준으로 소수점 포함 뒤에 3자리 저장 [ 123, 456 ]

 

>JAVA에서의 표준 입력<

 

Scanner 클래스를 이용해 키보드로부터 값을 입력받는 객체 변수를 생성한 후 사용

 

Scanner scan01 = new Scanner(System.in);
inNum = scan01.nextInt();

 

- Scanner : 입력에 사용할 객체 변수 생성하는 클래스 이름

- scan01 : 객체 변수명

- new : 객체 생성 예약어

- Scanner( ) : 클래스 이름

- System.in : 표준 입력장치를 의미, 키보드로부터 값을 입력받는 객체 변수를 생성

 

- inNum : 입력받은 값을 저장미리 선언되어 있던 변수

- scan01.nextInt( ) : 입력받은 값을 정수형으로 반환 후 입력에 사용할 객체 변수 이름

 

printf( ) 함수

 

C언어의 표준 출력 함수, 인수로 주어진 값을 화면에 출력하는 함수

 

printf(서식 문자열, 변수)

 

- 서식 문자열 : 변수의 자료형에 맞는 서식 문자열 입력

- 변수 : 서식 문자열의 순서에 맞게 출력할 변수, 주소연산자& 붙이지 않음

 

ex)

printf("%-8.2f", 200.2);

// % : 서식 문자임을 지정

// - : 왼쪽부터 출력

// 8 : 출력 자릿수를 8자리로 지정

// 2 : 소수점 이하를 2자리로 지정

// f : 실수로 출력

// 200.20VV (V는 빈칸)

 

주요 제어 문자

\n : new line, 커서를 다음 줄 앞으로 이동

\b : backspace, 커서를 왼쪽으로 한 칸 이동

\t : tab, 커서를 일정 간격 띄움

\r : carriage return, 커서를 현재 줄의 처음으로 이동

\0 : null, 널 문자 출력

\' : single quote, 작은따옴표 출력

\" : double quote, 큰따옴표 출력

\a : alert, 스피커로 벨 소리 출력

\\ : backslash, 역 슬래시 출력

\f : form feed, 한 페이지 넘김

 

ex)

printf("%d", 2543)

// 정수형으로 출력 [ 2543 ]

printf("%3d", 2543)

// 전체 3자리 확보 후 오른쪽부터 출력, 출력할 값이 지정한 자릿수보다 큰 경우 자릿수 무시하고 모두 출력 [ 2543 ]

printf("%6d", 2543)

// 전체 6자리 확보 후 오른쪽부터 출력 [ VV2543 ]

printf("%-6d", 2543)

// 전체 6자리 확보 후 왼쪽부터 출력 [ 2543VV ]

printf("%06d", 2543)

// 전체 6자리 확보 후 오른쪽부터 출력, 왼쪽 공백은 0으로 채워 출력 [ 002543 ]

printf("%f", 245.2555)

// 자릿수 지정되지 않았으므로 정수 부분 모두 출력, 소수점 이하는 기본 6자리 출력 [ 245.255500 ]

printf("%3f", 245.2555 )

// 정수 부분 모두 출력, 소수점 이하는 4자리에서 반올림하여 3자리까지 출력 [ 245.256 ]

printf("%8.2f", 245.2555 )

// 전체 8자리 확보 후, 소수점과 소수점 이하 2자리 출력, 남은 5자리에 정수 부분 출력 [ VV245.26 ]

printf("%e", 25.43) 

// 25.43을 정수 부분이 한자리만 남도록 정규화하여 출력, 정규화는 기본 소수점 6자리 2.543000 * 10¹, 소수점 자리가 왼쪽으로 한칸 이동 +01 [ 2.543000e+01 ]

printf("%.3s", "help me")

// 왼쪽 기준으로 3글자만 출력 [ hel ]

printf("%3s", "help me")

// 전체 3자리 확보 후 출력, 출력할 값이 지정 자릿수보다 큰 경우 무시하고 모두 출력 [ help me ]

printf("%8.6s", "help me")

// 전체 8자리 확보 후 오른쪽부터 6글자만 출력 [ VVhelp m ]

printf("%-8.6s", "help me")

// 전체 8자리 확보 후 왼쪽부터 6글자만 출력 [ help mVV ]

printf("250은 10진수로 %d\t 8진수로 %o\n", 250, 250)

// '%d'에 대응하는 정수 값 250을 10진수로 출력, '\t'로 4칸 띈 다음, '%o'에 대응하는 정수 값 250을 8진수로 출력, '\n'으로 커서는 다음 줄로 이동 [ 250은 10진수로 250     8진수로 372 ]

printf("a=%8.2f\t b=%e\n", 125.23f, 3141.592e-1)

// '%8.2f'에 대응하는 실수 값 125.23을 전체 8자리 확보 후 오른쪽부터 소수점과 소수점 이하 2자리 출력하고 남은 5자리에 정수 125 출력, '\t'로 4칸 띈 다음, '%e'에 대응하는 지수 값 3141.592e-1을 소수점 이상 한자리만 표시하는 지수 형태로 출력, 3141.592 * 10¹ = 314.1592, 3.141492 * 10², '\n'으로 커서는 다음 줄 이동 [ a=VV125.23     b=3.141592e+02 ]

printf("\'A\'는 문자로 %c, 아스키코드로 %d\n", 'A', 'A')

// '\'A\''에서 \'는 ' 출력하므로 'A'를 작은따옴표로 묶어 출력, '%c'에 대응하는 문자 'A' 출력, '%d'에 대응하는 문자 'A'에 해당하는 아스키코드 값을 정수형으로 출력, '\n'으로 커서는 다음 줄로 이동 [ 'A'는 문자로 A, 아스키코드로 65 ]

 

ex)

char a[5]

scanf("%d %e %s", &i, &j, a) | 5468 3.483E-2 GOOD

printf("%4d %f %2s", i, j, a)

// 입력 데이터가 빈칸으로 구분되어 i는 정수형 10진수로, j는 지수형으로 3.483 * 10⁻², 배열 a에는 문자열로 저장

// '%4d' 전체 4자리 확보 후 오른쪽부터 출력, '%f' 실수형으로 출력하되 자릿수 지정 안 했으므로 정수 부분 모두 출력, 소수점 이하는 기본 6자리 출력, '%2s' 전체 2자리 확보 후 출력, 출력 값이 지정한 자릿수보다 크면 자릿수 무시하고 모두 출력

[ 5468 0.034830 GOOD ]

scanf("%e", &i) | 123.45E-1

printf("%f\t %e\n", i, i)

// 입력 데이터가 지수형으로 저장, 123.45 * 10⁻¹

// '%f' 실수형으로 출력하되 자릿수 지정 안 했으므로 정수 부분 모두 출력, 소수점 이하는 기본 6자리 출력, '\t'는 공백 4칸 띄고, '%e' 지수형으로 출력하되 자릿수를 지정 안했으므로 정수 부분은 한자리만 123.45 * 10¹, 1.2345 * 10¹, 소수점 이하는 기본적으로 6자리 출력 '\n'으로 커서는 다음 줄로 이동

[ 12.345000     1.234500e+01 ]

scanf("%d", &i) | 300

printf("[%5d], [%-5d], [%05d]", i, i, i)

// 입력 데이터가 정수형으로 저장

// '%5d' 전체 5자리 확보 후 오른쪽부터 출력, '%-5d' 전체 5자리 확보 후 왼쪽부터 출력, '%05d' 전체 5자리 확보 후 오른쪽부터 출력하되 왼쪽의 공백은 0으로 채워 출력 [ [VV300], [300VV], [00300] ]

scanf("%2d \n \t %3d", &i, &j) | 12345678

printf("i=%d j=%d\n", i, j)

// i에는 입력한 데이터 중 앞에 2자리까지 저장, j는 i에 저장된 2자리 다음 3자리까지만 저장, '\n, \t'는 무시

// '%d' 대응하는 i의 값 12출력 다음 한 칸 띔, '%d'에 대응하는 j의 값 345 출력, '\n'으로 커서는 다음 줄로 이동

[ i=12 j=345 ]

 

>JAVA에서의 표준 출력<

 

System 클래스의 서브 클래스인 out 클래스의 메서드 print( ), pirntln( ), printf( ) 등 사용하여 출력

 

System.out.printf(서식 문자열, 변수)
System.out.print()
System.out.println()

 

기타 표준 입 / 출력 함수

 

입력 getchar( ) 키보드로 한 문자 입력받아 변수에 저장
gets( ) 키보드로 문자열 입력받아 변수에 저장, enter 키 누르기 전까지 하나의 문자열로 인식
출력 putchar( ) 인수로 주어진 한 문자를 화면에 출력
puts( ) 인수로 주어진 문자열을 화면에 출력 후 커서를 자동으로 다음 줄 앞으로 이동

 

ex)

a = getchar( ) | GIL BUT

putchar(a)

// 입력 데이터 중 한 문자가 a에 저장

// a에 저장된 한 문자 출력 [ a ]

putchar('G' + 1)

// 문자 'G'에 해당하는 아스키코드값에 1을 더한 값에 해당하는 문자 출력 [ H ]

gets(b) | GIL BUT

puts(b)

// 입력 데이터 전체가 b에 저장

// b에 저장된 문자열 전체를 출력 [ GIL BUT ]

puts("GIL BUT")

// 큰 따옴표로 묶인 문자열 전체 출력 [ GIL BUT ]

 

 

 

 

 

 

출처 | <시나공> 정보처리기사 필기 2024 기본서 (길벗알앤디)

728x90