C프로그래밍 3장

이은주·2022년 9월 19일
0

C프로그래밍

목록 보기
3/6

1. printf()를 이용한 출력

1-1. 기본 사용법

  • 출력할 내용 : printf("출력하고 싶은 내용");
  • 서식 지정자를 이용한 값 출력 : printf("%d + %d", 10, num);

1-2. 서식 지정자와 출력할 값 개수 불일치

  • 서식 지정자가 더 많은 경우 : 남은 서식 지정자는 쓰레기 값
  • 출력할 값이 더 많은 경우 : 남는 값 사용되지 않음

1-3. 서식 지정자 종류

분류서식 지정자대상 자료형출력 형태
정수형%dint10진수
%uunsigned int10진수
%o8진수
%x, %X16진수
부동소수형%ffloat고정 소수점 표기
%lfdouble
문자형%cchar문자 하나
%s문자열

1-4. 서식 지정자 확장

1) 출력 폭 지정

printf("%5d\n", 25);
printf("%9f\n", 2.5);
▼실행결과▼
□□□25
□2.500000

2) 정밀도 지정(부동소수)

printf("%.3f\n", 2.5);
printf("%.1f\n", 2.56);
printf("%6.2f\n", 2.5);
▼실행결과▼
2.500
2.6
□□2.50

4) 플래그

  • 플래그 : 정렬방식, 부호 출력 방식, 진법 표시 방식 등을 조정하기 위해 사용
  • 0 플래그
printf("%05d\n", 25);
▼실행결과▼
00025

2. scanf()를 이용한 입력

2-1. 기본 사용법

  • 서식 지정자를 쓰고, 뒤에 값을 저장할 변수 이름 명시
  • 반드시 & 기호 붙이기 (특별한 언급이 없으면)
  • 자료형에 따라 사용되는 서식 지정자가 다름

2-2. 여러 값 입력 받기

  • 예) 정수와 부동소수 입력 받기 : 값 구분 위해 보통 공백 사용
int a;
double b;

scanf("%d%lf", &a, &b);
printf("입력 값: %d %f\n", a, b);
▼키보드로 입력▼
5 3.1[Enter]

▼실행결과▼
입력 값: 5 3.100000

2-3. 여러 문자 입력 시 주의할 점

  • 공백도 하나의 문자로 간주되어 입력 값으로 처리되므로 공백 없이 입력
char c1, c2;

scanf("%c%c", c1, c2);
printf("문자 출력: [%c][%c]\n", c1, c2);
▼키보드로 입력▼
AB[Enter]

▼실행결과▼
문자 출력: [A][B]
  • 탭, 개행 문자도 동일하게 문자 입력으로 처리
char c1, c2;

printf("c1 입력: ");
scanf("%c", &c1 ); ⇨ 첫 번째 문자 입력

printf("c2 입력: ");
scanf("%c", &c2 ); ⇨ 두 번째 문자 입력

printf("문자 출력: [%c][%c]\n", c1, c2 );
▼실행결과▼
c1 입력: A[Enter]				// [Enter]키 \n 이 c2에 저장돼서
C2 입력: 문자 출력: [A][			// 출력 됨
]
  • 원하는 형태로 입력받기 위한 해결책(트릭)
    ⇨ [Entet] 키로 입력되는 개행 문자를 임시 변수에 저장해 없애기
char c1, c2, tmp;

printf("c1 입력: ");
scanf("%c%c", &c1, &tmp);
printf("c2 입력: ");
scanf("%c%c", &c2, &tmp);

printf("문자 출력: [%c][%c]\n", c1, c2);
▼실행결과▼
c1 입력: A[Enter]				// 개행 문자는 tmp에 저장
C2 입력: B[Enter]
문자 출력: [A][B]

2-4. 문자와 정수(또는 부동소수)가 혼합되어 입력받는 경우

  • 정수 입력에서는 공백, 탭, 개행 문자 무시됨
  • 문자 입력에서는 공백, 탭, 개행 문자가 하나의 문자로 처리됨

2-5. 입력 구분자 지정하기

  • 입력 구분자로 하이픈(-)을 사용한 예
int a=0, b=0, c=0;

printf("정수 입력: ");

scanf("%d-%d-%d", &a, &b, &c);
printf("%d %d %d\n", a, b, c);
▼실행결과(입력 형식을 맞춘 예)▼
정수 입력: 20-10-30[Enter]
20 10 30
▼실행결과(입력 형식을 맞추지 않은 예)▼
정수 입력: 20 10 30[Enter]
20 0 0

0개의 댓글