No.16 scanf() 함수의 기본 구조

C언어 기초 2015. 4. 17. 09:00 Posted by 네트동자

Keaboard 로부터 Data를 입력받은 후,

입력받은 Data를 사용하고자 한다면, 입력받은 Data를 저장해야한다.

이것이 scanf( ) 함수의 기본기능 중 하나이다.


Example)

10진수 Data를 하나 입력받아 저장하려면

다음과 같이 사용한다.


scanf("%d",&a)

"%d" 입력을 위한 서식문자.

&a    입력을 저장하는 변수.


위의 예에서 살펴볼 수 있듯이

scanf( ) 함수도 printf( ) 함수와 같이 '서식문자'를 사용한다.

scanf( ) 함수에서 사용하는 서식문자는 입력받을 Data의 Type을 결정하기 위해서이다.

위의 서식문자 %d 는 keaboard를 통해서 10진수를 입력받는다는 것을 의미한다.


그리고, &a는 입력받을 값을 저장하는 '임시저장공간'과 관계가 있다.

이에 대한 내용은 다음 Chapter에서 공부할 '변수'에 관해서 알아야 이해할 수 있다.

일단은 쉽게 생각해서,

keaboard 로부터 입력받은 Data를 a라는 이름의 변수에 (임시 저장 공간)에 저장한다고 생각해보자.


----- to be continued.


 




- 키보드로부터 데이터를 입력받는 것을 표준입력.

- 모니터에     데이터를 출력하는 것을 표준출력.


scanf( ) 함수 역시 printf( ) 함수와 마찬가지로

stdio.h 헤더 파일에 정의되어 있는 표준 라이브러리 함수에 속한다.


그러므로, scanf( ) 함수를 사용하려면,

printf( ) 함수와 마찬가지로,


stdio.h 헤더파일을 include 해야한다.



14번째 - 필드 폭 지정.

C언어 기초 2015. 4. 16. 09:00 Posted by 네트동자

서식문자에 적절한 옵션을 추가하면 

출력되는 데이터 필드의 폭을 조절할 수 있다.


다시 말해,

일정한 간격으로 데이터를 출력할 수 있게 해준다.


다음은 '서식 문자'에 옵션을 추가하는 예들이다.


%03d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 남은 자리는 0으로 채움.

%-3d 필드 폭을 3칸 확보, 왼쪽으로   정렬해서 출력.

%+3d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 양수는 +부호를 붙이고

                                                             음수는 -부호를 붙여서 출력.




다음 예제를 통해 연습해보자.


01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%03d, %03d, %03d \n", 1, 20, 300);

05: printf("%-3d, %-3d, %-3d \n", 1, 20, 300);

06: printf("%+3d, %+3d, %+3d \n", 1, 20, 300);

07: printf("%+3d, %+3d, %+3d \n", 1, 20, -300);

08:

09: return 0;

10: }



결과값.


001, 020, 300

1  , 20 , 300

 +1, +20, +300

 +1, +20, -300

계속하려면 아무키나 누르십시오 . . .


 06행과 07행은 

%+3d 필드 폭을 3칸 확보, 오른쪽으로 정렬해서 출력, 양수는 +부호를 붙이고

                                                             음수는 -부호를 붙여서 출력.

위의 서식 문자 옵션에 따라 각각 데이터값에 +, - 부호를 붙여서 출력하게 된다.


01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%f \n", 0.000123);    //소수점이하 6자리

05: printf("%f \n", 0.0001236);   //소수점이하 6자리 초과

06:

07: printf("%e \n", 0.000123);    //소수점이하 6자리

08: printf("%E \n", 0.0001236);   //소수점이하 6자리 초과

09:

10: printf("%g \n", 0.000123);    //소수점이하 6자리

11: printf("%G \n", 0.0000123456);//소수점이하 6자리 초과

12:

13: printf("올해 우리나라 경제 성장률은 5%%입니다. \n");

14:

15: return 0;

16: }



실행결과는 다음과 같다.



0.000123

0.000124

1.230000e-004                     // 1.23*  (10의 -4승)   을 의미

1.236000E-004                     // 1.236* (10의 -4승)   을 의미

0.000123

1.2345E-005                        // 1.23456* (10의 -5승) 을 의미

올해 우리나라 경제 성장률은 5%입니다.




12번째 10진수 정수(양수) - %u

C언어 기초 2015. 4. 16. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

04: printf("%d \n", 2147483647);   //2147483647

05: printf("%d \n", 2147483650);  //-2147483646

06: printf("%u \n", 4294967295);   //2147483647의 약 2배

07:

08: return 0;

09: }



서식문자 %u를 사용하면 

%d로 출력할 수 있는 양수의 범위보다

2배 더 넓게 출력할 수 있다.


위의 예제는 서식문자 %d와 %u의 차이를 잘 설명하고 있는 코딩이다.


04행은 서식문자 %d로 표현할 수 있는 최대값 2147483647을 출력했다.

05행은 서식문자 %d가 출력할 수 있는 최대값을 넘어서는 수치가 기입되었기에 이상한 음수값이 출력되었다.


06행은 서식문자 %d로 표현할 수 있는 최대값 2147483647보다 큰 값을 출력하기 위해서

          서식문자 %u를 사용하고 있다.

          서식문자 %u로 표현할 수 있는 최대값은 4294967295 이다. 

          이 값은 %d로 출력할 수 있는 최대값의 약 2배이다.


그럼에도 불구하고, %u 역시 표현할 수 있는 최대값보다 큰 값을 대입하면, 서식문자 %d와 마찬가지로 이상한 값이 출력된다.






        



11번째 C언어를 이용한 실수계산.

C언어 기초 2015. 4. 15. 09:00 Posted by 네트동자

01: #include <stdio.h>
02: int main(void)

03: {
04:  printf("10진수 정수 : %d \n", 0.5);
05:  printf("10진수 실수 : %f \n", 0.5);
06:  printf("10진수 실수 : %lf \n", 0.5);

 07: printf("소수점 이하 6자리 이상 : %f \n", 0.5655678);
       /* 맨 마지막 자릿값 반올림*/


08:  printf("소수점 이하 6자리 이상 : %lf \n", 0.5667784);
      /* 맨 마지막 자릿값 버려짐*/

09: return 0;
10: }

 

04 행에서 실수 0.5를   서식문자 %d (10진수)로 출력하고 있습니다.

이처럼, 실수 0.5 를 정수형 서식 문자 %d 로 요청하므로 0 이 츨력됩니다.

즉, 이것은 실수 0.5 에서 정수부 0 만 출력된 것이다. 

 

 


결과값은 다음과 같다.



10번째 C언어의 실수계산 원리.

C언어 기초 2015. 4. 15. 09:00 Posted by 네트동자

다음 예제는 실수 0.5를

서식문자 %d (10진수),   %f (10진수 실수), %lf (10진수 실수)를 이용하여

출력하는 코드이다.

 

서식문자 %f 는 실수자료형 중 float 형에서 사용.

서식문자 %lf 는 실수저료형 중에서 double 형에서 사용.

'C언어 기초' 카테고리의 다른 글

12번째 10진수 정수(양수) - %u  (0) 2015.04.16
11번째 C언어를 이용한 실수계산.  (0) 2015.04.15
문자와 문자열 출력하기.  (0) 2015.04.14
※ 주의 ※  (0) 2015.04.14
9번째 출력 서식문자, 그리고 예제.  (0) 2015.04.14

문자와 문자열 출력하기.

C언어 기초 2015. 4. 14. 09:00 Posted by 네트동자

01: #include <stdio.h>

02: int main(void)

03: {

05: printf("a를 대문자로 표현하면 %c입니다. \n", 'A');

06: printf("%s %c입니다. \n", "a를 대문자로 표현하면", 'A');

07: printf("%s %d %s \n", "2곱하기 3은", 2 * 3, "입니다.");



08: return 0;

09: }


위의 간단한 C프로그램으로 결과 값을 예측해보자.


예상결과)

a를 대문자로 표현하면 A입니다.

a를 대문자로 표현하면 A입니다.

2곱하기 3은 6입니다.


실제 결과값은 다음과 같다.



※ 주의 ※

C언어 기초 2015. 4. 14. 09:00 Posted by 네트동자

※ C 프로그램 상에서 16진수, 8진수는 음수로 표현할 수 없다.

9번째 출력 서식문자, 그리고 예제.

C언어 기초 2015. 4. 14. 09:00 Posted by 네트동자

 

 서식 문자

   출력 형태

%d, %i

  10진수 정수 (양수와 음수 모두 표현 가능)

%x, %o

  16진수 정수, 8진수 정수 (양수만 표현 가능)

%f, %lf

  10진수 실수 (양수와 음수 모두 표현 가능)

%c

  한 개의 문자

%s

  문자열

%u

  10진수 정수 (양수만 표현 가능)

%s

  e 표기법에 의한 실수

%E

  E 표기법에 의한 실수

%g

  소수점 이하 자리 수에 따라 %f, %e 둘 중 하나를 선택

%G

  소수점 이하 자리 수에 따라 %f, %E 둘 중 하나를 선택

%%

  % 기호출력

 

<숫자 출력하기>

#include <stdio.h>
int main()

{
 printf("%d 더하기 %d는 %d입니다. \n", 3, 5, 3 + 5);
 printf("%i 더하기 %i는 %i입니다. \n", 3, 5, 3 + 5);
 printf("%d-%d=%d입니다. \n", 3, 5, 3 - 5);
 printf("%i-%i=%i입니다. \n", 3, 5, 3 - 5);

 return 0;
}

 

%d와 %i는 양수와 음수 모두 출력 가능.

참고로 10진수를 표현할 때 서식문자 %d를 주로 사용한다.

 

example)

printf("%d 더하기 %d는 %d입니다. \n", 3, 5, 3+5);

 

 

 

 

 

 

 

 

 

 

 

 

 

'C언어 기초' 카테고리의 다른 글

문자와 문자열 출력하기.  (0) 2015.04.14
※ 주의 ※  (0) 2015.04.14
8번째 printf() 함수의 다른 기능.  (0) 2015.04.14
7번째 쉬운 예제.  (0) 2015.04.13
6번째 printf( ) 함수 와 특수문자.  (0) 2015.04.13