Hola.
Tengo este codigo:
Se que tiene muchos "detalles" a arreglar, pero en windows funciona perfecto y yo lo necesito para linux.
Si lo intento compilar asi, me sale este error:
prog.c: In function 'main':
prog.c:25: warning: format '%s' expects type 'char *', but argument 3 has type 'char (*)[20]'
Para probar, borré el [20], y ahora sale este error:
prog.c: In function 'main':
prog.c:38: warning: passing argument 2 of 'strcmp' makes pointer from integer without a cast
/usr/include/string.h:143: note: expected 'const char *' but argument is of type 'char'
Estoy necesitando esto urgente, porque es parte de un proyecto y no entiendo porque diablos no funciona.
Porfavor, Porfavor, Porfavor
Alguien puede darme una mano para que compile en ubuntu?
Gracias
Tengo este codigo:
Código [Seleccionar]
#include <stdio.h>
#include <string.h>
#include <time.h>
char buffer [20];//Inicia cadena buffer
char *times ()//Inicia funcion times, que devuelve cadena de caracteres
{
time_t now = time (0);//Hora actual
struct tm *ahora;//Declara una variable estructurada para un valor tiempo
ahora=localtime ((const time_t*)&now);//Extrae la hora del sistema y guarda en variable
strftime (buffer, 40, "%H:%M-%d/%m/%Y", ahora);//Da el formato de hora "HH:MM"
return (char *) buffer;//Devuelve la hora actual del sistema ya formateada
}
int main ()
{
char resul;//Inicia cadena que contendrá la hora en la que se ejecutará
int estado=-1;//Variable para evitar que se ejecute mas de una ves la acción
int val;//Variable que contendrá si la acción es "Encender" o "Apagar"
int disp;//Variable que contendrá el dispositivo utilizado
for (;;)//Bucle infinito para mantener el programa abierto hasta que llegue la hora
{
FILE *hora;//Apuntador del TXT que contiene la hora
hora = fopen ("Hora.txt","r");//Abre el TXT dentro del apuntador
fscanf (hora, "%s",&resul);//Lee el TXT y guarda su valor en su correspondiente cadena
fclose (hora);//Cierra el TXT
FILE *valo;//Apuntador del TXT que contiene el valor para "Encender" o "Apagar"
valo = fopen ("val.txt","r");//Abre el TXT dentro del apuntador
fscanf (valo, "%d",&val);//Lee el TXT y guarda su valor en su correspondiente variable
fclose (valo);//Cierra el TXT
FILE *pin;//Apuntador del TXT que contiene el pin
pin = fopen ("Pin.txt","r");//Abre el TXT dentro del apuntador
fscanf (pin, "%d",&disp);//Lee el TXT y guarda su valor en su correspondiente cadena
fclose (pin);//Cierra el TXT
if (strcmp (times (),("%s", resul)) == 0)//Si la diferencia entre la hora programada y la hora actual es igual a 0, se hará lo siguiente
{
if (estado != 1)//Este if se encarga de que las siguientes lineas solo se ejecuten una ves
{
if (disp!=0)//Este if se encarga de que solo le ejecute lo siguiente cuando se haya escogido un dispositivo
{
FILE *artefacto;//Apuntador del TXT correspondiente al artefacto a programar
switch(disp)//Este switch se encarga de transformar en número de artefacto en el nombre de su correspondiente TXT
{
case 1:
artefacto = fopen ("Cocina.txt","w+");//Abre el TXT dentro del apuntador
break;
case 2:
artefacto = fopen ("Habitacion.txt","w+");//Abre el TXT dentro del apuntador
break;
case 3:
artefacto = fopen ("Bano.txt","w+");//Abre el TXT dentro del apuntador
break;
case 4:
artefacto = fopen ("Luz.txt","w+");//Abre el TXT dentro del apuntador
break;
}
fprintf (artefacto, "%d",val);//Escribe en el TXT el valor de la variable "val"
fclose (artefacto);//Cierra el TXT
FILE *pin;//Apuntador del TXT que contiene el pin
pin = fopen ("Pin.txt","w+");//Abre el TXT dentro del apuntador
fprintf (pin, "0");//Escribe en el TXT el valor de la variable "val"
fclose (pin);//Cierra el TXT
}
}
estado=1;//Escribe 1 en la variable para que funcione como debe el if anterior
}
else//De lo contrario, si hay diferencia. Se hará lo siguiente
{
estado=0;//Escribe 0 en la variable para que funcione como debe el if anterior
}
}
}
Se que tiene muchos "detalles" a arreglar, pero en windows funciona perfecto y yo lo necesito para linux.
Si lo intento compilar asi, me sale este error:
prog.c: In function 'main':
prog.c:25: warning: format '%s' expects type 'char *', but argument 3 has type 'char (*)[20]'
Para probar, borré el [20], y ahora sale este error:
prog.c: In function 'main':
prog.c:38: warning: passing argument 2 of 'strcmp' makes pointer from integer without a cast
/usr/include/string.h:143: note: expected 'const char *' but argument is of type 'char'
Estoy necesitando esto urgente, porque es parte de un proyecto y no entiendo porque diablos no funciona.
Porfavor, Porfavor, Porfavor
Alguien puede darme una mano para que compile en ubuntu?
Gracias