C언어 - 입력과 출력

Jocy·2022년 4월 29일
0
post-thumbnail

C언어는 자료형에 따른 입력과 출력을 받는 방식이 다릅니다.
출력과 입력에 필요한 것들을 정리 해보려고 합니다.

형식 지정자

printf를 이용해서 변수를 출력하거나 scanf를 이용해 변수를 입력할 때 형식 지정자를 이용해야 합니다.

%d : int - 부호 있는 10진 정수
%u : unsigned int - 부호 없는 10진 정수
%f : float, double - 부호 있는 10진 실수
%c : char - 단일 문자 및 부호 있는 10진 정수
%hhu : unsigned char - 부호 없는 10진 정수
%s : char[] char배열 - 문자열

%lf : 해당 형식 지정자는 double 자료형을 scanf입력받을 때 사용합니다.

정수형 출력 방법

#include <stdio.h>

int main()
{
	int a;
	int b;
	int c;
	a = 10;
	b = 20;
	c = 30;	

	printf("a 는 %d이고 b 는 %d이고 c 는 %d입니다.", a, b, c);
    // a 는 10이고 b 는 20이고 c 는 30입니다.

	return 0;
}

여기서 주의해야 할 점은 변수에 값을 넣은 후 출력하는 경우는 상관없지만,
변수를 선언한 후 아무런 값을 넣지 않고 출력을 하면 알 수 없는 값이 나옵니다.
이 값을 쓰레기 값 이라고 부릅니다.

실수형 출력 방법

#include <stdio.h>

int main()
{
    float a = 1.3f;
    double b = 1.345232;
  
    printf("a 는 %f 입니다.\n", a); // a 는 1.300000 입니다.
    printf("b 는 %f 입니다.\n", b); // b 는 1.345232 입니다.
    
    float c = 1.345f;
    double d = 1.346;
  
    printf("c 는 %.3f 입니다.\n", c); // c 는 1.345 입니다.
    printf("d 는 %.2f 입니다.\n", d); // d 는 1.35 입니다.
  
    return 0;
}

%.3f 는 소수점 3자리까지 %.2f는 소수점 2자리까지 표시하는 것을 의미 합니다.
d의 경우에 값이 1.346이 나와야하는데 반올림하여 1.35가 나옵니다.
컴퓨터는 2진수로 구성되어 있어 소수점인 10진수를 정확하게 표현할 수 없기 때문입니다.

입력 받기

#include <stdio.h>

int main()
{
  int a;
  
  printf("정수를 입력하세요 : ");
  scanf("%d", &a);
  printf("입력받은 정수 : %d", a);
  
  return 0;
}

출력이 printf 라면 입력을 받으려면 scanf를 해줘야합니다.
scanf로 입력을 받을 때에도 같은 형식 지정자를 사용합니다.
printf와 대부분 동일하지만 예외사항이 한가지 있습니다.
double 의 경우는 출력할때는 %f를 사용해도 됩니다.
하지만 입력을 받을때는 %lf를 사용해주어야 합니다.
그렇지 않으면 숫자를 제대로 인식하지 못합니다.

scanf는 저장할 변수의 앞에 주소값을 나타내는 문자 &를 붙여야 합니다.
&가 붙으면 입력받은 값을 저장할 변수의 주소가 됩니다.
예를들면 &aa의 주소값이지만 a는 그냥 값입니다.
예외적으로 문자열 배열의 경우에는 주소값 &를 써주지 않아도 에러가 나지 않습니다.

여러개 입력 받기

#include <stdio.h>

int main()
{
  int a;
  int b;
  
  printf("정수 a 와 정수 b 입력 : ");
  scanf("%d %d", &a, &b);
  printf("입력받은 a 와 b : %d %d", a, b);
  
  return 0;
}

Space키를 사용하여 띄어쓰기에 따라서 값을 받거나
Enter키를 사용하여 받을 값을 입력 해주어도 됩니다.
최종적으로 값을 입력해줄 때는 Enter를 사용해야 값이 입력됩니다.

부호없는 정수형 입력 받기

#include <stdio.h>
int main()
{
	unsigned char input;	
	scanf("%hhu", &input); // 입력 받을 때 - 형식지정자 선언, 저장할 주소(&)변수명
	printf("%hhu", input); // 출력 할 떄 - 형식지정자 선언, 변수명
	
	return 0;
}

unsigned char를 입력받을 때는 %hhu로 사용해야 합니다.

profile
Software Engineer

0개의 댓글