#39#38#37 Gracias, suponía que sobrescribía memoria pero no sabía cómo controlarlo, pero para capturar texto con espacios resulta cómoda si el programa no es muy importante. Pensaba que habría alguna forma de usarla y limitar el número de carácteres pero ya veo que no. (Con scanf al principio no sabía cómo evitar problemas como que al programa se le vaya la olla al meter un carácter o meter varias entradas de golpe y al luego descubrí fflush()). ¿Cuál sería la mejor opción?
#40#39, lo primero es no usar scanf para leer del teclado. Lo correcto es leer línea a línea con fgets y luego procesarla con sscanf (si fuere necesario).
Y contra gets, igualmente fgets es la mejor opción: necesitas pasarle el buffer, su tamaño y de dónde lo vas a leer (normalmente stdin). Y listo. Ahora ojo, recuerda que fgets te va a dejar el \n al final de la cadena, por lo que quizá te interese borrarlo.