[정처기 필기] 「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 기본서 (길벗알앤디)
'💠기타 > 자격증' 카테고리의 다른 글
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.5) 포인터, 구조체 (0) | 2024.02.15 |
---|---|
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.4) 제어문, 반복문, 배열과 문자열 (생략) (0) | 2024.02.14 |
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.2) 연산자 (0) | 2024.02.13 |
[정처기 필기] 「4」 | 프로그래밍 언어 활용 - (2.1) 데이터 타입, 변수 (0) | 2024.02.13 |
[정처기 필기] 「4」 | 서버 프로그램 구현 - (1.1) 서버 개발, 보안 / API, 배치 프로그램 (1) | 2024.02.13 |