Ver Mensaje Individual
  #11 (permalink)  
Antiguo 25/01/2012, 15:02
cesar_casla
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 4 meses
Puntos: 94
Respuesta: Leer de Fichero

Lo unico que se me sigue ocurriendo por ahora es con la funcion atof como te mencione anteriormente. te dejo como seria(es una version sin q tengas q modificar la cadena que extraes del archivo):
Código C:
Ver original
  1. int flag=1,i,j,k;
  2. char *arr="asddf-13$%&2ku12.6";
  3. float numeros[MAX];
  4. for(i=0;arr[i];i++) // el for termina cuando llega al final de la cadena
  5. {
  6. if( !isdigit(arr[i] && arr[i]!='-' && arr[i]!='.') {
  7.    flag=1;
  8.    continue;
  9.    }
  10. if(arr[i]=='-' || (isdigit(arr[i]) && flag))
  11. {
  12.    numeros[j]=atof( arr+i );
  13.    j++;
  14.    flag=0;
  15. }
  16. }// fin del for
  17.  
  18. //para imprimir los valore
  19. for(k=0;k<j;k++)
  20.     printf("%f\n",numeros[k]);

Explicacion: el primer if comprueba q arr[i] no se un numero que no sea un '-' y un '.' si cumple todo eso entra al if hace flag=1 y ejecuta continue ¿para que continue? solo para evitar que no evalue el segundo if pero si queres sacalo
El segundo if comprueba que arr[i] sea un '-' o sea un numero y flag sea 1, si es asi ejecuta atof,guarda el numero y pone a flag en 0 ¿por que en 0? para evitar que vuelva a entrar en el if, de esta manera evitamos que atof guarde numero erroneos
Sino se entiende bien el codigo pregunta :)

SAludos