Не остановится на нулевом байте.
$ cat gets22.c
int main(int argc, char **argv) {
char array[8];
gets(array);
printf("%c%c%c%c%c%c%c\n",array[0],array[1],array[2],array[3],array[4],array[5],array[6],array[7]);
printf("%d %d %d %d %d %d %d\n",array[0],array[1],array[2],array[3],array[4],array[5],array[6],array[7]);
}
$ gcc gets22.c -o gets22
$ echo -ne 'AB\0CDE'| ./gets22
ABCDE
65 66 0 67 68 69 0