fgets의 비밀
fgets는 개행문자를 무시하고 문자열을 입력 받을 수 있는데
마지막에 개행문자 '\n' 도 같이 포함이 되게 된다.
그렇기 때문에 이를 제거하려면
아래와 같이 제거해주면 된다.
고로 문자열의 길이 또한 \n이 붙어있기 때문에
"hello" 라는 문자열을 입력했을 때 5가 아닌 6이 나올 것이다.
주의해서 사용하자!
str[strlen(str) - 1] = '\0'
fgets와 scanf를 함께 사용할 때에는 '\n'를 생각해줘야한다.
Scanf는 \n 을 저장하지 않기 때문에 buffer에 그대로 남아있는데
반복문을 사용 할 때 fgets 와 scanf를 섞어 사용하면 scanf에서 읽지 않은 개행문자가 fgets에 자동으로 들어가서
원치 않는 상황이 발생할 수 있다.
이럴 때에는 getchar() 를 사용하면 좋다!
'몰랐던 사실들 > C언어' 카테고리의 다른 글
[C언어 몰랐던 사실] scanf로 공백까지 읽어버리기! (0) | 2021.11.07 |
---|---|
[C언어 몰랐던 사실] scanf 와 pointer (0) | 2021.11.07 |