Я удивлен, что это работает вообще.(c = getchar() != EOF)
совершенно неправильно для начала.line[i] = c;
появляется дважды.И я думаю, что он уязвим к переполнению буфера в крайнем случае.
РЕДАКТИРОВАТЬ: более ранний ответ, который я больше не вижу, сказал, что у вас, кажется, пропали скобки из цикла for.