elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:58  


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 849 veces)
mark182


Desconectado Desconectado

Mensajes: 385


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

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: 250



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

Puedes hacer algo como:

Código
#include <stdio.h>
 
int main()
{
while(1)
{
getchar();
 
FILE *file = fopen("C:\\test.txt", "r");
 
if(file == 0)
return 1;
 
fseek(file, 0, SEEK_END);
 
int tamano = ftell(file);
 
rewind(file);
 
if(tamano != 0)
printf("Todo normal.\n");
 
else
printf("Error.\n");
}
 
return 0;
}


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

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


Desconectado Desconectado

Mensajes: 385


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

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: 467



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

Código
#include <stdio.h>
#include <stdlib.h>
 
int tam_archivo(FILE * fstream){
   int tam;
   int pos_actual = ftell(fstream);
 
   fseek(fstream, 0, SEEK_END);
   tam = ftell(fstream);
   fseek(fstream, pos_actual, SEEK_SET);
 
   return tam;
}
 
int main()
{
   FILE * hFile = fopen("C:\\prueba.txt", "r");
 
   int tam = tam_archivo(hFile);
   int ntam = 0;
 
   while(1){
       if(tam != ntam){
           char * buffer = (char*)malloc(tam);
           fseek(hFile, 0, SEEK_SET);
           fread(buffer, 1, tam, hFile);
           system("cls");
           printf("%s", buffer);
           free(buffer);
           ntam = tam;
       }
 
       tam = tam_archivo(hFile);
   }
 
   fclose(hFile);
   return 0;
}
 
En línea
mark182


Desconectado Desconectado

Mensajes: 385


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

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: 467



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

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

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

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
#include <stdio.h>
#include <stdlib.h>
 
int tam_archivo(FILE * fstream){
   int tam;
   int pos_actual = ftell(fstream);
 
   fseek(fstream, 0, SEEK_END);
   tam = ftell(fstream);
   fseek(fstream, pos_actual, SEEK_SET);
 
   return tam;
}
 
int main()
{
   FILE * hFile = fopen("C:\\prueba.txt", "r");
 
   int tam = tam_archivo(hFile);
   int ntam = 0;
 
   while(1){
       if(tam != ntam){
           fseek(hFile, 0, SEEK_SET);
           system("cls");
           while(!feof(hFile)){
               char c = fgetc(hFile);
 
               if(c != EOF)
                   printf("%c", c);
 
           }
           ntam = tam;
       }
 
       tam = tam_archivo(hFile);
   }
 
   fclose(hFile);
   return 0;
}
 
« Última modificación: 27 Julio 2011, 22:12 por naderST » En línea
mark182


Desconectado Desconectado

Mensajes: 385


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

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:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Redireccionar salida programa de texto a ventana de texto de msn
Programación C/C++
Ineluki 3 551 Último mensaje 2 Enero 2009, 17:35
por Erik#
CONSULTA DE TABLAS POR FILTRADO DE TEXTO
PHP
smagno 5 1,506 Último mensaje 27 Octubre 2009, 01:36
por smagno
Consulta, descifrar texto.
Criptografía
freedert 4 2,058 Último mensaje 7 Febrero 2010, 06:09
por ANELKAOS
Consulta~Editar archivo de texto en una linea especifica.
PHP
volteo0101 3 2,700 Último mensaje 9 Febrero 2011, 07:19
por volteo0101
Consulta interpretacion texto
Programación Visual Basic
Cromatico 7 767 Último mensaje 5 Marzo 2011, 05:02
por BlackZeroX (Astaroth)
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines