C语言%s格式字符输出为什么一直都是笑脸?(已经用\0)

图片说明
#include
int main()
{ int i,sum=0;
char a[20];
for(i=0;a[i]=getchar()!='\n';i++)
sum=sum+1;
a[i]='\0';
printf("%d\n",sum);
printf("%s\n",a);
return 0;
}

最后输出存入的字符,结束标识也加了,还是一直输出笑脸,不知道哪里错了。

问题解决的话,请点下采纳

#include <stdio.h>
int main()
{ int i,sum=0;
char a[20];
for(i=0;(a[i]=getchar())!='\n';i++)
sum=sum+1;
a[i]='\0';
printf("%d\n",sum);
printf("%s\n",a);
return 0;
}

#include
#include
{ int i, sum=0;
char a[20];
for(i=0;(a[i]=getchar())!="\n";i++)
sum+=sum;
a[i]="\0";
printf("%d\n",sum);
printf("%s\n",a);
return 0;
}