새소식

컴퓨터공학 💻/C

C 프로그래밍 (8) - 기본 입출력 scanf()

  • -

scanf("%d". &x); 는 x라는 정수에 사용자가 입력한 값을 받아 삽입하는 의미의 코드이다. 입력받을 자료형에 따라 %d, %f, %c, %lf 등 다양한 문법을 맞게 사용해야 한다.

 

간단한 계산기를 만드는 코드이다. x와 y값, 그리고 x + y 는 각각 정수형 값으로 출력되며 z값은 char형으로 출력된다. 

모든 조건 (5개의 연산자)을 만족않고 종료문구에서 continue를 입력하게 되면 밑의 코드는 모두 무시하고 다시 되돌아가서 작업을 다시 시작하게 된다. break는 즉시 반복을 멈추고 탈출하게 된다.

 

 

하지만 출력을 해보면 '종료할까요?' 문구 뒤에 입력하지 않았던 문구들이 출력되는 경우가 발생한다. 이것은 C언어에서 버퍼를 처리해주지 않아서이다. 엔터또한 C에서 문자로 취급하기 때문에 150을 입력하고 엔터를 치는 순간 잘못된 문자(즉, 엔터)가 입력되어 저러한 문구가 발생한것이다.

 

getchar()를 입력하면 단 한개의 문자를 입력받겠다는 의미로써 저렇게 수를 입력하고 종료 문구를 발생시키는 코드 사이에 삽입하면 엔터키 한개를 getchar가 받아내는 것이다. 

 

소스코드 

#include <stdio.h>

int main(void)
{
char z;
int x, y;
while(1)
{
printf("계산할 수식을 입력하세요 : ");
scanf("%d %c %d", &x, &z, &y);
if(z == '+')
{
printf("%d %c %d = %d\n", x, z, y, x + y);
}
else if(z == '-')
{
printf("%d %c %d = %d\n", x, z, y, x - y);
}
else if(z == '*')
{
printf("%d %c %d = %d\n", x, z, y, x * y);
}
else if(z == '/')
{
printf("%d %c %d = %d\n", x, z, y, x / y);
}
else if(z == '%')
{
printf("%d %c %d = %d\n", x, z, y, x % y);
}
else
{
printf("올바른 수식이 아닙니다.\n");
}
getchar();
printf("계산기를 종료할까요? (O/X) ");
getchar();
scanf("%c", &z);
if(z == 'x' || z == 'X')
{
continue;
}
else if(z == 'o' || z == 'O')
{
break;
}
else
{
printf("\n");
continue; 
}
}
return 0; 
}

 

for 반복문을 이용해 곱셈표도 만들 수 있다.

 

소스코드

#include <stdio.h>

int main(void)
{
int x, i;
printf("곱셈표를 출력할 수를 입력하세요 : ");
scanf("%d", &x);
for(i = 0; i <= 100; i++)
{
printf("%d X %d = %d\n", x, i, x * i);

return 0;
}

 

원하는 만큼 정수를 입력하여 그 정수의 합을 구하는 코드도 만들어낼 수 있다.

 

소스코드

#include <stdio.h>

int main(void)
{
int number, x, i, sum = 0;
printf("정수의 개수를 입력하세요 : ");
scanf("%d", &number);
for(i = 0; i < number; i++)
{
printf("정수의 값을 입력하세요 : ");
scanf("%d", &x);
sum += x;
}
printf("모든 정수의 합은 %d입니다.\n", sum);
return 0;
}

 

 

 

 

 

이 글은 프로그래머 나동빈님의 강의 내용을 개인적인 학습을 목적으로 정리하여 쓴 글임을 밝힙니다. 
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.