컴퓨터 프로그래밍/C

C언어 표준 입력 함수 get / scanf

나노콛 2019. 7. 18. 13:47

(정답) 아래와 같은 소스를 실행하면

#include <stdio.h>
int main()
{
 int num1=10;

 printf("%d %d\n",num1);

 return 0;
}

10 과 나머지 서식 문자는 쓰레기 값으로 나오게 됩니다.


표준 입력 함수

 

#include <stdio.h>
int main()
{
 char string[10];

 printf("Enter the string : ");
 gets(string);

 printf("string : %s\n",string);

 return 0;
}

gets 함수는
입력 함수인데요 문자열을 입력받아 저장공간에 넣습니다.

그러나 gets는 없어졌고 gets_s를 이용하시면 됩니다.

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 0;

 printf("a = ");
 scanf("%d",&a);

 printf("b = ");
 scanf("%d",&b);

 printf("a + b = %d\n",a+b);

 return 0;
}

scanf 함수입니다.
그러나 이것도 scanf_s를 이용하시면 됩니다.
입력을 받아서 변수에 저장하는 기능을 갖고 있으며
printf 함수와 흡사한 형태를 갖고 있습니다.

그리고 또 확인해야 할 것이 &입니다. 주소 연산자라고 하죠
함수는 언어 자체의 기능이 아니기 때문에
다른 곳에 있는 함수에게 값을 보내서 그 결과를 가지고 오기 위해
변수의 주소로 접근을 하게 됩니다.

그러면 위의 gets_s 함수는?이라는 생각을 가지시는 분이 계십니다.
저기서 사용된 char string[10]; 이 변수는 배열이라고 하며
배열은 주솟값을 갖고 있습니다.

이 내용은 추후에 배열과 포인터를 공부할 때 더 자세히 알아보겠습니다.

gets_s는 그냥 변수를 (배열 형태의)
scanf는 &를 붙여야 한다는 것 정도만 알아두시면 됩니다.

그리고 
scanf("%d ",&a); 이처럼 %d와 " 사이에 공간이 있으면 입력하는데 문제가 생길 수 있습니다.

위의 소스 코드에서 scanf 함수를 하나로 합쳐서 2개의 수 입력을 받아보는 코드를 작성해 보시기 바랍니다.

728x90