프로그래밍 공방

c/c++ 문자열 입력 본문

개발/c++

c/c++ 문자열 입력

hyosupsong 2017. 10. 12. 03:13

1. scanf()

예) char str[10];

    scanf("%s", str);

특징

- scanf() 함수는 공백문자가 나타나면 읽기를 멈춘다. (hello world 를 입력하면 hello만 저장된다.)

- n길이의 단어를 입력 할 때 최소 n+1길이의 배열이 필요하다. (끝에 \0 값을 저장한다.)


2. gets()

예) char str[10];

    gets(str);

특징

- scanf와는 다르게 공백문자가 나타나도 엔터를 입력하기 전까지 입력받는다.

- scanf와 같이 n길이의 단어를 입력 할 때 최소 n+1길이의 배열이 필요하다.


3. fgets()

예) char str[10];

    fgets(str, 10, stdin);

특징

- \0을 포함한 문자열의 최대크기를 받기 때문에 오버플로우 문제를 해결할 수 있다.

- 함수가 리턴되도 모든 문자열이 입력되지 않았을 수 있다.

- 엔터키('\n')가 문자열 끝에 들어간다. puts(str);을 해주면 한 줄 더 출력되는걸 확인할 수 있다.

  (printf("%s", str); 에서는 그러지 않는다.)

- arr[strlen(arr)-1] = '\0';을 해주면 해결할 수 있다.


4. getline()

예) string s;

    getline(cin, s);

특징

- 문자열 크기의 제한이 없고, 공백문자 또한 포함하여 입력받는다.

'개발 > c++' 카테고리의 다른 글

cout과 printf  (0) 2017.10.10
C/C++ 입출력 정리  (0) 2017.10.02