Будет писать, пока '\0' не встретит.
/* Примерчик */
#include <stdio.h>
char s[9]="Hello\0 !";
int main()
{
printf("%s\n",s);
printf("%.5s\n",s);
printf("%.*s\n",5,s);
fwrite(s,sizeof(s),1,stdout); printf("\n");
return 0;
}
===========================
man printf
man fwrite
Причём, если не встретит в s[100], будет писать дальше. printf получает адрес первого символа и печатает всё до первого нулевого байта. О том как описаны массивы она ничего не знает.
Это касается всех сишных функций для работы со строками.