Comando personalizado que limpie pantalla

Iniciado por el_lujo, 5 Septiembre 2014, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

rir3760

Cita de: el_lujo en 10 Septiembre 2014, 16:20 PMAdjunté el fuente del programa que fue hecho por el profesor en el aula; el reto es ahora que cuando elijamos una de las opciones dentro de la corrida del programa, ignore los espacios en banco.
No es mi intención desanimarte pero ese programa como C++ deja mucho que desear, de los problemas el mas importante es el uso de gets, mas información en el tema |Lo que no hay que hacer en C/C++. Nivel basico|.

En cuanto a ignorar espacios antes y después de la palabra la forma mas fácil es sustituyendo la llamada a gets por scanf:
Código (cpp) [Seleccionar]
printf(">> ");
scanf("%s", cadena);

Esto porque al utilizar "%s" con scanf se lee una palabra ignorando el espacio blanco (espacio, tabulador, etc.) al principio de la linea.

Sin embargo scanf con "%s" adolece del mismo problema que gets: el programa puede reventar si los caracteres leídos sobrepasan la capacidad del array, una forma mejor es bien utilizar "%Ns" donde N es el numero (menos uno) de caracteres que puede almacenar el array o bien utilizar fgets para leer una linea junto con sscanf para extraer la palabra.

Puedes revisar ejemplos de esas funciones mediante el motor de búsqueda de los foros.

----

Sin embargo lo políticamente correcto si quieres aprender C++ es utilizar su biblioteca estándar empezando con la clase string y los operadores ">>" y "<<".

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

el_lujo

Gracias, rir3760. Exactamente eso es lo que quería comprender.

Igualmente tomaré tiempo para lee el tema: |Lo que no hay que hacer en C/C++. Nivel basico|.

Mil gracias.