C언어 scanf 문자열 입력 방법 | 문자열 입력하기

C언어를 공부할 때 scanf() 함수를 학습할 것이다.

scanf() 함수는 C언어에서 키보드를 이용해 문자열을 입력받는 함수이다.

하지만, 현재의 Visual Studio 에서 사용시 권장사용은 아니지만 부득이 사용하는 경우 `#define _CRT_SECURE_NO_WARNINGS` 코드를 사용하거나 또는 권장하는 함수를 사용하는 것이 바람직하다.

거두절미하고, 여기서는 scanf() 함수를 사용하여 키보드를 사용한 문자열을 입력하고 입력한 문자열을 화면에 출력하도록 한다.

C언어 scanf() 함수 사용 방법
C언어 scanf() 함수 사용 방법

1. C언어의 scanf() 함수
- 키보드를 사용한 문자열 입력

scanf() 함수는 C언어에서 사용하는 표준 입력 함수이다.

키보드를 사용하여 문자열을 입력받아 컴퓨터에 명령을 내릴 수 있다.

과거 옛날의 모든 프로그램들을 보면 이러한 문자열 입력방식으로 프로그램을 구동하고, 시스템을 만들고 처리했다.

지금도 볼 수 있는 대표적인 문자열 입력 기능은 터미널 또는 콘솔 화면이다.

2. 문자열 입력 기본 문법 scanf()

C언어에서 scanf() 함수가 어떻게 사용되는지 기본 문법을 살펴보자.

scanf() 함수에는 `형식지정자와 변수주소`를 인자로 받아 사용하며, 형식지정자는 데이터의 형태, 변수주소는 배열 변수명으로 간단히 생각할 수 있다.

char name[20];
    
scanf("%s", name);

여기서 주의할 점이 있다.

%s는 공백 전까지만 입력을 받는다는 점이다.

예를 들어, `홍 길동`을 입력하면 `홍`까지만 저장된다.

공백을 포함한 문자열을 입력받고 싶다면 fgets()를 사용하는 방법이 있다.

또한 Visual Studio에서는 scanf 사용 시 보안 경고가 발생할 수 있다.

이 경우 scanf_s 사용하거나 scanf를 사용하려면 별도의 설정이 필요하다.

3. 예제 코드

scanf() 함수가 C언어에서 키보드를 이용한 문자열 입력을 할 수 있다고 언급하였다.

이제 코드에서 어떻게 사용되는지 살펴 본다.

동작의 구조를 위해 scanf() 함수가 사용되는 곳은 별도의 함수로 작성하였다.

단, 해당 코드에서 주목할 부분이 있는데 `#define _CRT_SECURE_NO_WARNINGS`이다.

`#define _CRT_SECURE_NO_WARNINGS` 은 Visual Studio 에서 보안 경고를 무시하는 지시자이다.

지금의 Visual Studio에서 보안 경고에 해당하는 코드가 있다면 컴파일 단계에서 경고를 하게 되고, 컴파일을 중단하지만, `#define _CRT_SECURE_NO_WARNINGS` 사용시 무시되고 컴파일을 진행한다.

Visual Studio 에서 C언어 사용시 scanf() 함수는 안전하지 않은 보안 취약점이 발견된 후, 컴파일 단계에서 unsafe 경고와 컴파일이 중단되지만 `#define _CRT_SECURE_NO_WARNINGS` 사용하면 경고는 무시되고 scanf() 함수를 그대로 사용할 수 있다.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

/* 함수 선언 */
void CallScanf(void);

/* 프로그램 시작 */
int main(void)
{
    printf("\n----- Start 05-Scanf function \n\n");

    /* 프로그램 종료 */
    CallScanf();

    printf("\n----- End \n\n");

    /* 정상 종료 */
    return 0;
}

void CallScanf(void)
{
    char name[255] = "";

    printf("너의 이름은~? 君の名は~? \n");
    printf("=> ");

    scanf("%s", name);

    printf("%s", name);
}

위의 코드에서 주목할 부분은 CallScanf() 함수이다.

CallScanf() 함수의 역할은 사용자가 키보드로 입력한 문자열을 읽고, 화면에 읽은 문자열을 출력한다.

중요한 코드는 다음과 같다.

  • #define _CRT_SECURE_NO_WARNINGS
    - Visual Studio 에서 scanf() 함수 보안 경고 무시
  • char name[255] = "";
    - 문자 배열 255 공간 확보, 빈 문자열로 초기화
  • scanf("%s", name)
    - 키보드로 입력한 문자열 저장.

4. 실행 결과

이제 위의 코드에 대한 실행 결과는 다음과 같다.

코드를 실행하면 printf() 함수를 사용해 질문을 받기 위한 문자열이 출력된다.
여기서는 이름을 받도록 한다.

scanf() 함수가 실행되며 키보드로 문자열을 입력받기 위한 커서가 깜빡 거리는 것을 볼 수 있다.

커서가 깜빡이는 상태에서 문자열을 입력하고 키보드의 엔터를 치면 입력한 문자열이 출력되는 것을 볼 수 있다.

scanf() 실행결과
scanf() 실행결과

댓글

비주얼 스튜디오 코드 VSCode 설치하기 - 마이크로소프트 공식 홈페이지

이미지
VSCode( 비주얼스튜디오코드, Visual Studio Code )는 마이크로소프트( Microsoft )에서 제공하는 있는 무료 코드 편집기 프로그램이다. 프로그래밍 언어의 소스 코드를 작성하고 수정하며, 확장 기능을 설치하여 개발 환경을 구성할 수 있다. 윈도우즈, 맥OS, 리눅스( Windows, macOS, Linux )에서 사용할 수 있으며, 공식 홈페이지를 통해 자신의 운영체제에 맞는 설치 파일을 다운로드받고 설치할 수 있다. 윈도우즈의 경우, 인스톨러 파일( Installer )를 이용하여 설치할 수 있다. 설치파일을 다운로드하고 실행한 다음 화면의 안내에 따라 VSCode 설치를 진행하면 된다. 설치가 완료되면 VSCode를 실행하여 자신이 원하는 코드를 작성할 수 있다. 비주얼 스튜디오 코드 설치하기 - 마이크로소프트 공식 홈페이지 VSCode 무료 소스 코드 편집기 VSCode(비주얼 스튜디오 코드, Visual Studio Code)는 Microsoft에서 개발한 무료 소스 코드 편집기이다. 소스 코드란 컴퓨터 프로그램을 만들기 위해 프로그래밍 언어로 작성한 명령문의 집합이며, VSCode에서 소스 코드를 작성하고 수정할 수 있다. VSCode의 특징을 보자. 무료 사용 VSCode 기본 프로그램을 무료로 다운로드하여 사용 다중 운영체제 Windows, macOS, Linux를 지원 코드 편집 여러 프로그래밍 언어의 소스 코드를 작성하고 수정 가능 확장 기능 Extensions를 이용하여 언어 지원과 개발 도구를 추가 디버깅 지원되는 언어와 개발 환경에서 프로그램 오류를 조사 Git 통합 Git을 이용한 소스 코드 변경 관리 기능을 제공 VSCode 자체는 코드 편집기이고 프로그래밍 언어에 따라 컴파일러, 실행 환경, 개발 도구 등을 별도로 설치해야 할 필요가 있다. 만약, Java 프로그램을 개발할 때는 VSCode 외에 JDK와 관련 확장 기능이 필요하다. VSCode 무료 소스 코드 편집기 VSCode 설치 전 확인 사항 VSCo...

이 블로그의 인기 게시물

ChatGPT Codex GitHub 연결 해제 방법 (앱 삭제까지 정리)

C언어 return 종류와 차이 | return, return 0, return -1, return n

C언어 프로그램 종료 방법 3가지 비교 (실전 예제 포함) | exit() abort() 함수 사용 방법