Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: MessageBoxA en 10 Agosto 2011, 01:20 am



Título: dudita con cadena
Publicado por: MessageBoxA en 10 Agosto 2011, 01:20 am
buenas  primero el code
Código
  1. #include <windows.h>
  2. #include <time.h>
  3.  
  4. int main()
  5.  
  6. {FreeConsole();
  7.  
  8. time_t t1;
  9. time_t t2;
  10.  
  11. t1 = time(NULL);
  12.  
  13. int i=0;
  14.  
  15. while(i<=5)
  16.  
  17. {
  18.  
  19. MessageBox(NULL,TEXT("click aqui"),TEXT(""),MB_OK );
  20. i++;
  21.    }
  22.  
  23.    t2 = time(NULL);
  24.  
  25. char segundos[]=" segundos";
  26.  
  27. char cadena[15];
  28. //de aqui en adelante tengo el rollo mi idea es tomar el resultado de difftime y
  29. //guardarlo en una cadena para luego concatenarla con la cadena "segundos"
  30. //y asi pasarla como parametro a el messagebox de mas adelante
  31. cadena=(char)difftime(t2,t1);
  32.  
  33. strcpy(cadena, segundos);
  34.  
  35. MessageBox(NULL,cadena,TEXT("felicidades duraste"),MB_OK);
  36.  
  37.    return EXIT_SUCCESS;
  38. }
  39.  

luego de solucionar este problema de manejo de cadenas pienso colocarle el code para hacer q las ventanas de messagebox aparezcan en lugares aleatorios de la pantalla (eso ya lo se hacer)

NOTA: SOLUCIONENME ESE PROBLEMA DE LA CADENA Q ME CANSE DE DARLE COCO :)

GRACIAS


Título: Re: dudita con cadena
Publicado por: escabe en 10 Agosto 2011, 18:37 pm
Código:
#include <windows.h>
#include <time.h>

#pragma hdrstop

#pragma argsused
int main(int argc, char* argv[])
{
   time_t t1;
   time_t t2;

   t1 = time(NULL);

   int i=0;

   while(i<=5){
     MessageBox(NULL,TEXT("click aqui"),TEXT(""),MB_OK );
     i++;
   }

   t2 = time(NULL);

   char segundos[]=" segundos";
   char cadena[15];
   itoa(difftime(t2,t1), cadena, 10);
   strcat(cadena, segundos);

   MessageBox(NULL, cadena, TEXT("felicidades duraste"),MB_OK);

   return EXIT_SUCCESS;
}

Saludos.


Título: Re: dudita con cadena
Publicado por: rir3760 en 19 Agosto 2011, 05:39 am
Una forma ligeramente distinta es utilizando sprintf para generar el mensaje. También puedes revisar la documentación de "strftime" si necesitas imprimir una cadena tomando en consideración el año, mes, etc.

Un ejemplo de la primera forma es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <windows.h>
  5.  
  6. int main(void)
  7. {
  8.   char mensaje[100 /* Por decir algo*/];
  9.   time_t a;
  10.   time_t b;
  11.   int i;
  12.  
  13.   time(&a);
  14.  
  15.   for (i = 0; i < 3; i++)
  16.      MessageBox(NULL, "Click aqui", "", MB_OK);
  17.  
  18.   time(&b);
  19.   sprintf(mensaje, "%d segundos", (int) difftime(b, a));
  20.   MessageBox(NULL, mensaje, "Felicidades duraste", MB_OK);
  21.  
  22.   return EXIT_SUCCESS;
  23. }

Y un ejemplo sencillo de la segunda (C estándar) es:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define LONG_CADENA 128
  6.  
  7. int main(void)
  8. {
  9.   time_t t1;
  10.   struct tm *t2;
  11.   char cadena[LONG_CADENA];
  12.  
  13.   /* 1) Obtener la fecha actual ('time_t') */
  14.   if ((t1 = time(NULL)) == (time_t) -1)
  15.      return EXIT_FAILURE;
  16.  
  17.   /* 2) Obtener la fecha actual ('struct tm *') */
  18.   t2 = localtime(&t1);
  19.  
  20.   /* Imprimir la fecha "manualmente" mediante printf */
  21.   printf("%d/", t2->tm_year + 1900);
  22.   printf("%02d/", t2->tm_mon + 1);
  23.   printf("%02d\n", t2->tm_mday);
  24.  
  25.   /* Construir la fecha mediante strftime */
  26.   strftime(cadena, LONG_CADENA, "%Y/%m/%d", t2);
  27.   printf("%s\n", cadena);
  28.  
  29.   return EXIT_SUCCESS;
  30. }

Un saludo