Tareas programadas en C ¿Como?

Iniciado por dgg006, 15 Junio 2011, 16:44 PM

0 Miembros y 2 Visitantes están viendo este tema.

dgg006

Bueno, logre hacer esto, modificando el código que me paso Died:

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <time.h>

char buffer [40];

char *times ()
{
time_t now = time (0);
struct tm *ahora;
ahora=localtime ((const time_t*)&now);
strftime (buffer, 40, "%H:%M", ahora);
return (char *) buffer;
}
int main ()
{
    char resul[6];
    int estado=-1;
    int infinito=0;
    int val;

    FILE *hora;
    hora = fopen ("Hora.txt","r");
    fscanf (hora, "%s",&resul);
    fclose (hora);

    FILE *valo;
    valo = fopen ("val.txt","r");
    fscanf (valo, "%d",&val);
    fclose (valo);

    while (infinito == 0)
    {

if (strcmp (times (),("%s", resul)) == 0)
{
    if (estado != 1)
            {
                printf ("Encendido");
                    FILE *valor;
                    valor = fopen ("valor.txt","w+");
                    fprintf (valor, "%d",val);
                    fclose (valor);
            }
                    estado=1;
                    return 0;
}
else
{
        if (estado != 0)
            {
                printf ("Apagado");
            }
                    estado=0;
}
    }
    return 0;
}


Parte buena, funciona...
Parte mala, Usa demasiados txt para mi gusto.
estaría bueno, poder encontrar la forma de que en el txt "Hora.txt" ademas de la hora, estuviera el 0 o el 1 que por ahora esta en "val.txt"

Los printf "Encendido" y "Apagado" están solo por ahora en la fase beta :P , en realidad no van

Died

Te revisaré tu código:

#include <string.h>
#include <stdio.h>
#include <time.h>

char buffer [40];
char hora [5];
FILE *fp;

char *times ()
{
time_t now = time (0);
struct tm *ahora;
ahora=localtime ((const time_t*)&now);
strftime (buffer, 40, "%H:%M", ahora);
return (char *) buffer;
}

int main ()
{
fp = fopen ("hora.txt","r+");
fgets (hora, 5, fp);

while (strcmp (times (), hora) != 0) { }

printf ("Encendido");
fputs ("\n\nHello!\n", fp);

fclose (fp);
return 0;
}


No entendía muy bien el propósito de tu código, así que más o menos he hecho un resumen de tu idea. Te puntualizo varios puntos
1) No usas conio.h  y sin embargo lo pones. Nada recomendable. Y te recuerdo que es mejor no usar nunca conio.h para nada.
2) Tu código es en exceso largo. Intenta hacerlos cuanto más claros mejor.
3) A la hora de escribir el código, no uses espacios. Usa siempre el tabulador, aunque acabe siendo larguísimo.
4) En la comparación habías puesto algo un poco raro. Creo que querías poner eso.
5) Cuantas menos variables, mejor.

Un saludoy suerte! Sagrini

dgg006

Muchas gracias por los consejos.. El de usar conio fue algo que me pego la profesora y me cuesta sacarlo :P.

yo en realidad, no comprendo muy bien que hace tu codigo, o por lo menos es completamente distinto a el que pasé anteriormente.

Te doy los pasos para que pruebes el programa, porque pienso que no lo lograste entender.

* En el TXT "Hora.txt"   =  Va solo la hora en la que se ejecutará la tarea, en formato HH:MM (23:30).
* En el TXT "val.txt"    =   Va el valor que se va a enviar al otro TXT (0 o 1)
* En el TXT "valor.txt"   =   Sera donde se escriba el contenido de val.txt

Solo ejecuta el programa en la misma carpeta, y en hora txt ponelo un par de minutos adelantado, asi tenes tiempo de ver lo q hace.

Died

Ya sé lo que hace :P
La cosa es que te tienes que fijar en la lógica por la cual el programa compara las horas, porque el tuyo la tiene mal.

Dile a tu profe que es una cafre :D
Un saludo! Sagrini