if(i-z>0) 일 때만 출력한건 첫번째 줄에 '\n'만 들어있기 때문이라는걸 알고 사용하신건가요? 이건 참 잘하셨어요.
그런데 문제는 입력된 줄 수가 n보다 클 때이네요
대충
2
a
b
c
d
이런 데이터가 있다고 칩시다.
그럼 i는 4가 되겠죠? (왜냐하면 d 뒤에 getchar()로 들어오는 값은 EOF일테니까요...)
str[0] = "" str[1] = "a" str[2] = "b" str[3] = "c" str[4] = "d" 가 저장되있을겁니다.
그럼 이제 출력하는 부분을 보세요. i=4이고 for(z=n;~~니까 str[2] 인 b와 str[3] 인 c를 출력하겠네요. 정답은 c d 인데말이죠