본문 바로가기

몰랐던 사실들/C언어

[몰랐던 사실] fgets의 비밀

fgets의 비밀


fgets는 개행문자를 무시하고 문자열을 입력 받을 수 있는데

마지막에 개행문자 '\n' 도 같이 포함이 되게 된다. 

그렇기 때문에 이를 제거하려면 

아래와 같이 제거해주면 된다.

 

고로 문자열의 길이 또한 \n이 붙어있기 때문에

"hello" 라는 문자열을 입력했을 때 5가 아닌 6이 나올 것이다.

 

주의해서 사용하자!

str[strlen(str) - 1] = '\0'

 

 

fgets와 scanf를 함께 사용할 때에는 '\n'를 생각해줘야한다.


Scanf는 \n 을 저장하지 않기 때문에 buffer에 그대로 남아있는데 

반복문을 사용 할 때 fgets 와 scanf를 섞어 사용하면 scanf에서 읽지 않은 개행문자가 fgets에 자동으로 들어가서

원치 않는 상황이 발생할 수 있다.

 

이럴 때에는 getchar() 를 사용하면 좋다!