C语言把多个字符串合并成一个(保留换行)

有以下三个字符串 char a[]=he is there?; char b[]=she is here. ; char c[]=I do not care. ; 现在要合并成一个字符串,并且输出的时候依然是三行,要怎么办呢?

{
char finalstr[1024]={0};

sprintf(finalstr,"%s\n%s\n%s\n",a,b,c);
printf(finalstr);
}