elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 37
21  Programación / Programación C/C++ / Algoritmo para Obtener el día de la semana[C] en: 25 Mayo 2017, 23:03 pm
Hola, muy buen día. -
El programa que dejo a continuación logra perfectamente lo que necesito, pero quiero meter todo esto en una función para obtener el día de la semana, nada más que eso y me parecen muchas líneas para lograr tan solo una, alguien tiene algo con menos líneas y que haga lo mismo? .-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. char *dias [] = {" ", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo"} ;
  6.  
  7. int main ( int argc, char *argv[ ] ){
  8. struct tm fecha;
  9. int anyo, mes, dia;
  10.  
  11. printf (" \n año.....: ");
  12. scanf ("%d", &anyo) ;
  13.  
  14. printf( " Mes......: ");
  15. scanf ("%d", &mes);
  16.  
  17. printf ( " Dia......: ");
  18. scanf ("%d", &dia) ;
  19.  
  20. fecha.tm_year = anyo - 1900;
  21. fecha.tm_mon = mes - 1;
  22. fecha.tm_mday = dia;
  23. fecha.tm_hour = 0;
  24. fecha.tm_min = 0;
  25. fecha.tm_sec = 1;
  26. fecha.tm_isdst = -1;
  27.  
  28. if (mktime (&fecha) == -1){
  29. puts ( " Error en la fecha. " ) ;
  30. exit(-1);
  31. }
  32.  
  33. if (fecha.tm_wday == 0)
  34. fecha.tm_wday = 7;
  35.  
  36. printf("\n El %d/%d/%d es %s" , dia, mes, anyo, dias[fecha.tm_wday]);
  37.  
  38. return EXIT_SUCCESS;
  39. }

Desde ya muchas gracias.
Saludos.
22  Programación / Programación C/C++ / Re: Convertir int dia, mes, año a char en C. en: 23 Mayo 2017, 01:07 am
Ahora si me funciona de esta manera-

Código
  1. sprintf(fecha, "%02d/%02d/%04d", dia, mes, año);

Si alguien que pasa por acá le interesa ver como lo hice, solo pídanlo que lo posteo

Gracias MAFUS.
Saludos.
23  Programación / Programación C/C++ / Re: Convertir int dia, mes, año a char en C. en: 22 Mayo 2017, 23:54 pm
No, tengo que pasarlo a cadena para grabarlo en un archivo. -
24  Programación / Programación C/C++ / Convertir int dia, mes, año a char en C. en: 22 Mayo 2017, 23:10 pm
Hola, gente. -
Me encuentro haciendo un recordatorio y estoy en la parte de la fecha, el caso es que para validar que la fecha sea correcta tengo 3 variables enteras con el día el mes y el año pero necesito pasar todo a una variable char con las barritas y todo, estuve practicando con fprintf pero no lo logro, si alguien tiene un Ej. se lo agradecería. -

Saludos.
25  Programación / Programación C/C++ / Re: Agregar datos a mensajes de error en archivos con lenguaje C. en: 12 Mayo 2017, 17:11 pm
Hola, ¿cómo están?
MAFUS estoy haciendo lo que me sugeriste, ahora me encuentro con que no logro forzar que fflush falle, si abro el archivo para solo lectura errno me da el error 9  (Bad file descriptor) esto ya lo tengo pero lo que quiero es producir el error cerrando el archivo antes de escribir con fflush pero lo que hace es no escribir en el archivo pero no me muestra ningún error, alguien me podria decir como debo hacer. -

Código
  1. void copiar( char frase[] ){
  2. FILE *ptrGtTxt;
  3. char funcionError[20];
  4.  
  5. if( !(ptrGtTxt = fopen( N_A_TXT, "a+" ))){
  6. strcpy( funcionError, "copiarFopen" );
  7. mensaje( funcionError );
  8. exit(1);
  9.    }
  10.  
  11. fprintf( ptrGtTxt, "%s", frase );
  12.  
  13. fclose( ptrGtTxt );
  14. if( fflush( ptrGtTxt ) != 0){
  15. strcpy( funcionError, "copiarFflush" );
  16. mensaje( funcionError );
  17. errorEscritura( );
  18. exit(1);
  19. }
  20.  
  21. if( ( fclose( ptrGtTxt ) ) ){
  22. mensaje( funcionError );
  23. exit(1);
  24. }
  25. }
  26.  
  27.  
Código
  1. void mensaje( char funcionError[] ){
  2. int ch, a, errnum;;
  3. errnum = errno;
  4.  
  5. limpiar();
  6. printf("\n %d\n", errnum);
  7.  
  8. if( strcmp( funcionError,"copiarFopen") == 0 ){
  9. printf("\n Error al abrir el archivo \"%s\" \n El fichero o directorio no existe...", N_A_TXT);
  10. }
  11. if( strcmp( funcionError,"copiarFflush") == 0 ){
  12. printf("\n Error al abrir el archivo \"%s\" \n El fichero o directorio no existe...", N_A_TXT);
  13. }
  14.  
  15. printf( "\n\n\t Pulse <Enter> para finalizar..."); a = getchar();
  16.    if( a != '\n') while ((ch = getchar()) != EOF && ch != '\n');
  17. }

Saludos.
26  Programación / Programación C/C++ / Re: Agregar datos a mensajes de error en archivos con lenguaje C. en: 9 Mayo 2017, 02:37 am
Hola, MAFUS.
Hice este pequeño código para entender un poco mejor el asunto y la pregunta que me surge es, puedo capturar el error antes de imprimirlo y traducirlo al español? >:D >:D >:D . -

Citar
entrada.txt: No such file or directory

Código
  1. #include <stdio.h>
  2. #include <errno.h>
  3. #include <stdlib.h>
  4.  
  5. #define NOMBRE_ARCHIVO "entrada.txt"
  6.  
  7. int main( int argc,char **argv ){
  8. FILE *entrada;
  9.  
  10. if ( (entrada = fopen(NOMBRE_ARCHIVO, "rt")) == NULL ){
  11. perror( NOMBRE_ARCHIVO );
  12. exit( EXIT_FAILURE );
  13. }
  14.  
  15. fclose( entrada );
  16.  
  17. return EXIT_SUCCESS;
  18. }
Saludos.
27  Programación / Programación C/C++ / Agregar datos a mensajes de error en archivos con lenguaje C. en: 6 Mayo 2017, 17:52 pm
Hola, que tengan un muy buen día.
Lo que no puedo encontrar es información de porque ocurren los errores en archivos, quisiera informar al operario que pasó si por Ej. no se pudo abrir un archivo, o si no se pudo crear el archivo .bak, desconozco si esto es privativo del sistema operativo o si tiene que ver con el lenguaje. -
También me interesaría completar el mensaje con que hacer para que esto no ocurra nuevamente. -
Deje el programa(sin terminar) por si les ayuda en algo para entender mi pedido. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define MAX 80
  6.  
  7. void ingresarFrase( char frase[] );
  8. void copiar( char frase[] );
  9. void mostrar( void );
  10. void errorEscritura( void );
  11. void copiaDeSeguridad( const char *GtTxt, const char *GtBak );
  12. void mensaje( int par );
  13.  
  14. int main( void ){
  15. char frase[MAX];
  16.  
  17. ingresarFrase( frase );
  18. copiar( frase );
  19. mostrar(  );
  20. copiaDeSeguridad( "archGuiaTel.txt","archGuiaTel.bak" );
  21.  
  22.  
  23. return EXIT_SUCCESS;
  24. }
  25.  
  26. void ingresarFrase( char frase[] ){
  27. int ok=0;
  28.  
  29. do{
  30. printf( "\n Ingrese frase.....:" );
  31. fgets( frase, MAX, stdin );
  32. ok = strlen( frase );
  33. }while( ok <= 1 );
  34. }
  35.  
  36. void copiar( char frase[] ){
  37. FILE *ptrGtTxt;
  38. int par;
  39.  
  40. if( !(ptrGtTxt = fopen( "archGuiaTel.txt", "a+" ))){
  41. par = 1;
  42. mensaje( par );
  43. exit(1);
  44.    }
  45.  
  46. fprintf( ptrGtTxt, "%s", frase );
  47.  
  48. if( fflush( ptrGtTxt ) != 0){
  49. par = 2;
  50. mensaje( par );
  51. errorEscritura( );
  52. exit(1);
  53. }
  54.  
  55. if( ( fclose( ptrGtTxt ) ) ){
  56. par = 3;
  57. mensaje( par );
  58. exit(1);
  59. }
  60. }
  61.  
  62. void mostrar( void ){
  63. FILE *ptrGtTxt;
  64. char texto[100];
  65. int par;
  66.  
  67. if( !(ptrGtTxt = fopen( "archGuiaTel.txt", "r" ))){
  68. par = 4;
  69. mensaje( par );
  70. exit(1);
  71.    }
  72.  
  73. printf( "\n ========== Contenido del archivo ==========\n" );
  74. fgets( texto, 100, ptrGtTxt);
  75. while( feof(ptrGtTxt) == 0 ){
  76. printf( "%s",texto );
  77. fgets(texto, 100, ptrGtTxt);
  78. }
  79.  
  80. if( ( fclose( ptrGtTxt ) ) ){
  81. par = 5;
  82. mensaje( par );
  83. exit(1);
  84. }
  85. }
  86.  
  87. void errorEscritura( void ){
  88. int par;
  89.  
  90. if(remove( "archGuiaTel.txt" ) !=0 ){
  91. par = 6;
  92. mensaje( par );
  93. exit(1);
  94. }
  95.  
  96. if( rename( "archGuiaTel.bak","archGuiaTel.txt") !=0 ){
  97. par = 7;
  98. mensaje( par );
  99. exit(1);
  100. }
  101. }
  102.  
  103. void copiaDeSeguridad( const char *GtTxt, const char *GtBak ){
  104. FILE *ptrGtTxt, *ptrGtBak;  
  105. char c, x;
  106. int par;
  107.  
  108. if( !( ptrGtTxt = fopen( GtTxt, "r" ))){
  109. par = 8;
  110. mensaje( par );
  111. exit(1);                                
  112. }
  113. if( !( ptrGtBak = fopen( GtBak, "w" ))){
  114. par = 9;
  115. mensaje( par );
  116. exit(1);                                
  117. }
  118.  
  119. c = fgetc( ptrGtTxt );
  120. while ( c != EOF ){
  121. x = fputc( c, ptrGtBak );
  122. if (x != c){
  123. par = 10;
  124. mensaje( par );
  125. exit(1);                                
  126. }
  127. c = fgetc( ptrGtTxt );
  128. }
  129.  
  130. if( ( fclose( ptrGtTxt ) ) ){
  131. par = 11;
  132. mensaje( par );
  133. exit(1);                                
  134. }
  135. if( ( fclose( ptrGtBak ) ) ){
  136. par = 12;
  137. mensaje( par );
  138. exit(1);                                
  139. }
  140. }
  141.  
  142. void mensaje( int par ){
  143. int ch, a;
  144.  
  145. if( par == 1 ){
  146. printf( "\n No se pudo ABRIR el archivo, la frase no se pudo copiar" );
  147. printf( "\n El programa se cerrara sin cambios..." );
  148. }
  149. if( par == 2 ){
  150. printf( "\n No se pudo ESCRIBIR en el archivo..." );
  151. }
  152. if( par == 3 ){
  153. printf( "\n ===> No se pudo CERRAR el archivo..." );
  154. }
  155. if( par == 4 ){
  156. printf( "\n No se pudo ABRIR el archivo..." );
  157. }
  158. if( par == 5 ){
  159. printf( "\n No se pudo CERRAR el archivo..." );
  160. }
  161. if( par == 6 ){
  162. printf( "\n No se pudo BORRAR el archivo..." );
  163. }
  164. if( par == 7 ){
  165. printf( "\n No se pudo RENOMBRAR el archivo..." );
  166. }
  167. if( par == 8 ){
  168. printf( "\n No se pudo ABRIR el archivo(.txt)..." );
  169. }
  170. if( par == 9 ){
  171. printf( "\n No se pudo ABRIR el archivo(.bak)..." );
  172. }
  173. if( par == 10 ){
  174. printf( "\n No se pudo EFECTUAR la copia de seguridad..." );
  175. }
  176. if( par == 11 ){
  177. printf( "\n No se pudo CERRAR el archivo(.txt)..." );
  178. }
  179. if( par == 12 ){
  180. printf( "\n No se pudo CERRAR el archivo(.bak)..." );
  181. }
  182.  
  183.  
  184. printf( "\n Pulse una tecla para continuar..."); a = getchar();
  185.    if( a != '\n') while ((ch = getchar()) != EOF && ch != '\n');
  186. }
  187.  

Saludos.
28  Programación / Programación C/C++ / Re: Cadena de caracteres en C en: 1 Mayo 2017, 19:19 pm
Hola, Jurott1.
¿Esto te puede servir?

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main( int argc,char **argv ){
  5. int ok, numero, ch;
  6. do{
  7. printf("\n Introduzca un numero entre 1 y 10 ...............:");
  8. ok = scanf("%d",&numero) == 1 && numero >= 1 && numero <= 10;  
  9. while ((ch = getchar()) != EOF && ch != '\n');
  10. }while(!ok);
  11.  
  12. return EXIT_SUCCESS;
  13. }

Saludos.
29  Programación / Programación C/C++ / Re: Plantilla para trabajar con archivos en lenguaje C. en: 29 Abril 2017, 18:14 pm
Hola, que tengan un muy buen día. -
Rodrigo, gracias por participar y compartir tus conocimientos, espero que con esto la inquietud de kuhi quede totalmente satisfecha.

saludos.
30  Programación / Programación C/C++ / Re: Plantilla para trabajar con archivos en lenguaje C. en: 28 Abril 2017, 22:44 pm
Hola.
Pongo void en las funciones que no reciben parametros porque una vez leí que era una ayuda para el compilador pero por más que busco de donde lo saque, no lo encuentro, desde ese momento, en todas mis prácticas lo hago de esa manera. -
Aprovecho para decirles que encontré la manera para forzar a fflush que de error. -

Saludos.
Páginas: 1 2 [3] 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 37
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines