1. printf 함수
C언어에서 문자열을 출력하기 위해 printf 함수를 사용한다.
printf 함수는 줄바꿈이 자동으로 이루어지지 않기 때문에
printf("Hello");
printf("World");
printf("!");
입력시
HelloWorld! 가 출력된다
![](https://blog.kakaocdn.net/dn/dW5u43/btrA8UYaW3J/Jj23s0IvJw0sDmq8iF0Gi0/img.png)
(1) 줄바꿈 : \n
(2) 미리 지정해둔 변수를 출력하고 싶을 때 : %사용
printf("내용 %d 내용 %f %d", a,b,c") 라 입력하면
첫 번째 %d자리에 a가, %f 자리에 b가, 마지막 %d에 c가 들어간 문자열이 출력된다.
형식지정자
|
출력양식
|
%d
|
정수
|
%f
|
실수
|
%c
|
문자 하나
|
%s
|
문자열
|
(3) Conversion Specifications
: %m.pX 식을 사용해 출력형식을 보다 자세하게 지정할 수 있다.
m은 minimum field width를, p는 X에 따라 의미를 다르게 가지는데 일단은 "보여줄 수의 개수" 라 생각해보자
> 예제 구문
#include <stdio.h>
int a = 123;
int main() {
printf("%4d",a);
return 0;
}
결과는 아래와 같다.
![](https://blog.kakaocdn.net/dn/IkSqZ/btrBayfMkYY/XA4sTzu7zztTVxKAKKxfl0/img.png)
%4d가 아닌 %10d로 코드를 수정하면 결과는 아래와 같이 여백이 7개임을 알 수 있다.
![](https://blog.kakaocdn.net/dn/FODDG/btrA53BOdvz/9CaiJV4gork0aQ3BsZ51lK/img.png)
"%4d",a 가 의미하는 것은 "4개의 입력칸에 오른쪽 정렬로 정수a를 넣어서 출력하세요" 이다.
Q1. a의 자리수가 4보다 클 경우( a = 12345)
=> 12345가 출력됨
m 은 minimum field width임을 기억하자
만약 -4와 같이 m 자리에 음수가 들어간다면 "왼쪽정렬"이 된다.
#include <stdio.h>
int a = 123;
int main() {
printf("%-5dhello",a);
return 0;
}
![](https://blog.kakaocdn.net/dn/ciD6E5/btrA53uXFC9/nypnIikV4mjTuVeWRyLkTK/img.png)
5칸에 123이 왼쪽정렬되어 출력되었고 그 다음 hello가 출력되었다.
만약 하나의 printf에 여러 개의 변수를 출력하고 싶다면 순서와 형식에 맞게 넣어주면 된다.
.p가 의미하는 것은 뒤에 뭐가 오느냐(d,f,e . . ) 에 따라 다르다.
정수의 경우 보여줄 숫자를 의미하고 실수의 경우 소수점이하 자릿수를 의미한다.
#include <stdio.h>
int a = 123;
int main() {
printf("%10.5d",a);
return 0;
}
![](https://blog.kakaocdn.net/dn/d9vU9y/btrA6ztHJvK/bBwxQvl2AgFZJR8SxuD151/img.png)
#include <stdio.h>
float a = 1.234567;
int main() {
printf("%10.5f",a);
return 0;
}
![](https://blog.kakaocdn.net/dn/biBkUb/btrA7aNWgnE/BV9F3KsgTgXVmP5p2OdCn1/img.png)
10칸의 입력공간에 1.234567이 5개의 자릿수로 표현되었다. (자동반올림)
실수형에 대해 e, g를 사용할 수 있는데
%.4e는 exponential 표기를 소수점 넷째자리까지 하라는 의미이고
%.3g는 표현할 방식을 컴퓨터가 적당하게 자동으로 골라서 출력해준다.
#include <stdio.h>
float a = 1234563;
int main() {
printf("%5.3e",a);
return 0;
}
![](https://blog.kakaocdn.net/dn/Ny5ML/btrBaxVrMgS/Ti1eHA7lM00cFuloiPuDZ0/img.png)
마찬가지로 자동반올림된다.
추가로 \n은 자동 줄바꿈을, \a는 코드 실행시 윈도우 경고음(alert)을 들려주며, \t는 tab을 한 번 누른 효과가 된다.
2. Scanf 함수
파이썬의 input에 대응하는 함수. 기본 형식은 scanf("%d",&integer); 와 같다.
큰따옴표 안에는 받아들인 입력값을 저장할 자료형을 정하는 것과 입력형식이 들어가며 , 뒤에는 &(변수)가 들어간다.
이때 변수는 미리 지정해두었어야 하며
int a;
scanf("%f, &a);
와 같이 자료형을 다르게 지정하지 않도록 주의해야 한다.
#include <stdio.h>
int a, b, c, d, e;
int main() {
printf("Enter five numbers following nn/mm,d: ");
scanf_s("%d%d/%d%d,%d", &a,&b,&c,&d,&e);
printf("%d", a + b + c * 10 + d / 3 + e % 2);
return 0;
}
※ 에러나 경고문구가 뜰 경우 scanf 대신 scanf_s를 사용할 수 있다.
![](https://blog.kakaocdn.net/dn/ddt1LA/btrA53IzwUi/Kv37xg7fSEzA3gTzstIbkk/img.png)
위와 같이 사용자의 입력을 기다리며 깜빡깜빡 거리고 있다.
미리 지정해둔 형식에 맞게 입력하면 정상적으로 코드가 실행됨.
![](https://blog.kakaocdn.net/dn/ZhnTi/btrA6yVRkSv/aUMcLlXSOlQVYuZuE8mMp0/img.png)
예제 : 입력받은 두 분수를 더해 출력하기
/*********************************************************
* From C PROGRAMMING: A MODERN APPROACH, Second Edition *
* By K. N. King *
* Copyright (c) 2008, 1996 W. W. Norton & Company, Inc. *
* All rights reserved. *
* This program may be freely distributed for class use, *
* provided that this copyright notice is retained. *
*********************************************************/
/* addfrac.c (Chapter 3, page 46) */
/* Adds two fractions */
#include <stdio.h>
int main(void)
{
int num1, denom1, num2, denom2, result_num, result_denom;
printf("Enter first fraction: ");
scanf("%d/%d", &num1, &denom1);
printf("Enter second fraction: ");
scanf("%d/%d", &num2, &denom2);
result_num = num1 * denom2 + num2 * denom1;
result_denom = denom1 * denom2;
printf("The sum is %d/%d\n", result_num, result_denom);
return 0;
}
'개발 > C' 카테고리의 다른 글
[C언어] 다차원 배열(Multidimensional Array) (0) | 2022.05.30 |
---|---|
[C언어] 배열(array), sizeof (0) | 2022.05.28 |
[C언어] 자료형 분류, getchar, putchar (0) | 2022.05.25 |
[C언어] if, else, else if, switch, break (2) | 2022.05.07 |
[C언어] 반복문 (while, do, for) (0) | 2022.05.05 |