js9609   2년 전

a[10][11]

while(feof(stdin))
{

fgets(a[i], 11, stdin);
i++;
}

for (int k = 0; k < i-1;k++)
printf("%s\n", a[k]);

로 작성했을 때,

하단 코드의 6번째 줄에서 11을 10으로 바꾸면 a의 각 행에 문자가 9개씩밖에 저장이 안되요. 왜 이러는 걸까요??

그래서 10-->11로 바꾸면 BaekJoonOnlineJudge를 입력했을 때,  밑에 출력할 때 

BaekJoonOn

LineJudge

이렇게 제대로 출력되지만 조사식을 통해 확인해보니 a[0][11]와a[1][0]에는 "l"이 중복 저장되어 있더군요.

그렇다면 왜 printf에서 a[0]을 출력할 때 BaekJoonOnl이 아닌 BaekJoonOn까지만 출력되는 것일까요??

fgets의 작동원리좀 알려주시면 감사하겠습니다.

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