1) in c non credo si possa fare, al limite puoi salvare in memoria solo un tot di caratteri presi in input così da non sforare l'array (ma non mi ricordo la funzione comunque basta una ricerchina su internet)
2) per quello credo basti controllare ogni elemento dell'array e quando trovi una minuscola la salvi in una struttura