Nagie's DevStory

[C] 11. 사용자 입력 받기 본문

Programming/C

[C] 11. 사용자 입력 받기

Nagie 2023. 9. 5. 00:18
728x90

앞서 C를 처음 배웠을 때 'HelloWorld'를 출력했다.
 
출력을 했다면 그와 반대되는 개념인 입력도 가능하다.
 
C 표준에 입력받는 함수가 여러 개 있긴 하지만 대표적으로 하나를 꼽자면 scanf이다.
 
scanf으로 여러 종류의 포맷을 받아올 수 있다.
 
<버퍼 오버플로우 문제가 있어 지금은 scanf_s로 사용하는 게 안전하다.>
 
 
사용법은 아래와 같다.
 

#include <stdio.h>

int main () {
	
    int nData = 0;
    
    scanf_s("%d",&nData);
    
}

 
printf(); 와 다른 점은 변수를 사용할 때 앞에 & (주소 연산자)를 사용한다는 것인데
 
이건 포인터와 연관되어 있어 다소 설명이 어렵다.
 
그리고 문자를 받을 때 변수가 아닌 배열을 사용해 문자열을 받게 된다면 & (주소 연산자)를 사용하지 않는다.
 
차차 공부하겠지만 배열이 곧 포인터기 때문이다.
 
문자열 배열 사용 예시는 아래와 같다.
 

#include <stdio.h>

int main () {

    char sStr[10] = { '\0' , } ;
    
    scanf_s("%s" , sStr , 10);
    
}

 
또는 
 

#include <stdio.h>

int main() {

    char sStr[10] = { '\0' , };

    scanf_s("%s", sStr, (unsigned int)sizeof(sStr));

}

 
문자열 같은 데이터를 받을때  scanf_s();를 사용 시 꼭 버퍼 사이즈를 넘겨줘야 한다.

728x90
Comments