Buenas!! ando con un problema seguramente no muy dificil de resolver pero despues de horas de programacion e investigacion ya nose que probar, de todas maneras voy a seguir intentando y si encuentro solucion la publico..
El problema:
La funcion "validar_numero()" retorna siempre 1!! Aunque ingrese -1, 15, 23, 123, asd,e3,2a, etc
Dejo parte del codigo y sus respectivas funciones:
-------------------------------------------------------------------
Código
//[Codigo] do{// ---------------------------------------------------------------CARGA ID if(c) printf("Ingreso un valor incorrecto, ingrese nuevamente\n"); printf("\nIngrese Id del curso: "); //fflush(stdin);-----------------------NO USAR-> EN SU LUGAR USAR "lbuffer()" -> Funcion creada en este archivo. //scanf("%s",aux); fgets(aux,100,stdin);//fgets en este caso guarda lo que se ingresa del teclado ('stdin') en la cadena de caracteres 'aux' //con un maximo de 99 caracteres (100-1). Si se ingresan menos de 99 caracteres se agrega un '\n' if(aux[strlen(aux)-1]=='\n')aux[strlen(aux)-1]=='\0';//Si se agrega un \'n' lo "sacamos" poniendo en su lugar un '\0' lbuffer();//funcion que limpia buffer printf("\n Ingresaste: %s\n",aux); if(validar_numero(aux)==1)c=1; else c=0; }while(validar_numero(aux)==1);//Si la funcion retorna 1 > Ingreso un valor incorrecto //Si sale del while > es correcto el valor ingresado (Es numero) > guardamos en archivo curso[i].id=atoi(aux); //atoi me convierte la cadena de caracteres a int // ---------------------------------------------------------------FIN CARGA ID //------------------------------------------------------------------------------ //Dejo aca la funcion "validar_numero(char *n)" y "lbuffer()": //------------------------------------------------------------------------------- int validar_numero(char *n){ int largo=strlen(n), es_num=0, bien=0; for(int i=0;i<largo;i++){ es_num=atoi(n+i); //atoi retorna 0 cuando NO es numero if(!es_num)return 1; }//for return 0;//Si la funcion llego hasta aca > SI es numero (Retornamos 0) } void lbuffer(){ /* esta funcion 'lbuffer()' es para limpiar el buffer, no uso 'fflush(stdin)' por que no es correcto usarla, ademas de que trabajo en GNU/Linux (Debian) y "no funciona" */ int d; while((d=getchar())!= '\n' && d != EOF); }