Autor
|
Tema: Programa que consulta archivo de texto (Leído 7,665 veces)
|
mark182
|
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
Mensajes: 267
|
Puedes hacer algo como: #include <stdio.h> int main() { while(1) { FILE *file = fopen("C:\\test.txt", "r"); if(file == 0) return 1; fseek(file , 0, SEEK_END ); int tamano = ftell(file ); if(tamano != 0) else } return 0; }
|
|
« Ú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
|
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
|
#include <stdio.h> #include <stdlib.h> int tam_archivo(FILE * fstream){ int tam; int pos_actual = ftell(fstream ); fseek(fstream , 0, SEEK_END ); 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 ); ntam = tam; } tam = tam_archivo(hFile); } return 0; }
|
|
|
En línea
|
|
|
|
mark182
|
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
|
De nada, agrega justo después del fread lo siguiente: 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: #include <stdio.h> #include <stdlib.h> int tam_archivo(FILE * fstream){ int tam; int pos_actual = ftell(fstream ); fseek(fstream , 0, SEEK_END ); 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 ); if(c != EOF) } ntam = tam; } tam = tam_archivo(hFile); } return 0; }
|
|
« Última modificación: 27 Julio 2011, 22:12 pm por naderST »
|
En línea
|
|
|
|
mark182
|
me ganaste de mano, tambien estaba probando con el fgetc jeje.
Funciona perfecto!!
Gracias.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Consulta~Editar archivo de texto en una linea especifica.
PHP
|
volteo0101
|
3
|
6,963
|
9 Febrero 2011, 07:19 am
por volteo0101
|
|
|
Realizar programa en C que ordene nombres desde archivo de texto.
Programación C/C++
|
Irving007
|
2
|
3,869
|
12 Noviembre 2012, 06:32 am
por BlackZeroX
|
|
|
consulta para programa de contabilizar
Programación Visual Basic
|
POLLITOXD
|
0
|
1,585
|
4 Noviembre 2013, 21:22 pm
por POLLITOXD
|
|
|
Problema con manejo de archivo de texto - Consulta
Programación C/C++
|
Cero++
|
0
|
1,282
|
4 Enero 2019, 02:26 am
por Cero++
|
|
|
¿Cómo incrustar y usar archivo de texto dentro de mi programa?
.NET (C#, VB.NET, ASP)
|
dont'Exist
|
2
|
2,584
|
16 Octubre 2019, 22:08 pm
por dont'Exist
|
|