Ayuda con control de longitud de cadena
Publicado por Julian (1 intervención) el 07/08/2006 17:00:28
Hola a todos.
Tengo un gran problema con un programa en C que estoy haciendo como proyecto, y es acerca de validar una cadena de longitud de 4 caracteres ingresado como dato de entrada.
Paso a explicarles:
El programa me pide ingresar una cadena de longitud de 4 caracteres. Lo solucioné a medias creando un array de cadena de esta forma: char strCadena[10] de tal manera que le estoy dando una tolerancia de longitud 9 si por error ingreso una cadena mayor a 4 caracteres y así controlar la validación por medio un mensaje “Dato no válido, la longitud sobrepasa los 4 caracteres”. Ahora, ¿qué sucede si ingreso una cadena (por consola por supuesto) de longitud mayor a 10?. La respuesta obvia sería: aumentar la longitud del array poniendo strCadena[1000] por ejemplo. Sin embargo estaría desaprovechando recursos si al final solo uso 4 posiciones. Incluso nadie nos aseguraría que no vayamos a superar la cantidad de 10000.
Debemos tener muy en cuenta que si ingresamos como dato una cadena de longitud mayor al especificado en la dimensión del array de cadena, Windows nos arrojaría un mensaje de error y el PC podría colgarse, con la consiguiente pérdida de datos; y así nuestra aplicación sería insegura e inestable.
Probé muchos algoritmos para solucionar este inconveniente pero no tuve éxito. Necesitaría hacer un código que a medida que ingrese cada carácter (sin pulsar la tecla <Enter>), el programa me vaya contando la cantidad de caracteres ingresados hasta llegar a 4, y ahí detener el ingreso de más caracteres, o algo parecido. También probé con arrays dinámicos pero tampoco tuve éxito.
Investigué las librerías estándar de C y sus funciones pero no encontré nada al respecto.
Debería haber alguna librería no estándar por ahí que solucione mi problema.
Creo que esto le habrá pasado a muchos a la hora de optimizar un programa.
Les agradezco a todos y espero que alguien me dé alguna solución.
Saludos cordiales.
P.D. Uso el compilador Dev-Cpp 4.9.9.2
Tengo un gran problema con un programa en C que estoy haciendo como proyecto, y es acerca de validar una cadena de longitud de 4 caracteres ingresado como dato de entrada.
Paso a explicarles:
El programa me pide ingresar una cadena de longitud de 4 caracteres. Lo solucioné a medias creando un array de cadena de esta forma: char strCadena[10] de tal manera que le estoy dando una tolerancia de longitud 9 si por error ingreso una cadena mayor a 4 caracteres y así controlar la validación por medio un mensaje “Dato no válido, la longitud sobrepasa los 4 caracteres”. Ahora, ¿qué sucede si ingreso una cadena (por consola por supuesto) de longitud mayor a 10?. La respuesta obvia sería: aumentar la longitud del array poniendo strCadena[1000] por ejemplo. Sin embargo estaría desaprovechando recursos si al final solo uso 4 posiciones. Incluso nadie nos aseguraría que no vayamos a superar la cantidad de 10000.
Debemos tener muy en cuenta que si ingresamos como dato una cadena de longitud mayor al especificado en la dimensión del array de cadena, Windows nos arrojaría un mensaje de error y el PC podría colgarse, con la consiguiente pérdida de datos; y así nuestra aplicación sería insegura e inestable.
Probé muchos algoritmos para solucionar este inconveniente pero no tuve éxito. Necesitaría hacer un código que a medida que ingrese cada carácter (sin pulsar la tecla <Enter>), el programa me vaya contando la cantidad de caracteres ingresados hasta llegar a 4, y ahí detener el ingreso de más caracteres, o algo parecido. También probé con arrays dinámicos pero tampoco tuve éxito.
Investigué las librerías estándar de C y sus funciones pero no encontré nada al respecto.
Debería haber alguna librería no estándar por ahí que solucione mi problema.
Creo que esto le habrá pasado a muchos a la hora de optimizar un programa.
Les agradezco a todos y espero que alguien me dé alguna solución.
Saludos cordiales.
P.D. Uso el compilador Dev-Cpp 4.9.9.2
Valora esta pregunta


0