Registrarse Gratis

¡Únase para Aprender y Compartir!

Fecha automatica en un TXT

18/8/2012 11:00PM
Hola desearia saber cómo insertar en un archivo doc o TXT en forma automatica cada vez que el archivo se abra o se modifique, datos como la FECHA, HORA, NOMBRE.... O cualquier otro dato que pueda ser actualizable o no como un nombre fijo de "usuario". Gracias Esculapia agradecida desde ya. saludos
¿Sabes la respuesta?Responder
26/10/2012 08:40PM
yo me encuentro realizando un juego en c y te pasare un poco de mi codigo no todo porque aun nno lo termino y ademas ya tiene 5000 lineas. Pero ya es funcional


puedes empezar creando una lista de esta manera

struct lista
{
char linea_archivo[100]; /*el tamaño que tu veas conveniente*/
}
typedef struct lista *lista;
lista nodo_ini;
lista recorre;
lista auxiliar;

esta funcion puedes llamarla desde cualquier lugar del programa

void guardar()
{
creas la variables necasarias
abres archivo primero lo abres para añadir
cargar_archivo(); /*easta funcion es importante*/
/*esta ultima funcion cara al archivo pero si no habia ningun archivo o estaba vacio no lo carga es por eso del numero 70 para mi juego esta bien adaptalo a tu programa, la estructura debe ser global pero se puede modificar
para sea local, depende de ti, yo la hice asi*/

luego biene esta otra funcion
insertar_reg_lista();/*añade un registro al final del archivo, en realidad
solo incrementa un nodo mas de la lista con informacion*/
luego cierras el archivo
y lo vuelves a abrir pero en nmodo de escritura asi todo lo que tenia se borrara, ya que la info anterior fue salvada en memoriay actualizada, pero sigue en meoria, ahora hay que guardar en disco, asi

recorre_lista = nodo_ini;
while(recorre_lista != NULL)
{
fprintf(archivo, "%s", recorre_lista->linea_archivo);

recorre_lista = linea_archivo->next;
}
despyues cierras, el asrchivo, y verifica
pero antes tienes que eliminar la lista para devolver la meoria ocupada por los datos del programa
}
void cargar_archivo()
{
/*ya que la variable tam_Archivo es global no pierde su valor
al asalir de esta funcion*/
tam_archivo = longitud_archivo(archivo_juego);

rewind(archivo_juego);/*posicionamos el puntero del archivo al principio*/
/*si se devuelve el valor de NULL, entonces ya no lee nada y sale de
la funcion, ya que no exista ningun archivo*/
while(leer_linea_archivo() != NULL)
{
/*esto se hace solo en el caso de quieras actuializar el archivo, es decir de que no quieras sobrescribir la fecha u hora de algun registro del archivo*/
if(strcmp(linea_archivo, nombre_1) == 0 || strcmp(linea_archivo, nombre_2) == 0)
{
copiado = copiar_reg_lista();
if(copiado > 70 && copiado != EOF)
{
lista_creada(lista_aux);
}
else
{
"REGISTRO DAÑADO");
}
}
}
}
*lee solo una linea o un registro del archivo*/
int leer_linea_archivo()
{
/*vaciamos la cadena linea_archivo*/
strnset(linea_archivo, ESPACIO, 125);

/*esto es en ecaso de que no exista el archivo para evitar errores
en el programa por algun mal funcionamiento*/
if(tam_archivo > 50) /*si es que aun no existe el archivo o no fue creado aun*/
{
if(fgets(linea_archivo, 125, archivo_juego))
{
tam_registro = strlen(linea_archivo);
return TRUE;
}
else
{
return NULL;
}
}
else
{
return NULL;
}
}
int copiar_reg_lista()
{
if(tam_registro > 70)
{
lista_aux = crear_nodo();

if(lista_aux != NULL)
{
strnset(lista_aux->registro_juego, ESPACIO, TAM_NOMBRES + 5);

strcpy(lista_aux->registro_juego, linea_archivo);
return tam_registro;
}
else /*en caso de que no haya suficiente memoria en RAM para el nodo*/
{ /*y tambien toda la lista, o el archivo, se llama a la funcion inf_memory(), no la incluyo*/
return EOF;
}
}
else
{
return 0;
}
}
/*con esta funcion reservamos memoria para cada nodo de la lista*/
lista crear_nodo()
{
return (lista)malloc(sizeof(struct lista_juego));
}
/*aqui vamos incremenmtando la lista, es decir lo hacemos mas grande*/
void lista_creada(lista lista_c)
{
if(lista == NULL)
{
nodo_ini = lista_c;
}
else
{
lista->next = lista_c;
}

lista = lista_c;
lista_c->next = NULL;
}
void insertar_reg_lista()
{
lista lista_aux;

lista_aux = crear_nodo();

if(lista_aux)
{ /*lo insertas al final del la lista*/
sprintf(lista_aux->linea_archivo, "%s\t%s\t%s %d %d ",
nombre_1, dia, mes, hora, minutos);
/*esta desordenado, bueno es un ejemeplo*/
lista_creada(lista_aux);
}
else
{
inf_memoria();
}
}

espero te sirva hasta luego