Cita:
Iniciado por eferion Lo mejor suele ser primero verificar y después convertir.
Cuando te enfrentas a un usuario lo lógico es pensar mal. Si hay alguna posibilidad de que un usuario introduzca un texto en un campo numérico, ten fe que así lo hará... eso y que el mejor mantenimiento se consigue cuando se separan tareas, lo más factible a la larga es chequear los valores en una primera capa y después hacer las conversiones en una segunda.
Pues si es en ese plan dejo mi propuesta haciendo uso de la función
strtol para variar :
Código C++:
Ver originalbool es_numero( char *s )
{
while( *s )
{
if (*s != 0) return false;
}
return true;
}
int main(void)
{
char num [20];
int numero = 0;
do{
printf( "Introduzca un numero entero: " ); }while( !es_numero(num) );
printf("Numero = %d\n", numero
);
return 0;
}
leosansan tienes un problema es tus códigos en las lineas :
Código C++:
Ver originalif ( cadena [0] == '-' || cadena [0] == '+' ) ++i;
Siempre verificas el primer indice si este contiene un '-' o '+' siempre incrementas
i esto te causa problamas con las cifras pares, debe quedar asi :
Código C++:
Ver originalif ( cadena [i] == '-' || cadena [i] == '+' ) ++i;
Saludos