ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C/C++ scanf(3), fscanf(3), sscanf(3)
    C,C++ & Linux 2020. 5. 22. 14:51
    728x90

    함수 기능

    형식화된 문자열을 읽어들이는 함수입니다.

    scanf() 함수는 표준 입력 파일로부터 읽어들입니다.

    fscanf() 함수는 지정한 파일로부터 읽어들입니다.

    sscanf() 함수는 지정한 문자열로부터 읽어들입니다.

     

    함수 원형

    #include <stdio.h>
    
    int scanf(const char *format, ...);
    int fscanf(FILE *fp, const char *format, ...);
    int sscanf(const char *buf, const char *format, ...);

     

    매개변수

    format

    형식 지정자

    %[*][필드 너비][길이수정자][변환형식]

     

    변환형식

    변환형식 설명
    d 부호 있는 10진 정수
    i 부호 있는 정수, 밑은 입력 형식에 따라 달라짐
    o 부호 없는 8진수
    u 부호 없는 10진 정수
    x 부호 없는 16진 정수
    a, A, e, E, f, F, g, G 부동 소수점 수
    c 문자
    s 문자열
    [ ]까지 나열된 문자들 중 하나와 부합
    [^ ]까지 나열된 문자열 이외의 한 문자와 부합
    P void 포인터
    n 부호 있는 정수를 가리키는 포인터
    % %문자 자체
    C 넓은 문자
    S 넓은 문자열

     

    ...

    읽어들인 값을 저장할 포인터 리스트

     

    fp

    읽어들일 대상 파일의 파일 포인터

     

    buf

    읽어들일 대상 문자열의 포인터

    반환값

    성공 시 읽어들인 변수의 갯수 리턴

    첫 번째 명세부터 EOF 발생 시 EOF 리턴

    중간에 에러 발생 시 EOF 리턴하고 errno 설정

    예제

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <memory.h>
    
    
    int main(int argc, char *argv[]) {
        int a;
    
        // 표준입력파일로부터 정수를 읽어들임
        scanf("%d", &a);
        printf("%d\n", a);
        exit(0);
    }
    

     

    결과

    예제2

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <memory.h>
    
    
    int main(int argc, char *argv[]) {
        char *fname = "ssu_test.dat";
        char name[BUFSIZ];
        FILE *fp;
        int age;
        
        fp = fopen(fname, "r");
        fscanf(fp, "%s%d", name, &age);
        fclose(fp);
    
        fp = fopen(fname, "w");
        fprintf(fp, "%s is %d years old\n", name, age);
        fclose(fp);
        exit(0);
    }
    

     

    결과

    원래 ssu_test.dat는

    Dongkyoo 24

    였습니다.

     

     

     

     

     

     

     

     

     

     

     

    리눅스시스템프로그래밍 저자 : 홍지만
    https://book.naver.com/bookdb/book_detail.nhn?bid=14623672

    책에 기술된 예제 프로그램입니다. 책 내부에는 훨씬 더 많은 자료가 있습니다. (개인적으로 좋았습니다.)

    'C,C++ & Linux' 카테고리의 다른 글

    C/C++ tmpnam(3), tmpfile(3)  (0) 2020.05.22
    C/C++ fileno(3)  (0) 2020.05.22
    C/C++ sprintf(3), snprintf(3)  (0) 2020.05.22
    C/C++ printf(3), fprintf(3)  (0) 2020.05.22
    C/C++ fgetpos(3), fsetpos(3)  (0) 2020.05.22

    댓글

Designed by Tistory.