cdt416z   4년 전

문제 자체는 간단했고, scanf(" %[^\n]s", line); 를 통해서 띄어쓰기로 버퍼를 비우고 받아서 정답은 맞췄습니다.

밑에 있는 코드는 그 전에 풀었는데 틀렸다가 나와서 보니까

5
powdered Toast Man
skeletor
Electra Woman and Dyna Girl
she-Ra Princess of Power
darth Vader

이렇게 입력을 넣으면

Powdered Toast Man
Keletor
Electra Woman and Dyna Girl
He-Ra Princess of Power
Darth Vader

이렇게 스몰 s 만 넣으면 젤 앞이 사라지더라고요

왜 s만 이런 일이 벌어지는지 궁금해서 올려봅니다.

dlaud5379   4년 전

직접 실험해보니 "%[\n]s"에서 "%[\n]"까지만 서식 지정자로 인식하고 "s"는 그냥 문자로 취급해서가 아닐까 싶습니다. 코드에서 s를 지우고 실행하니 s가 없어지지 않고 잘 출력됩니다.

추가로 위 코드에서 trash를 쓰지 않고 두 번째 scanf의 맨 앞에 공백 문자를 넣어도 잘 실행되고, 개인적으로 이쪽이 더 편하다는 내용을 덧붙이고 싶습니다.

preview

cdt416z   4년 전

@dlaud5379 실제로 문제 풀때는 trash를 안쓰고 풀긴 했습니다만 trash를 scanf 받을때 %[\n]으로만 받으니까 잘 되네요

감사합니다!!

댓글을 작성하려면 로그인해야 합니다.