ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • scanf 함수
    c언어 기초 2017. 3. 20. 14:15


    1. scanf 함수



    - scanf 함수의 입력 형태 정의

    데이터를 입력받는 형태를 지정할 수 있다. 즉 입력 서식을 지정하는 것이다.

    예 : "%d %o %x"


    -실수 입력에 있어서 주의사항

    정밀도 생각!

    소수 6자리 이하의 실수 입력 시 %f 사용

    소수 6자리를 넘는 실수 입력 시 %e 사용

    단! double형 변수를 사용하는 경우에는 서식 문자 %le를 사용


    예) 변수 입력 및 출력


    #include <stdio.h>


    int main()

    {

      int Num1,Num2;

      int result;

      printf("첫번째 수를 입력 : ");

      scanf("%d",&Num1);

      printf("두번째 수를 입력 : ");

      scanf("%d",&Num2);  

      result = Num1 + Num2;

      printf("두 수의 합은 %d 입니다.\n“,result);

      return 0;

    }





    Q1) 학생의 성적을 입력한 뒤 합계와 평균을 구해보세요. 


    정수형 변수 3개만 사용하여 코드를 작성

    ================

     이  름   :   홍  길  동

     ================

     국  어   :   100

     영  어   :   98

     수  학   :   75

     ================

     합  계   :    273

     평  균   :    91.00

     ================



    입력 변수 : kor, eng, math


    ★ 주의 : 평균이 실수로 출력!!! 



    문자열의 입력 예와 실행 결과   

     2 :  #include <stdio.h> 

      3 : 

      4 :  main() 

      5 :  { 

      6 :     char name1[30], name2[30];   

      7 :     printf("이름을 입력하세요! ");  

              scanf("%s", name1);           ① 


      8 :     printf(“이름을입력하세요! ");

              scanf("%s", name2);          


      9 :     printf("나의 이름은 %s 입니다.\n", name1); 

      10:    printf("나의 이름은 %s 입니다.\n", name2);                  ② 

      11:  } 






    이름을 입력하세요! Hong,Gil-Dongꏮ           

    이름을 입력하세요! Hong Gil Dongꏮ 




    나의 이름은 Hong,Gil_Dong 입니다.   

    나의 이름은 Hong 입니다.   




    ① scanf() 함수를 통하여 문자형 배열로 문자열을 입력받을 경우에는 변수명 앞에 '&'를 붙이지 않는다. 

       C 언어에서 문자열은 1차원 배열로 취급되며, 배열명은 배열 첫 번째 원소의 주소를 나타낸다. 따라서 7행에서 배열명 "name1"은 "&name1[0]"을 나타내므로, scanf() 함수에서 인수가 배열인 경우에는 배열명 앞에 주소 연산자 '&'를 붙이지 않는다. 자세한 내용은 10, 11장을 참조하기 바란다. 

    ② 10행의 실행 결과와 같이, 입력되는 문자열 사이에 공백이 있으면 첫 번째 나타나는 공백 이후의 문자열은 무시된다. 그러므로 scanf() 함수로 문자열을 입력할 경우에는, "Hong,Gil-Dong"과 같이 문자열 사이에 공백이 없도록 하여야 원하는 결과를 얻을 수 있을 것이다. 



    ** scanf도 입력값에 대한 제한을 넣거나 공백입력도 가능하다
    scanf 입력형식에 조건을 부여하면 된다!!!!

    예1) scanf("%[12345]s",data);  >>> 입력이 4567일 경우 45만 입력됨(%s문자열 입력시 1~5 사이 값이 있는 경우 그 값 출력,%s는 &적지않아도 됌)

    예2) scanf("%[^12345]s",data);  >>> 입력이 4567일 경우 67만 입력됨 << ^는 조건 안 이외의 문자열만 입력허용
    예3) scanf("%[0-9]s",data);  >>> 입력이 45ab일 경우 45만 입력됨 << 0-9는 0123456789와 같은 의미
    예4) scanf("%[^\n]s",data);  >>> 개행문자를 만나기 전까지 입력허용 (공백도 입력이 된다 !!!!!
    scanf("%[^\n]s", data);


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

    switch에 의한 선택 실행  (0) 2017.03.20
    제어문 소개 및 if 문  (0) 2017.03.20
    연산자  (0) 2017.03.20
    C언어 Visual Studio scanf 에러 해결 방법  (2) 2017.03.19
    데이터 저장을 위한 변수  (0) 2017.03.17

    댓글

Designed by Tistory.