#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define INDEX 1000
#define LENGTH 17
void main(void)
{
 int n,i;

 char dictionary[INDEX][LENGTH];

 
 scanf(\"%d\",&n) ;   ----------------->(1)

 for(i=0; i<n; i++)
  scanf(\"%s\",dictionary[i]); -----------> (2)
 for(i=0; i<n; i++)
 printf(\"%s  \",dictionary[i]);

}
위 소스코드에서
입력을
6
a
b
c
d
e
f
했을 경우에 출력이 a b c d e f 가 되는데

(2)를 gets로 변경해서 받을 경우에
출력이 b c d e f 가 됨..

그 이유가 (1)에 scanf에서 값을 입력하고 엔터를 치면 버퍼에 엔터(\'\\n\',개행)가 남아있어서 
scanf를 했을 경우에는 버퍼에 있던 개행을 입력받은다음 그 다음에 입력을 받아도 값이 정상적으로 변수에 들어가기 때문에
정상 출력이 되는거고, gets는 버퍼에 있던 개행을 입력받기만하면 끝나버리니깐 변수에 개행이 들어가기 때문에
위 같은 결과가 나오는거지?