elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Programa que consulta archivo de texto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Programa que consulta archivo de texto  (Leído 7,627 veces)
mark182


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Programa que consulta archivo de texto
« en: 27 Julio 2011, 19:18 pm »

Hola como estan?

Tengo un conocimiento basico/medio de C y queria saber como podria hacer un programa que, al estar ejecutado, lea un archivo de texto unicamente cuando este cambie de tamaño. O sea, cuando se alla escrito en el archivo de texto.

Alguna idea de como encarar el problema?

Se como leer un archivo de texto y demas, pero no hacer que el programa lea el archivo unicamente cuando este cambia de tamaño. Lo intente hacer con un while que consulte a cada rato su tamaño, pero se me tilda el sistema.

Como lo podria hacer?

Gracias.


En línea

Queta

Desconectado Desconectado

Mensajes: 267



Ver Perfil
Re: Programa que consulta archivo de texto
« Respuesta #1 en: 27 Julio 2011, 19:50 pm »

Puedes hacer algo como:

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. while(1)
  6. {
  7.  
  8. FILE *file = fopen("C:\\test.txt", "r");
  9.  
  10. if(file == 0)
  11. return 1;
  12.  
  13. fseek(file, 0, SEEK_END);
  14.  
  15. int tamano = ftell(file);
  16.  
  17. rewind(file);
  18.  
  19. if(tamano != 0)
  20. printf("Todo normal.\n");
  21.  
  22. else
  23. printf("Error.\n");
  24. }
  25.  
  26. return 0;
  27. }


« Última modificación: 27 Julio 2011, 20:05 pm por Queta » En línea

"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
mark182


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Re: Programa que consulta archivo de texto
« Respuesta #2 en: 27 Julio 2011, 19:58 pm »

esta bueno el programa que me pasaste Queta, el problema es que para que el programa revise el archivo tenes que estar dandole enter y seria lo mismo de ejecutar el programa cada vez que yo se que el archivo se modifico.

Mi idea es que cuando el archivo se guardo con el nuevo contenido, en ese momento el programa lee lo que hay en el archivo y lo cierre.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Programa que consulta archivo de texto
« Respuesta #3 en: 27 Julio 2011, 21:31 pm »

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int tam_archivo(FILE * fstream){
  5.    int tam;
  6.    int pos_actual = ftell(fstream);
  7.  
  8.    fseek(fstream, 0, SEEK_END);
  9.    tam = ftell(fstream);
  10.    fseek(fstream, pos_actual, SEEK_SET);
  11.  
  12.    return tam;
  13. }
  14.  
  15. int main()
  16. {
  17.    FILE * hFile = fopen("C:\\prueba.txt", "r");
  18.  
  19.    int tam = tam_archivo(hFile);
  20.    int ntam = 0;
  21.  
  22.    while(1){
  23.        if(tam != ntam){
  24.            char * buffer = (char*)malloc(tam);
  25.            fseek(hFile, 0, SEEK_SET);
  26.            fread(buffer, 1, tam, hFile);
  27.            system("cls");
  28.            printf("%s", buffer);
  29.            free(buffer);
  30.            ntam = tam;
  31.        }
  32.  
  33.        tam = tam_archivo(hFile);
  34.    }
  35.  
  36.    fclose(hFile);
  37.    return 0;
  38. }
  39.  
En línea

mark182


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Re: Programa que consulta archivo de texto
« Respuesta #4 en: 27 Julio 2011, 21:41 pm »

Muchas gracias naderST, funciona barbaro!! hay que hacerle unos retoques igualmente, porque si el archivo se vacia, se guarda, se vuelve a abrir y se escribe, y se vuelve a guardar. En el programa aparece lo escrito pero a continuacion con basura.

Calculo que solamente hay que vaciar el buffer del teclado y listo.

Muchas gracias.
En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Programa que consulta archivo de texto
« Respuesta #5 en: 27 Julio 2011, 21:47 pm »

De nada, agrega justo después del fread lo siguiente:

Código
  1. buffer[tam] = '\0';
  2.  

EDIT:
Al parecer no lo soluciona, no se porque muestra esos caracteres raros.

EDIT EDIT:

Solucioné leyendo el archivo de otra manera y funcionó bien aquí se los dejo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int tam_archivo(FILE * fstream){
  5.    int tam;
  6.    int pos_actual = ftell(fstream);
  7.  
  8.    fseek(fstream, 0, SEEK_END);
  9.    tam = ftell(fstream);
  10.    fseek(fstream, pos_actual, SEEK_SET);
  11.  
  12.    return tam;
  13. }
  14.  
  15. int main()
  16. {
  17.    FILE * hFile = fopen("C:\\prueba.txt", "r");
  18.  
  19.    int tam = tam_archivo(hFile);
  20.    int ntam = 0;
  21.  
  22.    while(1){
  23.        if(tam != ntam){
  24.            fseek(hFile, 0, SEEK_SET);
  25.            system("cls");
  26.            while(!feof(hFile)){
  27.                char c = fgetc(hFile);
  28.  
  29.                if(c != EOF)
  30.                    printf("%c", c);
  31.  
  32.            }
  33.            ntam = tam;
  34.        }
  35.  
  36.        tam = tam_archivo(hFile);
  37.    }
  38.  
  39.    fclose(hFile);
  40.    return 0;
  41. }
  42.  
« Última modificación: 27 Julio 2011, 22:12 pm por naderST » En línea

mark182


Desconectado Desconectado

Mensajes: 395


Ver Perfil WWW
Re: Programa que consulta archivo de texto
« Respuesta #6 en: 27 Julio 2011, 22:21 pm »

me ganaste de mano, tambien estaba probando con el fgetc jeje.

Funciona perfecto!!


Gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines