有关c语言换行的问题?

为何在结束之前要添加一个换行
#include <stdio.h>
int main()
{
    char c;
    while((    c=getchar())!='\n')
        {
            if(c>='a'&&c<='z'||c>='A'&&c<='Z')
            {
                    c=c+4;
            }    
            if(c>='w'&&c<='z'||c>='W'&&c<='Z')
                c=c-26;    
                printf("%c",c);    
        }
    
    printf("\n");
    return 0;
}

运行结果及报错内容

为了打印出来的内容看起来更清晰