Si, a fuerzas tienes que capturar primero las variables en una cadena. Después esa cadena la pasas a una función donde tú valides caracter por caracter la cadena ya sea para que contenga sólo números (con isdigit ()) o sólo letras (con isalpha() ) o en el caso de que quieras capturar flotantes que valide que no contenga más de un punto decimal o si quieres negativo, que valide que el signo '-' esté únicamente al principio de la cadena. Éstas funciones vienen dentro de la librería "ctype.h". Espero haber ayudado