[CS_study] CS 기본입출력

나라리야·2021년 4월 22일
0

CS_study

목록 보기
3/18
post-thumbnail

C언어에서의 기본 입출력 방법을 공부하고, 입력받은 데이터를 가공하여 출력해보자

scanf()

C언어에서 특정한 변수에 값을 넣기 위해서 scanf()를 사용합니다.

#include <stdio.h>
int main(void) {
  int a;
scanf("%d", &a);  //a라는 변수에 할당된 값이 없다. 
printf("입력한 숫자는 %d입니다.\n", a); system("pause");
return 0;
}

// 출력 오류가 생긴다. 

1)vs에서 scanf()는 취약한함수로 분류되어있다. 따라서 _CRT_SECURE_NO_WARNINGS를 적용한다. (취약한걸알지만 무시하고 입력을 받겠다. 라는 의미 )
2)Visual Studio를 제외한 대부분의 IDE에서는 scanf()를 사용해도 컴파일이 진행된다.

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main(void) {
  int a;
scanf("%d", &a);
printf("입력한 숫자는 %d입니다.\n", a); system("pause");
return 0;
}

1) &는 특정한 변수의 주소를 의미한다. (주소 연산자)
2) 실제로 컴퓨터는 특정한 메모리 주소에 접근하여 데이터를 수정하므로 &를 이용하는 것
3) 그렇다면 메모리 주소에 얼마만큼의 크기로 데이터를 쓸지 결정은 어떻게 할 수 있을까?

이때 사용되는 것이 형식지정자 이다.

형식지정자

1) double형 데이터는 왜 입력을 받을 때 %lf를 사용하고, 출력할 때는 %f를 사용할까?
이유: 입력을 받을 때는 특정 주소에 특정 크기만큼 입력을 수행하지만 출력할 때는 주소가 아닌 값 자체를 출력하므로 구체적인 크기를 지정하지 않아도 된다.

2)% 자체를 문자로 출력하고 싶으면 어떻게 해야 할까?
: %%를 입력하면 %가 출력된다.

예제

1) 실수형을 입력 받아서 소수점 셋째 자리까지 출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) { 
double a; scanf("%lf", &a); 
printf("%.2f\n", a); 
system("pause"); 
return 0;
}

2) 두숫자를입력받아순서바꾸어출력하기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
int a, b;
scanf("%d %d", &a, &b); 
printf("%d %d\n", b, a); 
system("pause");
return 0; 
}

3) 한자리씩끊어서입력받기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void) {
int a, b, c;
scanf("%1d%1d%1d", &a, &b, &c); 
printf("%d %d %d\n", a, b, c); 
system("pause");
return 0;
}

C언어에서 입출력을 수행할 때는 형식 지정자를 따라야하고, printf()는 단순히 데이터를 넘기고, scanf()은 입력 받을 주소를 나타내기 위해 &를 사용한다.

profile
Code의 美를 추구하는 개발자 🪞

0개의 댓글