fgets와 scanf, strlen에서의 차이

2019. 5. 18. 20:37PL/C++

fgets는 공백을 포함한 문자열 전체를 받아오고, 개행을 만나면 입력을 중단하고, scanf는 공백이나 개행을 만나면 입력을 마친다

 

둘의 차이는 fgets는 문자열 마지막에 \n을 포함해서 저장한다. 따라서 a를 입력하고 나서 두 배열의 길이를 비교해보면 fgets로 받은 문자열의 길이는 2, scanf로 받은 문자열의 길이는 1이 된다.

 

https://github.com/surinoel/boj/blob/master/1718.c

fgets로 받는 buf는 \0을 포함하여 \n까지 공간을 만들어야 한다. 안한다면 런타임 에러가 난다.

'PL > C++' 카테고리의 다른 글

주석으로 쌓여진 내용에 다시 주석을 달 경우  (0) 2019.05.19
gets의 취약점  (0) 2019.05.19
function의 주소를 넘길 때  (0) 2019.05.15
PI 상수를 사용하는 방법  (0) 2019.04.29
EOF까지 한 번에 입력받기  (0) 2019.04.25