El código que dejo a continuación es para validar que al ingresar el nombre y apellido de un alumno sea correcto.
Por el momento lo que verifico es:
Que tmp no quede vacío, si se pulsa <Enter> sin ingresar nada o si se se pulsa <Enter> después de pulsar <Espacio> una o varias veces. -
No debe haber espacios ni al principio ni al final de la frase ingresada. -
Citar
Si ingreso " Roberto" debería devolver "Roberto"
Si ingreso " Roberto " debería devolver "Roberto"
Si ingreso "Roberto " debería devolver "Roberto"
El problema lo tengo con poner el final de cadena '\0' después del último carácter, si no haySi ingreso " Roberto " debería devolver "Roberto"
Si ingreso "Roberto " debería devolver "Roberto"
espacios en blanco fgets lo deja perfecto pero que pasa si el ingreso es:
Código
Concretamente como harían para pasar el elemento [9] al [7]
[0] R [1] o [2] b [3] e [4] r [5] t [6] o [7] [8] [9] '\0'
Código
#include <stdio.h> #include <limits.h> #include <stdlib.h> #include <string.h> #include <ctype.h> void get_String( char *tmp ); void ajustes( char *tmp ); void mensajeError(); int main( void ){ char tmp[30]; get_String( tmp ); return EXIT_SUCCESS; } void get_String( char *tmp ){ int ok, i=0, espacios=0, espIzquierda=0; do{ ok=1; ajustes( tmp ); while( tmp[i] != '\0' ){ if( tmp[i] == 32 ){ espacios++; }else{ if( tmp[0] == 32 && espIzquierda == 0 ){ espIzquierda = i; } } i++; } if( i == espacios ){ ok=0; espacios=0; i=0; mensajeError(); } }while( !ok ); if( espIzquierda > 0 ){ i=0; while( tmp[i] != '\0' ){ tmp[i] = tmp[i+espIzquierda]; i++; } } } void ajustes( char *tmp ){ char *p = NULL; int ch; *p='\0'; }else{ } } void mensajeError(){ }
Por favor, no hacer caso a las librerías incluidas que es por tantas practicas. -
Saludos.