Jump to content

Buscando Datos en Archivo


Recommended Posts

Bueno amigos tengo el siguiente problema, tengo un archivo .txt que es de esta forma:

 

10

15869254 3

1 58000 2 32000 3 21475

13569245 2

1 48500 2 89570

.

.

.

 

 

 

Es un archivo que guarda un RUT y numeros de cuenta con sus respectivos saldos, por ejemplo, el 10 en este caso seria el numero de clientes, en la segunda linea el primer numero es el RUT, el segundo es el numero de cuentas y en la linea de abajo estan los datos de cada cuenta.

Sin contar la primera linea se cuentan 2 lineas para cada cliente. Mi problema es el siguiente, necesito comparar los RUT de los clientes para ver cual es el menor, cada RUT esta en una linea par (2,4,6,8,10,12,14,16,18,20), como puedo hacer para leer exactamente solo el RUT de los clientes y guardarlos de alguna forma?

Link to comment
Share on other sites

lo que yo haria seria capturar con algun lector I/O utilizando un while recorrerlo por linea, utilizando una variable numérica que te diga la linea que va,aumentarla cuando termine la linea y con un "if" dar la condición que cuando sea par , utilizando el resto = 0 (%). y dentro hacer lo que quieras, verificarlos o guardarlos..

 

espero te sirva.. bye!

 

 

 

Edited by alone
Link to comment
Share on other sites

Yo crearia un a variable booleana, defino a la variable con el valor 0, y entro el while del EOF, el que te indica el fin del archivo que esta leyendo, a la primera no entra es decir if(x==1) entre y al final del proceso cambia el valor de x a 0, y de ahi el else que solo transformaria el valor de la variable a 1, es decir a la otra entraria.

 

Link to comment
Share on other sites

Puede no ser la solución mas optima, pero por algo se empieza :hide:

 

Slds

 

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

int main(int argc, char **argv)
{
    char rut_menor[15]="9999999999";
    
    FILE *archivo=fopen("./lista.txt","r");
    if(archivo)
    {
        char buffer[255];
        short iteracion=0;
        int largo;
        while(1)
        {
            fgets(buffer,255,archivo);
            largo=strlen(buffer);
            buffer[largo-1]='\0';
            
            if(feof(archivo))
                break;

            if(iteracion==0)
                printf("Cabecera: %s\n",buffer);
            else if(iteracion==1)
            {
                printf("\nRut: %s\n",buffer);
                if(strcmp(buffer,rut_menor)<0)
                    strcpy(rut_menor,buffer);
            }
            else if(iteracion==2)
            {
                printf("Datos cuenta: %s\n",buffer);
                iteracion=0;
            }
            iteracion++;
        }
        fclose(archivo);
        
        printf("\nMenor rut: %s\n",rut_menor);
        
    }
    return 0;
}

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...