C/입출력

gets, scanf, fgets 비교

appmaster 2019. 8. 5. 11:52

scanf()

( )안에 여러가지 format을 지정할 수 있다.

#include "stdafx.h"
#include <stdio.h>

int main(void)
{
     char str[100];
     
     printf("문자열을 입력하세요.\n");
     scanf("%s", &str);
     
     printf("입력한 문자열은 %s 입니다.\n", str);
     
     return 0;
}

위의 출력 결과에서 알 수 있듯이 scanf()로는 공백을 읽을 수가 없기 때문에 문자열을 입력받는 적합하지 않다.

 

 

 

gets() 함수

- 1줄을 입력할 때는 gets( ) 함수를 사용한다.

- 줄 바꿈(엔터)키를 할때까지 1줄을 그대로 읽어들인다.

- 읽어들인 문자열은 줄바꿈 하는 곳에서 \0이 붙여진 배열에 저장된다.

#include <stdio.h>

int main(void)
{
    char str[100];
    
    puts("문자열을 입력하세요 : ");
    gets(str);
    
    printf("입력한 문자열은 %s 입니다. \n", str);
    
    return 0;
}

 

 

 

 

fgets( )함수

1에서 버퍼에 대한 포인터를 받는다.

2에서 문자열의 최대크기(\0포함) 을 받는다.

3에서 file이라고 뜰 것이다. 여기서 stdin을 쓴다. 이 의미는 표준 입력장치(키보드)에서 데이터를 입력받겠다는 뜻이다.

배열이면 sizeof을 써서 길이를 구하지만, 포인터라면 길이를 직접(2번에다가) 입력해주어야 한다.

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[100];
    
    puts("문자열을 입력하세요 ");
    fgets(str, sizeof(str), stdln);
    puts(str);
    
    return 0;
}

 

'C > 입출력' 카테고리의 다른 글

입출력할때 주의해야할 점  (0) 2019.08.06