본문 바로가기
프로그래밍/c언어 기초공부

[C언어 기초-04] 데이터 입출력 2. scanf()

by 졸린이 2021. 7. 27.
반응형

표준입출력함수

Scanf()

 

저번 글에 printf()에 대해 알아보았다.

 

이번에는 scanf()에 대해 알아보자.

 

scanf()도 printf()랑 마찬가지로 헤더파일을 입력해줘야 한다.

#inclue<stdio.h>

사용 방법도 별 차이가 없다.

 

#include<stdio.h>

main(){
	int num;		//정수형 변수 선언
	printf("숫자를 입력해주세요 : ");
	scanf("%d", &num);	//정수타입 입력

	printf("입력한 수는 : %d", num);
}

printf()와 마찬가지로 입력 형식을 "" 안에 변환형식 %d 와같이 사용하고 &num <= 이렇게 입력받는 데이터를 저장할 변수를 입력한다.

 

printf()와 조금 다른 것은 & 이 문자가 붙는건데 주소연산자이다.

 

num 변수의 주소값을 보내주는 것이다.

 

즉 num이란 변수의 주소명은 asdf이다. 니가 입력한 변수는 asdf 이 주소에 넣고 이 변수를 사용할 때는 num으로 쓰면 된다.

 

뭐 이런식으로 생각하고 넘어가면 될 것 같다.

 

나중에 c언어에서 토나오는 순서인 Pointer에서 많이 나오는 연산자이다. 지금은 scanf()에서는 &연산자를 변수명 앞에 놓고 쓰면 된다.

 

변환형식은 printf()와 같이 사용한다.

 

 

 

 

%c char 문자
%d int 정수
%f float, double 소수
%s char 문자열

주로 사용하는 몇개만 알아보자.

1 #include<stdio.h>
2
3 main() {
4 	char cc;		//문자
5 	int nn;			//정수
6	float ff;		//소수
7	char ss[100];	//문자열
8	
9	printf("문자, 정수, 소수, 문장을 띄어쓰기 또는 엔터로 구분해서 입력 : \n");
10	scanf("%c", &cc);			//%c 문자형식
11	scanf("%d %f", &nn, &ff);	//%d 정수, %f 소수타입
12	scanf("%s", ss);			//%s 문자열
13
14	printf("입력데이터 한 줄씩 출력\n");
15	printf("%c\n", cc);
16	printf("%d\n%f\n%s", nn, ff, ss);
17 }

 

 

 

 

위에 코드는 입력한 데이터를 변수에 저장해서 출력해주는 프로그램이다.

 

위에서 설명했듯이 printf()는 그냥 변환형식에만 맞춰서 변수명을 입력해주면 된다.

 

하지만 scnaf()는 변수명 앞에 & 주소 연산자를 붙여줘야 한다.

 

그런데 12행을 보면 ss만 사용해서 & 주소 연산자를 붙이지 않았다.

 

나중에 배열에서 설명하겠지만 c언어에서는 java와 다르게 string 변수가 없다.

 

string을 사용하고 싶으면 char 변수 여러개를 (예시에서는 100) 이어 붙여서 변수 하나에 데이터 하나씩 집어 넣어서 문자열을 만드는 형식이다.

 

때문에 7행에서 문자열을 사용하기 위해 문자 배열 100 크기로 잡아서 ss로 선언해 놓았다.

 

즉 char[100] ss 에서 ss는 다른 변수명과 다르게 char[100] 이 백개의 이어져 있는 변수 중 첫번째의 주소값을 가지게 된다.

 

즉 굳이 주소 연산자를 붙여서 사용하고 싶으면 &ss[0] (<= ss 자체가 ss[0]의 주소를 가지게 되므로) 이렇게 사용하면 된다.

 

뭐 대충 그렇구나 하고 넘어가도 괜찮을 것 같다.

 

지겹도록 배열사용하면 자연스럽게 몸에 익혀지는 것 같다.

 

입출력 함수에 scanf() printf()를 제외하고 gets(), puts(), getchar(), putchar() 도 있다.

 

다음 포스팅때 ..

 

-----------------------------------------------------------------------------------

scanf()를 2013년 버전 이후 그냥 사용하게 되면 에러가 뜬다.

https://hellodoor.tistory.com/136

 

[C언어 에러 해결] Visual Studio 2019 scanf() C4996 에러해결

C4996 오류 scanf: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. Visual Studio 에서 scanf..

hellodoor.tistory.com

 

 

 

 

 

 

반응형

댓글