Blog Content

    티스토리 뷰

    문자열 입력 함수 scanf, gets, fgets

    1. scanf()

    - 여러 형식의 데이터를 입력 받을 수 있다. (정수, 실수, 문자, 문자열)

    - 입력 버퍼에서 데이터를 공백이나 엔터키로 구분하여 프로그램으로 읽어 들린다.

    - 공백을 읽을 수가 없기 때문에 문자열을 입력받는 함수로 적합하지 않다.


    1
    scanf("%s", str);
    cs


    2. gets()

    - 문자열을 한 줄씩 입력받는 함수이다.

    - 줄 바꿈(enter) 하는 곳에 \0이 붙여진다.

    - 문자열의 시작위치만 알 수 있어 문자열 저장공간의 범위를 넘을 수 있는 위험이 있다.


    1
    gets(str);
    cs


    3. fgets()

    - 여러줄의 문자열을 입력받는 함수이다.

    - 줄 바꿈(enter)를 포함한 모든 문자열 끝에 '\0'을 붙여서 읽어 드린다.

    - gets와 다르게 입력받는 메모리 사이즈를 지정하므로 안전성이 좋다.


    1
    2
    3
    fgets(str, sizeof(str), stdin);
     
    str[strlen(str)-1= '\0'// fgets()로 입력받고 줄바꿈 문자를 제거
    cs



    // C++에서 gets는 지원하지 않는다 때문에 fgets를 사용해야 한다.

    strlen을 사용하려면 #include <cstring>을 써줘야한다. 

    Comments