C함수 문자열에서 서식에 맞춘 변수 값 받기 sscanf()

2020. 7. 4. 19:39 컴퓨터/프로그래밍

C함수 문자열에서 서식에 맞춘 변수 값 받기 sscanf()

문자열로부터 서식을 갖춘 데이터를 입력받습니다.

  • 헤더: stdio.h
  • 형태: int sscanf(const char *str, const char * format, ... )
  • 인수: char *str 문자열
    char *format 서식 문자열
  • 반환: int 입력된 항목 수를 반환하며, 오류가 발생하면 EOF를 반환
reference

서식을 갖춘다는 것은 입력을 어떤 모양에 맞추어 입력을 받는다는 것입니다. 아래의 서식에 사용하는 변환 문자열을 참고하세요. 주의할 점은 서식에 맞추어 입력하질 못하면 다음 scanf까지 모두 에러가 발생하므로 조심하여야 합니다. 예제의 결과를 확인하세요.

 
변환 문자열 의미
%o 8진 정수 형식으로 입력
%d 10진 정수 형식으로 입력
%ld long형 10진 정수 형식으로 입력
%x 16진 정수 형식으로 입력
%f float 형 형식으로 입력
%lf double 형 형식으로 입력
%c 문자 형식으로 입력
%s 문자열 형식으로 입력

예제

#include <stdio.h>

int main( void)
{
   int   n_num;
   float f_num;
   char  str[1024];
   int   ret;

   ret   = sscanf( "100", "%d", &n_num);  // 10진수를 받습니다.
   printf( "ret=%d %d  %d\n", ret, n_num, n_num);

   ret   = sscanf( "100", "%o", &n_num);  // 8진수를 받습니다.
   printf( "ret=%d %d  %o\n", ret, n_num, n_num);

   ret   = sscanf( "100", "%x", &n_num);  // 8진수를 받습니다.
   printf( "ret=%d %d  %x\n", ret, n_num, n_num);

   ret   = sscanf( "100 123.45", "%d%f", &n_num, &f_num);  // 10진수와 실수를 받습니다.
   printf( "ret=%d %d %f\n", ret, n_num, f_num);

   ret   = sscanf( "100 123.45 badayak.com",  "%d%f%s", &n_num, &f_num, str);  // 10진수, 실수, 문자열 하나를 받습니다.
   printf( "ret=%d %d %f %s\n", ret, n_num, f_num, str);

   return 0;
}

실행 결과

]$ ./a.out
ret=1 100  100
ret=1 64  100
ret=1 256  100
ret=2 100 123.449997
ret=3 100 123.449997 badayak.com
]$
이 댓글을 비밀 댓글로

티스토리 로그인이 풀리면 여기를 클릭하세요.

    • 2020.07.04 21:59
    비밀댓글입니다
  1. 잘보고 갑니다.
    편안한 휴일 보내세요^^
error: Content is protected !!