Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Wilber592 en 22 Noviembre 2018, 00:34 am



Título: Cómo leer número de un txt.
Publicado por: Wilber592 en 22 Noviembre 2018, 00:34 am
Buenas tardes amigos, tengo un proyecto, y este habla sobre una abarrotes, dónde hay 3 archivos 1 para facturas otro para "inventario" y otro para clientes.

Resulta que el de inventario, debe cargar información cada que se cierre el programa así la próxima vez que se abra, mantenga los datos anteriores hasta agotar existencias.

Y no puedo o no sé cómo extraer numeros de los txt, ayuda porfavor


Título: Re: Cómo leer número de un txt.
Publicado por: FranFin en 22 Noviembre 2018, 00:36 am
Por que usar un archivo de texto para leer informacion?  :huh:
Puedes leer los bytes del archivo y esperar tener suerte y que no haya sido modificado por lo que sea, de esa forma puedes leer el numero que quieres.


Título: Re: Cómo leer número de un txt.
Publicado por: AlbertoBSD en 22 Noviembre 2018, 00:42 am
Hay que tener varias consideraciones, para empezar saber distinguir si el archivo esta guardado como texto o en formato binario.

Apartir de ahi hay varias cosas que ver.

Si es modo texto, buscar la estrucura y orden de los datos guardados y leerlos en formato de texto y convertir los necesarios a  datos enteros, flotantes etc. ejemplo fgets + strtol, strtof etc...

Si es modo binario, lo mismo buscar la estrucura y orden de los datos guardados, y leerlo en formato directo a una estrucutra de datos ejemplo fread(&dato1,...

Si me mandas los archivos yo te escribo el programa para leer los datos y mostrarlos en pantalla.

Saludos


Título: Re: Cómo leer número de un txt.
Publicado por: Beginner Web en 22 Noviembre 2018, 02:26 am
Bueno la solucion esta en la teoria busca esto en tus apuntes o en internet "Archivos en C. Apertura"
Código
  1. puntero_archivo=fopen("ruta_archivo","modo_apertura");
Y con respecto a los numeros depende la estructura que hayas elegido, si es una struct, habras guardado un archivo de structs por lo tanto a la hora de modificar/extraer esos numeros lo haces leyendo secuencialmente el archivo y sacas la estructura que te interesa y modificas el campo donde contiene numeros, es solo un ejemplo



Título: Re: Cómo leer número de un txt.
Publicado por: Wilber592 en 22 Noviembre 2018, 14:49 pm
Por que usar un archivo de texto para leer informacion?  :huh:
Puedes leer los bytes del archivo y esperar tener suerte y que no haya sido modificado por lo que sea, de esa forma puedes leer el numero que quieres.
[/quote

Esque de hecho podemos usar el archivo que deseemos, la estructura para abrirlo, si puedo usarlo, lo que me cuesta es extraer los datos]


Título: Re: Cómo leer número de un txt.
Publicado por: Wilber592 en 22 Noviembre 2018, 14:53 pm
Hay que tener varias consideraciones, para empezar saber distinguir si el archivo esta guardado como texto o en formato binario.

Apartir de ahi hay varias cosas que ver.

Si es modo texto, buscar la estrucura y orden de los datos guardados y leerlos en formato de texto y convertir los necesarios a  datos enteros, flotantes etc. ejemplo fgets + strtol, strtof etc...

Si es modo binario, lo mismo buscar la estrucura y orden de los datos guardados, y leerlo en formato directo a una estrucutra de datos ejemplo fread(&dato1,...

Si me mandas los archivos yo te escribo el programa para leer los datos y mostrarlos en pantalla.

Saludos

Hola! Saludos gracias por tu comentario, y fíjate que si, en realidad tienes mucha razón por ejemplo con respecto a los archivos, este es así;

Archivo 1 debe tener solo números, dónde se sea el stock de manzanas, peras, pan, piña,chicle. Según el catedrático no debe llevar mucha ciencia, que podemos leer los números y almacenarlos en un vector y ya después en el vector ponerle un nombre,.

Ahora en los otros archivos, es solo introducción de datos por ejemplo datos de comprador y en el otro la factura


Título: Re: Cómo leer número de un txt.
Publicado por: FranFin en 22 Noviembre 2018, 15:06 pm
Código
  1. cout << "Leyendo archivo ejemplo.txt" << endl;
  2.  
  3. ifstream archivoQueLeer; //declaramos variable que representa nuestro archivo a leer
  4.  
  5. archivoQueLeer.open("ejemplo.txt"); //ponemos el nombre del archivo, asumimos que el objetivo esta en la misma carpeta
  6.  
  7. char contenido[100]; //definimos lo que sera el contenido una vez abierto el archivo
  8. if (archivoQueLeer.is_open()) { //nos aseguramos que hemos abierto el archivo de manera satisfactoria
  9. while (!archivoQueLeer.eof()) { //siempre que no hallamos llegado al final del archivo...
  10. archivoQueLeer >> contenido; //leemos el archivo y asignamos el valor a nuestra primera variable
  11. cout << contenido; //imprimimos el valor
  12. }
  13. }
  14. archivoQueLeer.close(); // cerramos el fichero de forma que no tengamos problemas en el futuro
  15.  


Título: Re: Cómo leer número de un txt.
Publicado por: Wilber592 en 22 Noviembre 2018, 17:45 pm
Código
  1. cout << "Leyendo archivo ejemplo.txt" << endl;
  2.  
  3. ifstream archivoQueLeer; //declaramos variable que representa nuestro archivo a leer
  4.  
  5. archivoQueLeer.open("ejemplo.txt"); //ponemos el nombre del archivo, asumimos que el objetivo esta en la misma carpeta
  6.  
  7. char contenido[100]; //definimos lo que sera el contenido una vez abierto el archivo
  8. if (archivoQueLeer.is_open()) { //nos aseguramos que hemos abierto el archivo de manera satisfactoria
  9. while (!archivoQueLeer.eof()) { //siempre que no hallamos llegado al final del archivo...
  10. archivoQueLeer >> contenido; //leemos el archivo y asignamos el valor a nuestra primera variable
  11. cout << contenido; //imprimimos el valor
  12. }
  13. }
  14. archivoQueLeer.close(); // cerramos el fichero de forma que no tengamos problemas en el futuro
  15.  
Amigo yo trabajo en c y realmente si te entendí la mayoría de que me recomendaste, pero precisamente la parte del while no sé cómo hacerla podrías detallarme algo porfavor


Título: Re: Cómo leer número de un txt.
Publicado por: AlbertoBSD en 22 Noviembre 2018, 18:23 pm
Un ejemplo en C

Código
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. int main() {
  5. int numero;
  6. char temporal[20];
  7. FILE *archivo;
  8. archivo = fopen("archivo.txt","r");
  9. while(!feof(archivo)) {// Esto se lee "mientras (while) no (!) sea el fin del archivo( END OF FILE feof (archivo))  hacer"
  10. fgets(temporal,20,archivo);// Leemos hasta encontrar un enter o un limite de 20 Caracteres suficientes para un numero...
  11. numero = strtol(temporal,NULL,10); //Solo procesamos numeros BASE 10
  12. printf("Dato leido %i\n",numero);
  13. }
  14. }
  15.  


Título: Re: Cómo leer número de un txt.
Publicado por: Wilber592 en 22 Noviembre 2018, 18:48 pm
Un ejemplo en C

Código
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3.  
  4. int main() {
  5. int numero;
  6. char temporal[20];
  7. FILE *archivo;
  8. archivo = fopen("archivo.txt","r");
  9. while(!feof(archivo)) {// Esto se lee "mientras (while) no (!) sea el fin del archivo( END OF FILE feof (archivo))  hacer"
  10. fgets(temporal,20,archivo);// Leemos hasta encontrar un enter o un limite de 20 Caracteres suficientes para un numero...
  11. numero = strtol(temporal,NULL,10); //Solo procesamos numeros BASE 10
  12. printf("Dato leido %i\n",numero);
  13. }
  14. }
  15.  
Mira lo que llevo
Código:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
FILE *cliente;
FILE *inventario;



struct cliente{
    char nombre[20];
    int nit;
    int compra;
}id;



int factura()
{
    system("CLS");
    int item;

    printf("\t\t\t.::.FACTURACION.::.");
    printf("\n\n\n\tNOMBRE:");
    scanf("%s",&id.nombre);
    printf("\n\tNIT:");
    scanf("%d",&id.nit);
    //leyendo archivo
    inventario=fopen("inventario.txt","r");
    if(inventario==NULL)
    {
        printf("Error al Leer inventario");
    }
    while((item=fgetc(inventario))!=EOF)
    {
        if(item=='\n')
        {
            printf("\n");
        }
        else{
            putchar(item);
        }
    }

    fclose(inventario);

    cliente=fopen("usuario.txt","a+");
    if (cliente==NULL)
    {
        printf("No se puede crear datos de Cliente");
    }
}



void datos()
{
    int item[5];
    printf("a continuacion con cada intro podra ingresar solo cantidades, en el orden siguiente \nmanzanas\nperas\npan\pinha\nchicle\n");
    inventario=fopen("inventario.txt","w");
    if (inventario==NULL)
    {
        printf("El archivo esta Da񡤯");
    }
    //Guardar Datos
    for(int i=0;i<5;i++)
    {
        scanf("\n%d",&item[i]);
        fputc(item[i],inventario);
    }
//Verificar datos Guardados
    for(int e=0;e<5;e++)
    {
        fscanf(inventario,"%d",&item[e]);
        printf("\n%d",item[e]);
    }

    fclose(inventario);
}

int leer()
{
   /* int item[5];
    inventario=fopen("inventario.txt","r");
    if(inventario==NULL)
    {
        printf("NO SE PUEDE LEER");
    }

    while(inventario!=EOF)
    {
        for(int i=0;i<5;i++){
        fscanf(inventario,"%c",item[i]);
        printf("%d",item[i]);
    }
    fclose(inventario);
}
*/
int numero;
char temporal[20];
inventario=fopen("inventario.txt","r");
while(!feof(inventario))
{
    fgets(temporal,20,inventario);
    numero=strtol(temporal,NULL,10);
    printf("dato leido %i\n",numero);
}
fclose(inventario);
}

int main()
{
    int op;
    do{
        printf("\n\t.:MENU:.\n");
        printf("\n\n1.Introducir Datos.");
        printf("\n2.Facturar");
        printf("\n3.Ver clientes");
        printf("\n4.Salir");
        printf("\n\nOpcion:");
        scanf("%d",&op);
        switch(op)
        {
        case 1: datos();break;
        case 2: factura();break;
        case 3: leer();break;

        }
    }
    while(op!=4);
    return 0;
}
[\code]