출력할 때 공백대신에 s, 탭 대신에 t 등을 출력해서 테스트하는 방법이 있습니다. 개인적으로 이런 방식을 추천합니다.
우선 문제가 되는 변수를 하나 집자면 그건 바로 k입니다.
간단한 예를 들어, 지금 line[k] 가 공백이면 line[k] = '\t'; k--; 를 하고 계시는데 출력할 때는 k번째 까지만 출력하고있네요. 즉 저 \t는 출력될 수 없는 몸이 되었습니다.
더군다나 만약 4개의 문자중 탭이 하나도 없을 경우 k는 4가 되는데, 그렇다면 line[4]에 들어있는 문자는 무엇일까요? 게다가 이런 경우 읽은건 4글자를 읽었는데 출력할 때는 5글자를 출력하네요..
뭐, 그래도 엄청 많이 고쳐야지만 하는 정도인건 아니네요..