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 originalint flag=1,i,j,k;
char *arr="asddf-13$%&2ku12.6";
float numeros[MAX];
for(i=0;arr[i];i++) // el for termina cuando llega al final de la cadena
{
if( !isdigit(arr
[i
] && arr
[i
]!='-' && arr
[i
]!='.') { flag=1;
continue;
}
if(arr
[i
]=='-' || (isdigit(arr
[i
]) && flag
)) {
numeros
[j
]=atof( arr
+i
); j++;
flag=0;
}
}// fin del for
//para imprimir los valore
for(k=0;k<j;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