Char *array è un puntatore, la dimensione di un puntatore è 4 byte su sistemi a 32bit.
char array[100] sono 100 caratteri. la dimensione di un carattere è definizione uguale a 1 da cui ottieni 100.
questo invece è sbagliato
array=(char*)malloc(100*sizeof(int));
chiedi 100 interi e li assegni a un puntatore a char.