SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: _Cris_ en Miércoles 7 de Marzo de 2007, 13:48

Título: Capturar Los Datos
Publicado por: _Cris_ en Miércoles 7 de Marzo de 2007, 13:48
Hola chicos, tengo un fichero de datos con el siguiente formato:


Citar
Nombre_variable1<tabulador>(min<espacio>a<max>)<retorno_de_carro>
.
.
.
Nombre_variablen<tabulador>(min<espacio>a<max>)<retorno_de_carro><retorno _de_carro>

(A partir de aquí los datos propiamente dichos para n variables)
1
.
.
.
N

Me gustaría obtener los nombres de las variables y el intervalo (max-min) de cada variable para que al introducir nuevos datos sólo permita aquellos dentro del rango especificado. También los datos de cada registro.

¿Cómo podría hacerlo?

Gracias.
Título: Re: Capturar Los Datos
Publicado por: SteelX en Miércoles 7 de Marzo de 2007, 15:43
Hola existe una clase gratis que te puede ayudar a hacer esto y se llama stringtokenizer.

Es un parser generico que te permite extraer cadenas de caracteres de Archivos(Ficheros).. dandole un Token.

Un Token puede ser cualquier caracter que uses para la separacion;

ejemplo:


cadena1 | cadena2 | cadena3- subcadena1-subcadena2

"|" y "-" son los Token's que diveiden las cadenas.


espero y te sirva
Título: Re: Capturar Los Datos
Publicado por: _Cris_ en Miércoles 7 de Marzo de 2007, 22:42
No entiedo a que te refieres con clase. Eso me suena más a C++. Yo utilizo C.
Título: Re: Capturar Los Datos
Publicado por: _Cris_ en Jueves 8 de Marzo de 2007, 15:15
¿Se podría hacer con fgets que lee líneas? Si es así ¿cómo hago para que me coja los intervalos?
Título: Re: Capturar Los Datos
Publicado por: SteelX en Jueves 8 de Marzo de 2007, 15:43
Lo quieres con c ... pues tambien


http://www.koders.com/c/fidF4F66D79091AFA1...8EB2D3CE4F.aspx (http://www.koders.com/c/fidF4F66D79091AFA1BDB8A26773CD64C8EB2D3CE4F.aspx)

de seguro te sirve
Título: Re: Capturar Los Datos
Publicado por: _Cris_ en Jueves 8 de Marzo de 2007, 16:58
Cita de: "SteelX"
Lo quieres con c ... pues tambien


http://www.koders.com/c/fidF4F66D79091AFA1...8EB2D3CE4F.aspx (http://www.koders.com/c/fidF4F66D79091AFA1BDB8A26773CD64C8EB2D3CE4F.aspx)

de seguro te sirve

Y algo más sencillito no hay, porque tela con el asunto.
Título: Re: Capturar Los Datos
Publicado por: Geo en Jueves 8 de Marzo de 2007, 23:54
Pues las funciones que te han comentado deben hacer más fácil el trabajo (se supone que para ello son :P). Ahora, lo básico serían las funciones:

fopen
fgets
fread
strtok
strcpy

Abres el archivo con fopen, lees una línea completa con fgets, aquí puedes tomar diferentes caminos: separar con strtok para quedarte primero con la parte hasta el tabulador, luego separar por espacios. O tú mismo recorrer la cadena hasta encontrar el tabulador, copiar lo recorrido, ahora recorrer hasta encontrar el espacio, copiar nuevamente y repetir una vez más.

Suerte,
JJ (Geo).
Título: Re: Capturar Los Datos
Publicado por: _Cris_ en Viernes 9 de Marzo de 2007, 00:50
Hola.

He estado buscando y he encontrado la función strchr que localiza el primer carácter de una cadena.

La idea sería apuntar al caracter "(" anterior al mínimo para poder capturarlo pero se me escapa como hacerlo. Y luego con el máximo.

Con este código leo las líneas hasta que el fichero se acaba.

Código: Text
  1. #include &#60;stdio.h&#62;
  2. #include &#60;stdlib.h&#62;
  3.  
  4. int main()
  5.    {
  6.    FILE *fichero;
  7.    char linea[100];
  8.  
  9.    fichero=fopen(&#34;datos.txt&#34;,&#34;r&#34;);
  10.    if (fichero==NULL)
  11.      {
  12.      printf( &#34;No se puede abrir el fichero.&#092;n&#34; );
  13.      exit( 1 );
  14.      }
  15.    printf( &#34;Contenido del fichero:&#092;n&#34; );
  16.    fgets(linea,100,fichero);
  17.    while (feof(fichero)==0)
  18.        {
  19.        printf( &#34;%s&#34;,linea );
  20.        fgets(linea,100,fichero);
  21.        }
  22.    if (fclose(fichero)!=0)
  23.      printf( &#34;Problemas al cerrar el fichero&#092;n&#34; );
  24.    }
  25.