[C language] scanf() 함수의 기본적인 사용법

2020. 12. 1. 21:04· 프로그래밍언어/C언어
목차
  1. scanf() 함수
  2. 에러코드 'use _CRT_SECURE_NO_WARNINGS' 없애는 방법 2가지

scanf() 함수

- 콘솔창으로부터 사용자의 입력을 받아오는 함수

#include<stdio.h>

int main()
{
    int i = 0;

    scanf("%d", &i);  // & : ampersand

    printf("Value is %d\n", i);

    return 0;
}

* 콘솔창에 아무숫자나 입력하면 printf()함수가 출력해준다.

* f : formatted의 약자로 형식을 맞춰 나타낸다는 뜻

* 포매팅(formating) : %~, ~ 부분에 뭐가 들어가는지 형식을 지정해주는 것.

  "%d" : scanf 함수에서는 입력을 어떻게 받을지, printf함수에서는 출력을 어떻게 할지 formating 해주고 있다.입력과 출력을 d(decimal, 10진수)로 받겠다고 포매팅해주고 있다.

* &(ampersand) : 변수의 주소를 알고 싶을 때 사용. 사용자가 콘솔창에 입력 했을 때 변수가 아닌 변수의 주소를 넘겨줘서 scanf함수가 주소를 통해 메모리에 직접 접근해서 변수의 값을 바꿔버린다. C언어에서는 변수 자체를 넘겨주는 경우가 없다.) 

* C문법에서는 함수의 출력이 1개만 된다. scanf함수에서 변수 여러개의 입력을 받고 그 값을 바꿔줘야하는데 그것을 출력 할 수 없기 때문에 변수에 주소를 통한 접근법을 사용한다.

 

에러코드 'use _CRT_SECURE_NO_WARNINGS' 없애는 방법 2가지

* 비주얼스튜디오를 마이크로소프트에서 사용하면 에러코드가 뜬다. 비주얼코드에선 오류 없이 컴파일 된다.

* 에러코드 나는 이유 : 변수앞에 & 사용시 사용자가 콘솔창에 입력하면 그 주소에 해당하는 메모리의 값을 입력받는다.

MS에서 VS용 C/C++ 컴파일러를 만들 때, 특정 경우에 사용자에게 입력받은 것을 해당하지 않는 다른 주소들의 메모리들까지 입력해버리면서 보안의 위험이 생긴다. MS 입장에서 해킹 위험이 있는 scanf함수 대신 scanf_s함수를 사용 하기 원한다는 의미로 에러코드( _CRT_SECURE_NO_WARNINGS)가 발생한다.

Windows용 소프트웨어를 개발 할 때는 scanf함수 대신 scanf_s함수를 사용해도 좋다.

​

1. 전처리기 #define 사용해서 에러코드 잡기

 - #define _CRT_SECURE_NO_WARNINGS : use 뒤에 에러내용 복사해서 define 뒤에 붙여넣기

 - 전처리기로 에러코드를 잡을 경우 gcc와 호환이 안된다는 단점이 있다.

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

int main()
{
    int i = 0;

    scanf("%d", &i);  // & : ampersand

    printf("Value is %d\n", i);

    return 0;
}

 

2. 설정 바꿔주기

 - 설정에 ;_CRT_SECURE_NO_WARNINGS 추가하기

프로젝트소스파일 우클릭 - Properties 클릭 - Configuration:Debug모드 선택 , C/C++ preprocessor 클릭, PreprocessorDefinitions에서 맨 뒷부분에 ;써주기, use뒤에 에러내용 복사해서 ;뒤에 붙여넣기 - OK

 - 지금은 Debug모드로 사용하지만 자료구조 알고리즘 등 다른 공부 할 땐 Release모드로 사용하기 때문에 두 모드에 모두 설정을 해줘야 서로 다르게 작동하지 않는다.

 - 설정을 바꾸는 방법은 코드창이 깔끔해보이는 장점이 있다. 홍교수님 추천 방법!

'프로그래밍언어 > C언어' 카테고리의 다른 글

[C language] 정수와 실수  (0) 2020.12.09
[C language] 간단한 입출력 프로그램 만들기  (0) 2020.12.02
[C language] 변수와 상수  (0) 2020.11.22
[C language] 데이터와 자료형  (0) 2020.11.22
[C language] 읽기 좋은 코드를 만드는 요령  (0) 2020.11.20
  1. scanf() 함수
  2. 에러코드 'use _CRT_SECURE_NO_WARNINGS' 없애는 방법 2가지
'프로그래밍언어/C언어' 카테고리의 다른 글
  • [C language] 정수와 실수
  • [C language] 간단한 입출력 프로그램 만들기
  • [C language] 변수와 상수
  • [C language] 데이터와 자료형
개발원슝이
개발원슝이
꾸준히 개발공부를 합니다.
개발원슝이
꾸준히 개발슝이
개발원슝이
전체
오늘
어제
  • ALL (242)
    • 프로젝트 (34)
      • clone coding (19)
      • mini project (5)
      • Team project(with KIC) (10)
    • 문제 (37)
      • 백준 (7)
      • 프로그래머스 (14)
      • 정보처리기사실기 (16)
    • 설치 (9)
    • 개발 기초 (13)
    • 프로그래밍언어 (124)
      • HTML (16)
      • CSS (17)
      • JavaScript (22)
      • JAVA (13)
      • JSP (10)
      • Python (22)
      • C언어 (24)
    • 프레임워크 (6)
      • Spring (3)
      • Django (3)
    • DB (2)
      • MySQL (2)
    • AWS (1)
    • 오류 (2)
    • 이것저것 (6)
    • 전공자 개발 (3)
    • 비전공자 개발 (5)

블로그 메뉴

  • 네이버블로그(강의노트)
  • GitHub
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 점프 투 파이썬
  • 따배씨
  • 홍정모교수님
  • 홍정모의 따라하며 배우는 C언어
  • 인프런
  • 파이썬공부
  • javascript
  • 생활코딩
  • 코딩테스트
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
개발원슝이
[C language] scanf() 함수의 기본적인 사용법
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.