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

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


  Mostrar Mensajes
Páginas: 1 ... 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 [149] 150 151 152 153 154 155 156 157 158 159 160
1481  Programación / Programación C/C++ / Re: Arreglos y apuntadores están íntimamente relacionados en: 15 Octubre 2011, 18:11 pm
El "struct hack" aplica cuando se trata del ultimo campo de una estructura, en tu ejemplo estamos tratando con un array.

En cuanto al manejador de señales no veo el problema, de nuevo si así lo decidimos basta con el uso de alias para reducir (y aclarar) la declaración:
Código
  1. typedef void (*pfn)(int);
  2. pfn signal(int sig, pfn);

Un saludo
1482  Programación / Programación C/C++ / Re: Arreglos y apuntadores están íntimamente relacionados en: 15 Octubre 2011, 03:47 am
Un problema (no lo digo con malicia) es tu manejo del español, si tratas de comunicar algún punto fino (por ejemplo ironía) me temo que nos pones en dificultades (de por si ya es difícil comunicarse mediante texto).

Si bien el lenguaje C existe desde hace años este se estandarizo y, al menos técnicamente, se actualizo en 1989 y 1999. Por supuesto tiene, como cualquier otro lenguaje, sus "verrugas".

En cuanto a esto:
Código
  1. void (*(*handler[])())(int *, double) = {};
No es valido ya que se trata de un array sin indicar su numero de elementos inicializado con (aquí el detalle) una lista vacía.

Edito:

Si queremos complicarlo en serio se puede pero también podemos tratar de hacerlo mas legible utilizando un par de alias para los punteros a funcion:
Código
  1. typedef void (*pf)(int *, double);
  2. typedef pf (*pg)(void);
  3.  
  4. pg handler[10];

Un saludo
1483  Programación / Programación C/C++ / Re: Arreglos y apuntadores están íntimamente relacionados en: 15 Octubre 2011, 00:18 am
me dijo eso se como funciona mas no el por qué funciona así.
Pues por lo visto se trata de una confusión. Ese operador funciona de la forma descrita, el porque es así es algo que debería preguntarle al creador del lenguaje.

Mejor platica con el para aclarar las dudas.

Un saludo
1484  Programación / Programación C/C++ / Re: Arreglos y apuntadores están íntimamente relacionados en: 14 Octubre 2011, 18:44 pm
Es posible por dos razones:

1) El operador "[]" es un operador binario, uno de los operandos (no importa cual) debe ser un puntero y el otro un valor entero.

2) Salvo ciertas excepciones (como en el caso del operador sizeof) el uso del nombre de un array resulta no en este sino en un puntero (del tipo apropiado) apuntando al primer elemento del array.

En tu caso el operador "[]" recibe los dos operandos que requiere: el puntero (resultado del uso del nombre "arreglo") y el entero (la constante 3).

Otro caso (cuyo uso solo deberia ser ilustrativo) es:
Código:
printf("%c\n", "Hola, mundo"[3]);
printf("%c\n", 3["Hola, mundo"]);
En ambos casos el caracter que se imprime es 'a'.

Un saludo
1485  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 12 Octubre 2011, 19:52 pm
En C no puedes comparar directamente dos cadenas. Como ya te indico El_Java debes verificar si el primer caracter de la cadena es diferente de '\0', solo si es asi la imprimes:
Código
  1. if (aux.antonimo[0] != '\0'){
  2.   /* La cadena no esta vacia, la imprimes */
  3. }

Un saludo
1486  Programación / Programación C/C++ / Re: [?] leer binario y guardar en struct dato AYUDA en: 11 Octubre 2011, 18:35 pm
Si tienes un problema debes describirlo de una forma clara, si solo indicas "me dan bucle" no nos ayudas. Si para empezar los datos se guardaron correctamente entonces esas funciones no deben generar errores, si modificaste el programa entonces por favor publica el código fuente completo.

Ese par se puede reducir a:
Código
  1. void listarAnt()
  2. {
  3.   FILE *archivo;
  4.   struct dato aux;
  5.  
  6.   if ((archivo = fopen (DICCIONARIO, "rb")) != NULL){
  7.      while (fread (&aux, sizeof (struct dato), 1, archivo) == 1)
  8.         printf ("Palabra: %s \nAntonimo: \n\t%s", aux.palabra, aux.antonimo);
  9.      fclose (archivo);
  10.   }
  11. }
  12.  
  13.  
  14. void listarPar()
  15. {
  16.   FILE *archivo;
  17.   struct dato aux;
  18.  
  19.   if ((archivo = fopen (DICCIONARIO, "rb")) != NULL){
  20.      while (fread (&aux, sizeof (struct dato), 1, archivo) == 1)
  21.         printf ("Palabra: %s \nParonimo: \n\t%s", aux.palabra, aux.paronimo);
  22.      fclose (archivo);
  23.   }
  24. }


Pero de nuevo lo que debes hacer es explicar en detalle el problema y presentar el código fuente modificado.

Un saludo
1487  Programación / Programación C/C++ / Re: ayuda con getchar en: 10 Octubre 2011, 19:37 pm
Los problemas son varios.

Los tecnicos son dos: el primero que debes declarar la variable "grade" con el tipo "int" ya que ese es el valor de retorno de "getchar". Tambien debes tener en cuenta que todos los caracteres seran procesados, por ejemplo si tecleas:
Código:
A{ENTER}
El caracter 'A' se contabiliza asi como el caracter '\n' (generado por el {ENTER}) resultara en el mensaje de "entrada no valida".

Otro error es el EOF, no puedes simplemente teclear:
Código:
EOF{ENTER}
En su lugar la señal de fin de archivo se genera dependiendo del SO, en una linea en blanco debes utilizar la combinacion de teclas {CONTROL} + 'Z' (MS Windows) o {CONTROL} + 'd' (Linux + Bash).

Un programa sencillo para practicar:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   int ch;
  7.  
  8.  
  9.   while (1){
  10.      printf("Teclea un caracter: ");
  11.      fflush(stdout);
  12.  
  13.      if ((ch = getchar()) != EOF){
  14.         printf("El caracter es %c\n", ch);
  15.  
  16.         /* Descartamos el resto de la linea */
  17.         while ((ch = getchar()) != EOF && ch != '\n')
  18.            ; /* Nada que hacer */
  19.      }else
  20.         break;
  21.   }
  22.  
  23.   return EXIT_SUCCESS;
  24. }

Un saludo
1488  Programación / Programación C/C++ / Re: Ayuda problema en compilacion de dev c++ en: 10 Octubre 2011, 01:18 am
El error de debe a que estas tratando de utilizar un bucle "while" como si fuera un "for".

Cambia el bucle a:
Código
  1. for (x = 0; x < 10; x++)
  2.   cout << x << endl;

Un saludo
1489  Programación / Programación C/C++ / Re: Ayuda programa matematico basico!! en: 9 Octubre 2011, 07:12 am
Para calcular un numero "x" elevado a la potencia "y" se debe tener un acumulador (con 1 como valor inicial) el cual se multiplica "y" veces por el numero "x":
Código
  1. int x;
  2. int y;
  3. int i;
  4. long res;
  5.  
  6. /* ... */
  7.  
  8. res = 1;
  9. for (i = 0; i < y; i++)
  10.   res *= x;
  11.  
  12. printf("%d^^%d == %ld\n", x, y, res);

Si necesitas de un buen libro lee el primer tema fijo de estos foros, su titulo lo dice todo: [ Libros/Papers ] C/C++.

Un saludo
1490  Programación / Programación C/C++ / Re: Ayuda con fichero ? en: 8 Octubre 2011, 03:43 am
Es un bucle infinito ya que no realizas ninguna operacion de lectura.

Leer lineas es contar el numero de caracteres '\n' en el archivo, eso lo consigues con:
Código
  1. int lineas(FILE *file)
  2. {
  3.   int ch;
  4.   int num_lineas;
  5.  
  6.   num_lineas = 0;
  7.   while ((ch = fgetc(file)) != EOF)
  8.      if (ch == '\n')
  9.         num_lineas++;
  10.  
  11.   return num_lineas;
  12. }

Un saludo
Páginas: 1 ... 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 [149] 150 151 152 153 154 155 156 157 158 159 160
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines