본문 바로가기
PROGRAMMING/C

변수의 출력 다음은 데이터 입력!!

by 쪼렙엔지니어 2022. 2. 14.
반응형

이전 시간까지 변수에 대해서 알아보았고,

또 변수를 출력하는 방법에 대해서 알아보았습니다.

 

그럼 이번시간엔 변수에 새로운 데이터를

입력하는 방법에 대해서 알아보겠습니다.

 

위와 같이 자료형이 int인 변수 a를 선언했다고 

가정해 보겠습니다.

 

a를 출력하고 싶을때는 아래와 같이

printf함수를 이용해서 출력하면 됩니다.

 

그런데 생각해보니 아직 a에는 아무런 값을

저장하지 않았습니다.

오~ 그래도 실행해보니

오류는 나오지 않고 다행히 0으로 출력이 됩니다.

 

그런데 계산기같은걸 하나 만들려고 해도

우리가 새로운 값을 입력할 수 있어야 하잖아요?

그럴때 어떻게 새로운 값을 입력할 수 있을까요?

 

그래서 오늘 배웁니다.

scanf 함수!!!

 

printf에 이어서 scanf가 등장했습니다.

아마 visual studio 2013이후 버전에서는 

scanf가 오버플로우에 취약한 점 때문에

이를 보완한scanf_s를 이용하도록 유도되어 있습니다.

(오버플로우란 우리가 데이터를 담기위해 선언한 변수는 자료형에 따라

알맞는 메모리사이즈를 가지고 있는데

그 메모리사이즈를 오버하는 데이터사이즈를 담으려고 할때

발생하는 오류 입니다. 추후에 자세히 알아보겠습니다.)

 

그러니 결론은!!!

만약 컴파일러가 제대로 되지 않는다면

scanf_s를 사용하도록 합시다.

 

printf가 화면에 결과값을 출력해주는 출력함수였다면

scanf는 우리가 키보드나 마우스로 입력한 값을 받아들이는 입력함수 입니다.

프로그램이 실행된 후 scanf함수는 우리가 어떤값을 입력할때까지 계속 기다립니다.

그리고 값을 입력한 뒤 엔터를 눌러야지만 입력으로 처리됩니다.

 

Printfscanf가 이름이 비슷하듯이 사용하는 방법도 비슷합니다.

Printf가 출력하는 포맷이 변수타입마다 다르듯이

Scanf도 입력받을 데이터의 타입에따라 포맷이 다릅니다.

 

위는 입력받을 데이터의 타입에 맞는 포멧입니다.

 

위 경우처럼 double형의 변수를 입력 받으려면 %lf로 해야합니다.

float형은 %f입니다.

 

그리고 "&"문자뒤에는 변수의 이름을 써주어서

우리가 입력한 데이터를 저장할 변수를 지정해 주어야 합니다.

즉 위와 같은 경우

실수형 데이터를 입력받아서 변수fl에 저장하는 것입니다.

 

쉽지요?

별것 아닙니다.

 

마지막으로 printfscanf의 문법적인 내용을 정리하자면

 

Printf(“”);

printf뒤에 괄호를 쓰고 쌍따옴표를 쓰고

그 안에 출력하고자 하는 내용을 씁니다.

줄을 바꾸고 싶다면

Printf(~~~~~~~~\n);

으로 쓰면 됩니다.

 

 

Scanf_s(%d,&i);

만약 값을 입력하고 싶다면 scanf_s를쓰면 됩니다.

%d는 입력받는 변수의 데이터형을 따라야 하고

뒤에 &i는 입력받은 값을 저장할 변수 데이터 주소를 의미합니다.

 

 

 

printf scanf_s를 붙여서 쓸 때

입력값을 출력값과 같은 줄에서 받고 싶으면

printf문에서 \n을 제외하고

다음줄에서 입력을 받고 싶다면 \n을 쓰면 됩니다.

 

scanf_s다음에는 굳이 \n을 안써줘도 됩니다.

그 이유는 우리가 값을 입력할 때

어차피 엔터를 누르기 때문입니다.

 

 

오늘은 이렇게 입출력에 대해서 정리를 해보았습니다.

이제 다음시간부터 간단한 연산들에 대해서 

이야기 해 보겠습니다.

 

제 블로그를 방문해 주셔서 감사합니다.

도움이 되셨다면 공감(좋아요) 부탁드리고,

댓글은 다른분들께도 좋은 정보일 수 있으니

공개로 부탁드립니다.

여러분의 작은 정성이 좋은 포스팅을 생산하는

힘이 된답니다. :)

감사합니다.



반응형

'PROGRAMMING > C' 카테고리의 다른 글

비트연산자  (0) 2022.09.05
대입연산자, 산술연산자  (0) 2022.02.23
변수 선언과 출력  (0) 2022.02.11
2진법, 10진법, 16진법 그리고 변수  (0) 2022.02.09
Hello world #2  (0) 2022.02.08

댓글