C no se caracteriza precisamente por ofrecer una interfaz potente para interactuar con la consola o con la entrada estándar.
Una opción que tienes es usar un buffer temporal lo suficientemente grande como para admitir prácticamente cualquier cadena. Vuelcas la entrada a dicho buffer y después ya trabajas sobre el mismo para saber su longitud y cualqueir otra cosa que necesites:
Código C:
Ver originalchar buffer[2000];
// opcion 1: copiar si la longitud es correcta y error en caso contrario
else
MostrarError( "Longitud no valida" );
// opcion 2: reservar la memoria necesaria para copiar la cadena
Y si no siempre te queda pasarte a C++, la clase string ya se encarga de todos estos problemas sin que tu tengas que pensar en ello.
Un saludo