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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Temas
Páginas: 1 [2] 3 4 5 6 7 8 9 10
11  Programación / Programación C/C++ / Duda al cerrar un archivo que fclose no pudo cerrar. - en: 1 Marzo 2017, 17:02 pm
Hola, gente, que tengan un muy buen día. -
La duda es que se debe hacer cuando la función fclose intenta cerrar un archivo y no lo logra, ¿hay alguna manera de informar el error con detalle?, ¿se debe intentar una segunda vez?, ¿que puedo hacer como programador para ayudar a solucionar el problema?. -
 
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc,char **argv){
  5. char frase[] = "arequito, centro soguero del pais";
  6. FILE *ptrFrase = NULL;
  7.  
  8. if(!(ptrFrase = fopen("frase.txt", "w"))){
  9. printf( "\n Error al abrir %s Para escribir. Finaliza el programa.", frase );
  10. exit(1);
  11. }
  12.  
  13. fprintf(ptrFrase, "%s", frase);
  14.  
  15. if( fclose( ptrFrase )!=0){
  16. printf( "\n No se ha podido cerrar el fichero %s.", frase );
  17. }
  18.  
  19. return EXIT_SUCCESS;
  20. }
  21. //https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Manejo_de_archivos#fprintf
  22.  
Es todo por el momento, espero que se entienda cuál es mi desconocimiento. -
Saludos.
12  Sistemas Operativos / Windows / Ningun dispositivo de salida de audio instalado Windows 10. en: 13 Febrero 2017, 21:59 pm
Hola, gente ¿cómo están?
Tengo una tablet con Windows 10 y todo bien con el audio hasta que efectué una actualización del sistema operativo y desde ese momento estoy sin sonido, estuve haciendo muchas cosas de las que encontré en internet y nada. -
Quisiera saber si alguien tubo el mismo problema y como lo soluciono. -

Daniel
13  Programación / Programación C/C++ / Estructuras anidadas en lenguaje C. - en: 5 Febrero 2017, 14:28 pm
Hola, buen día. -
Necesito una ayudita, encontré este código, pero no logro interpretarlo del todo, el propósito es que en la función get_String en la primera llamada aparezca "el nombre" y en la segunda "la dirección" en TiposString[NomDir->tipo], el caso es que por más que leo los errores no puedo hacer que compile. -
Ya logre lo mismo pasando un parametro a la función, pero me interesaría poder hacerlo de esta manera. -

Código
  1. #include <stdio.h>
  2.  
  3. typedef struct {
  4. char texto[30];
  5. int tipo;
  6. } texto_t;
  7.  
  8. typedef struct{
  9. texto_t nombre;
  10. texto_t direccion;
  11. }alumno;
  12.  
  13. const char * TiposString[]={"el nombre","la direccion"};
  14.  
  15. void get_String( texto_t * NomDir );
  16.  
  17. int main( void ){
  18. alumno *ptrAlumno;
  19.  
  20. get_String( ptrAlumno->nombre );
  21. get_String( ptrAlumno->direccion );
  22.  
  23. return 0;
  24. }
  25.  
  26. void get_String( texto_t * NomDir ){
  27. printf("\n Ingresa %s del alumno ......:", TiposString[NomDir->tipo] );
  28. }
  29.  
  30. /*
  31. Para acceder/guardar al texto es:
  32.  
  33. NomDir->texto

Nos estamos leyendo. -
14  Programación / Programación C/C++ / Frase sin espacios al principio ni al final en lenguaje C. en: 27 Enero 2017, 21:35 pm
Hola, saludos para todos.
El código que dejo a continuación es para validar que al ingresar el nombre y apellido de un alumno sea correcto.
Por el momento lo que verifico es:
Que tmp no quede vacío, si se pulsa <Enter> sin ingresar nada o si se se pulsa <Enter> después de pulsar <Espacio> una o varias veces. -
No debe haber espacios ni al principio ni al final de la frase ingresada. -
Citar
Si ingreso "  Roberto"  debería devolver "Roberto"
Si ingreso "  Roberto  "  debería devolver "Roberto"
Si ingreso "Roberto  "  debería devolver "Roberto"
El problema lo tengo con poner el final de cadena '\0' después del último carácter, si no hay
espacios en blanco fgets lo deja perfecto pero que pasa si el ingreso es:
Código
  1. [0] R
  2. [1] o
  3. [2] b
  4. [3] e
  5. [4] r
  6. [5] t
  7. [6] o
  8. [7]
  9. [8]
  10. [9] '\0'
  11.  
Concretamente como harían para pasar el elemento [9] al [7]

Código
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5. #include <ctype.h>    
  6.  
  7. void get_String( char *tmp );
  8. void ajustes( char *tmp );
  9. void mensajeError();
  10.  
  11. int main( void ){
  12. char tmp[30];    
  13.  
  14. get_String( tmp );
  15.  
  16. return EXIT_SUCCESS;
  17. }
  18.  
  19. void get_String( char *tmp ){
  20. int ok, i=0, espacios=0, espIzquierda=0;
  21.  
  22. do{
  23. ok=1;
  24. printf("\n Ingresa el nombre completo del alumno ......:" );
  25. fgets( tmp, 30, stdin );
  26. ajustes( tmp );
  27. while( tmp[i] != '\0' ){
  28. if( tmp[i] == 32 ){
  29. espacios++;
  30. }else{
  31. if( tmp[0] == 32 && espIzquierda == 0 ){
  32. espIzquierda = i;
  33. }
  34. }
  35. i++;
  36. }
  37. if( i == espacios ){
  38. ok=0; espacios=0; i=0;
  39. mensajeError();
  40. }
  41. }while( !ok );
  42. if( espIzquierda > 0 ){
  43. i=0;
  44. while( tmp[i] != '\0' ){
  45. tmp[i] = tmp[i+espIzquierda];
  46. i++;
  47. }
  48. }
  49. }
  50.  
  51. void ajustes( char *tmp ){
  52.        char *p = NULL;
  53.        int ch;
  54.  
  55.        if(( p=strchr( tmp , '\n'))){
  56.                *p='\0';
  57.        }else{
  58.                while((ch = getchar()) !='\n' && ch!=EOF);
  59.        }
  60. }
  61.  
  62. void mensajeError(){
  63. printf( "\n El dato es obligatorio" );
  64. printf( "\n\t Pulsa <Enter> para intentarlo nuevamente..." ); getchar();
  65. }

Por favor, no hacer caso a las librerías incluidas que es por tantas practicas. -

Saludos.
15  Programación / Programación C/C++ / Si aprieto <enter> sin ningún ingreso fgets no me devuelve un puntero null en C. en: 21 Enero 2017, 21:34 pm
Hola, ¿cómo están?
Una consulta rapidita, alguien me puede decir que estoy haciendo mal, el puntero que devuelve fgets nunca es nulo, ¿por qué? .-

Código
  1. do{
  2. ok=1;
  3. printf("\n Ingresa el nombre del alumno [%d]......:", max+1);
  4. if( fgets( (b+max)->nombre, 30, stdin ) == NULL ){
  5. ok=0;
  6. printf( "\n El dato es obligatorio..." );
  7. printf( "\n Pulsa <Enter> para intentarlo nuevamente..." ); getchar();
  8. }
  9. }while(!ok);
  10. ajustes( (b+max)->nombre );

Saludos.
16  Programación / Programación C/C++ / Pasar un campo(miembro) de una estructura a función por referencia.[C] en: 17 Enero 2017, 15:09 pm
Hola, que tengan un muy buen día.
Tengo una duda y espero en primer lugar que se entienda lo que no logro hacer y luego que pueda alguien darme la solución. -

Estas líneas de código las quiero pasar a una función:
Código
  1. if((p=strchr((b+max)->nombre, '\n'))){
  2. *p='\0';
  3. }else{
  4. while((ch = getchar()) !='\n' && ch!=EOF);
  5. }
  6. ................................
  7. if((p=strchr((b+max)->direccion, '\n'))){
  8. *p='\0';
  9. }else{
  10. while((ch = getchar()) !='\n' && ch!=EOF);
  11. }
  12.  

En primer lugar, pasar un solo campo y no el total de la estructura.
luego que los cambios efectuados en la función llamada se vean reflejado en la función llamadora(main). -

El código completo.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct{
  5. char nombre[30];
  6. char direccion[30];
  7. int edad;
  8. }alumno;
  9.  
  10. int main( void ){
  11. alumno *b=NULL;
  12. int max=1, i, ch=0, seguir=0;
  13. char *p = NULL;
  14.  
  15. do{
  16. b = ( alumno * )realloc( b, (max)*sizeof(alumno));
  17. if( b==NULL ){
  18. printf("\n No se pudo asignar la memoria!");
  19. exit(EXIT_FAILURE);
  20. }
  21. printf("\n Ingresa el nombre del alumno [%d]......:", max);
  22. fgets( (b+max)->nombre, 30, stdin );
  23.  
  24. if((p=strchr((b+max)->nombre, '\n'))){
  25. *p='\0';
  26. }else{
  27. while((ch = getchar()) !='\n' && ch!=EOF);
  28. }
  29.  
  30. printf("\n Ingresa la direccion del alumno [%d]...:", max);
  31. fgets( (b+max)->direccion, 30, stdin );
  32.  
  33. if((p=strchr((b+max)->direccion, '\n'))){
  34. *p='\0';
  35. }else{
  36. while((ch = getchar()) !='\n' && ch!=EOF);
  37. }
  38.  
  39. printf("\n Ingresa la edad del alumno [%d]........:", max);
  40. scanf( "%d", &(b+max)->edad );
  41.  
  42. printf( "\n distinto a \"0\" introduce otro alumno.: " );
  43. scanf( "%d", &seguir );
  44. max++;
  45. }while( seguir != 0 );
  46.  
  47. for ( i=0; i<max; i++ ){
  48. printf( "%s\t%s\t%d\n",(*(b+i)).nombre, (*(b+i)).direccion, (*(b+i)).edad );
  49. }
  50.  
  51. free( b );
  52.  
  53. return 0;
  54. }

Saludos y gracias. -
17  Programación / Programación C/C++ / Como liberar memoria en estructura dinámica [C] en: 13 Enero 2017, 12:01 pm
Hoa, gente ¿cómo están?
Bueno no tengo mucho para agregar, por más que busco en internet no puedo encontrar un Ej. concreto de como liberar la memoria en una estructura dinámica. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct{
  5. char nombre[30];
  6. char direccion[30];
  7. int edad;
  8. }alumno;
  9.  
  10. int main( void ){
  11. alumno *b=NULL;
  12. int max,i;
  13. unsigned int ch=0;
  14.  
  15. printf("\n Ingresa la cantidad de alumnos.....:");
  16. scanf("%d", &max);
  17. b = ( alumno * )malloc( sizeof(alumno)*max );
  18. for( i=0; i<max; i++){
  19. printf("\n Ingresa el nombre del alumnos [%d].....:", i+1);
  20. scanf( "%s", (b+i)->nombre );
  21. while((ch = getchar()) !='\n' && ch!=EOF);
  22. printf("\n Ingresa la direccion del alumno [%d]...:", i+1);
  23. scanf( "%s", (b+i)->direccion );
  24. while((ch = getchar()) !='\n' && ch!=EOF);
  25. printf("\n Ingresa la edad del alumno [%d]........:", i+1);
  26. scanf( "%d", &(b+i)->edad );
  27. printf( "\n ================================================\n" );
  28. }
  29.  
  30. for (i=0;i<max;i++){
  31. printf("%s\t%s\t%d\n",(*(b+i)).nombre,(*(b+i)).direccion,(*(b+i)).edad);
  32. }
  33.  
  34. return 0;
  35. }

Si alguien me pondría un Ej. relacionado con el código, Danielito muy agradecido -
Saludos.
18  Programación / Programación C/C++ / strcmp a mano // operador ternario // #define en lenguaje C en: 29 Diciembre 2016, 12:46 pm
Hola, muy buen día para todos.
Hoy no les consulto por un error sino por algo que por más que busco en la web no encuentro la respuesta, ¿es posible agrupar desde la línea 10 a la 15 con un operador ternario y de no ser así me podrían dar alguna idea de como hacerlo con un #define? -

Código
  1. #include <stdio.h>
  2.  
  3. int d( char *a, char *b);
  4.  
  5. int main( void ){
  6. char a[] = "rosita", b[] = "Rosita";
  7. int res;
  8.  
  9. res = d( a, b );
  10. if( res == 0 )
  11. printf( "\n Las frases %s y %s son IGUALES\n\n", a, b );
  12. else if( res < 0 )
  13. printf( "\n %s es MAYOR que %s\n\n", a, b );
  14. else
  15. printf( "\n %s es MENOR que %s\n\n", a, b );
  16.  
  17. return 0;
  18. }
  19.  
  20.  
  21. // Lo que regresa la función: >0 si a<b ==> 0 si a==b ==> <0 si a>b
  22. int d( char *a, char *b ){
  23.  
  24. for( ; *a == *b; a++, b++ )
  25. if( *a == '\0' )
  26. return 0;
  27.  
  28. return *a - *b;
  29. }


Desde ya muchas gracias por el tiempo que le dediquen. -
Saludos.
19  Programación / Programación C/C++ / Función strcpy propia en lenguaje C. (copiar una cadena en otra) en: 27 Diciembre 2016, 20:35 pm
Hola, gente ¿cómo están? ya los extrañaba. -
Estoy repasando punteros y me encuentro en el libro de los autores de C (creo que lo son) con esta función(d) que no logro hacer que de los resultados esperados, me podrían decir que estoy haciendo mal. -

Código
  1. #include <stdio.h>
  2.  
  3. void d( char *c, char *a);
  4.  
  5. int main( void ){
  6. char a[] = "rosita", *b = "rosita", c[7];
  7.  
  8. printf("\n %s", a );
  9. printf("\n %s \n\n ", b );
  10.  
  11. a[0] = 'R';
  12. b = a;
  13.  
  14. printf("\n %s", a );
  15. printf("\n %s \n\n ", b );
  16.  
  17. d( c, a );
  18.  
  19. return 0;
  20. }
  21.  
  22.  
  23.  
  24. void d( char *c, char *a ){
  25. while( (*c++ = *a++) )
  26. ;
  27.  
  28. printf("\n %s\n", c );
  29. }
  30.  
Saludos.
20  Programación / Programación C/C++ / Declarar arreglo luego de conocer la cantidad de elementos necesarios [C]. en: 2 Diciembre 2016, 16:34 pm
Hola, ¿cómo están?
Estoy haciendo algunos repasos y me encontré con este dilema y quería consultarlos, lo que desearía hacer es declarar numeroCadena luego de conocer cuantos dígitos tiene numeroEntero, por lo que tengo leído esto no es permitido en C, pero como aquí hay genios en programación, me atrevo a consultarlos. -

Código
  1. #include <stdio.h>
  2. int cantidadDigitos;
  3.  
  4. int main( void ){
  5. int  numeroEntero = 41520;
  6. char numeroCadena[6];
  7.  
  8. cantidadDigitos = sprintf(numeroCadena, "%d", numeroEntero);
  9.  
  10. printf("\n %s tiene %d digitos \n", numeroCadena, cantidadDigitos );
  11. return 0;
  12. }
  13.  
Saludos y desde ya muchas gracias. -

Páginas: 1 [2] 3 4 5 6 7 8 9 10
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines