Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: misscelan en 28 de Diciembre de 2005, 12:17:27 PM

Título: Duda En C
Publicado por: misscelan en 28 de Diciembre de 2005, 12:17:27 PM
 Si por ejemplo tuviese en un archivo: Pedro 4 5
Podría leer el archivo y meterlo en variales con algo parecido a esto fscanf(farch, "%s %d %d", a, &b, &c);

Pero si eso en vez de un archivo lo tuviese en un vector. Existe alguna manera de sacarlo de ahí con una función o me la tengo que crear yo.

Muchísimas gracias.

Un saludo.

Y feliz navidad para los ateos.
Título: Duda En C
Publicado por: zupervaca en 28 de Diciembre de 2005, 12:58:54 PM
 En el fscanf puedes poner cosas así: fscanf(farch, "vector(%s,%d,%d);", a, &b, &c); No se si te refieres a esto exactamente.
Título: Duda En C
Publicado por: Pogacha en 28 de Diciembre de 2005, 02:59:25 PM
 Yo creo, que lo que en realidad necesitas para leer datos desde un archivo de texto es hacerte un parser generico, te tomará un par de dias pero te servira para toda la vida  :P
Busca informacion de como hacer un parser o donde conseguir uno hecho ...
Saludos.
Título: Duda En C
Publicado por: Ruben en 28 de Diciembre de 2005, 02:59:56 PM
 Hi,
no se si es esto lo que quieres, pero ahi va de todas formas:

#include <string.h>
char *strtok( char *str1, const char *str2 );


strtok te devuelve el puntero al siguiente "token" de la cadena str1, donde str2 contiene el separador de los "tokens" de str1. Cuando ya no encuentra mas tokens devuelve NULL. Asi que la primera llamada a strtok deberia ser con la cadena a ser "separada" en str1 y el delimitador en str2. El resto de llamadas hasta que te devuelva NULL deberia ser con str1 a NULL y str2 con el delimitador.


#include <stdio.h>
#include <string.h>

int main(){

char cadena[] = "Ejemplo@tipico@Hola@mundo";
char delimitador[] = "@";
char* cadenaResultado = strtok( cadena, delimitador);

while( cadenaResultado != NULL ) {
   printf( "El resultado es: %s\n", cadenaResultado );
   cadenaResultado = strtok( NULL, delimitador );

}

return 0;

}


La salida seria:
El resultado es: Ejemplo
El resultado es: tipico
El resultado es: Hola
El resultado es: mundo

Espero que te haya servido,
Un saludo,
-Rubén-

Título: Duda En C
Publicado por: misscelan en 28 de Diciembre de 2005, 04:13:02 PM
 Muchas gracias por las respuestas.

Voy con ello.

Un saludo.

Editado: Acabo de ver en una página la función sscanf con lo que podría sacarla del vector directamente sin complicarme la vida. El caso es que alguna vez la he usado. Demasidos lenguajes con demasiadas funciones con demasida limitación cerebral...es lo que tiene.