많이들 하는 실수입니다.
현제 커서 위치를 | 로 대충 표시해본다고 칩니다. 처음 입력이 들어왔을 때 상태를 보면
|5'\n' 이 상태이겠네요.
그리고 scanf("%d");로 숫자 5를 읽고나서 커서의 위치를 보시면
5|'\n' 이렇게 됩니다.
즉, 커서의 위치가 아직도 첫번째 줄에 머물고있는 상태인거죠...그래서 getline으로 읽었을 때 '\n' 한글자만 읽혀서 null을 출력하는 것입니다.
scanf 뒤에 getchar(); 등을 써서 '\n'까지 읽어 커서를 다음줄로 넘겨줍시다. scanf("%d ",&test); 처럼, %d 뒤에 띄어쓰기를 넣어서 해결하는 꼼수도 있습니다. (꼼수라고 한 이유는..이렇게 하면 안되는 경우도 있기 때문입니다..)