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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33
301  Programación / Programación C/C++ / Re: Plantilla para trabajar con archivos en lenguaje C. en: 29 Abril 2017, 17:43 pm
Un poco de historia.
Los primeros compiladores de C eran bastante rudimentarios y no hacian chequeos, suponiendo que el programador sabia lo que hacia. En particular los parametros de las funciones. Al inicio, el lenguaje C permitia no especificar parametros como en
Código:
int mifuncion()
y luego mas adelante invocar esa funcion asi:

Código:
valor = mifuncion( a, b, c );

y el compilador no reclamaba nada.

Con el tiempo, el lenguaje se estandarizo y le agregaron el que uno pueda especificar los tipos de los parametros, pero aun manteniendo la compatibilidad hacia atras, vale decir, si no especificabas nada, no habia chequeos, pero si especificabas algo, entonces habia chequeos.

En este caso, si ponias
Código:
int mifuncion(void)

entonces el compilador va a reclamar si invocas la funcion con algun parametro, pues al poner el void ahi, le estas pidiendo explicitamente al compilador que chequee, y este no va a permitir la invocacion con mas parametros.

Ahora ya no importa la compatibilidad hacia atras, si no pones parametros en la definicion de la funcion el compilador va a chequear que NO pases ningun parametro, del mismo modo si pones void entre los parentesis.

Resumen
  • mucho antes: no habia chequeo alguno
  • luego: chequeo si especificas void
  • ahora: chequeo siempre
302  Programación / Programación C/C++ / Re: Error en C: Id returned 1 exit status en: 28 Abril 2017, 16:15 pm
Me pregunto si este programa es exactamente el que ejecutas, si es que lo llegas a ejecutar.

Mi duda es porque aparece un printf mal escrito, dice prinft,  en la línea 31. Lo que debería ser rechazado por el compilador.

Está bien copiado?
303  Programación / Programación C/C++ / Re: Se puede mejorar este codigo¿? en: 28 Abril 2017, 04:17 am
Y qué pasa si se ingresa una velocidad negativa?
304  Programación / Programación C/C++ / Re: El juego del ahorcado! en: 24 Abril 2017, 22:44 pm
Los string literales usan doble comilla, e internamente usan 1 caracter adicional para guardar el final del string. Entonces lo que se ve asi  "hola" tiene en realidad 5 caracteres, no 4.
305  Programación / Programación C/C++ / Re: Método seleccion en C++, error. en: 24 Abril 2017, 18:01 pm
Serviria si indentaras mejor el codigo, para leerlo mejor y si presentaras como estas probando el mismo. Tal vez el problema esta en la prueba y no en el codigo que muestras.
306  Programación / Programación C/C++ / Re: Listas generales en C en: 24 Abril 2017, 03:04 am
La firma de la funcion modificada que propuse esta mala, o incompleta.

Dice

Código:
void dato_insertar (dato datos, int tipo, void* d, void (*f)() ){

deberia decir

Código:
void dato_insertar (dato datos, void* d, void (*f)(void *) ){
307  Programación / Programación C/C++ / Re: Listas generales en C en: 24 Abril 2017, 01:41 am
Cuando estas insertando, en estos momentos, con el codigo que presentas, indicas explicitamente el tipo de dato que esta siendo guardado., por ejemplo:

Código:
dato_insertar(general, ENTERO, &b);		
dato_insertar(general2, DOUBLE, &num);
dato_insertar(general3, CADENA, cadena);
luego te obligas a hacer un switch con ese tipo.

Tengo una solucion que elimina el switch posterior, aunque aun tienes que indicar el tipo de dato que usas al insertar.

Sugiero crear un nuevo campo que guarde un puntero a una funcion que sepa imprimir el dato que estas agregando.

Código:
typedef struct _variante{
int tipo;
void* valor;
        void (*f)(void *);
       
} variante;
definir las funciones que saben imprimir, por ejemplo:

Código:
void tipo_entero(void * pTipo) {
  printf("%d", *(int *)pTipo );
}

Las otras funciones son similares, pero usan otros %d en el printf y otro cast.

luego en dato_insertar simplemente se copia el puntero a funcion

Código:
void dato_insertar (dato datos, int tipo, void* d, void (*f)() ){
datos->tipo = tipo;
datos->valor = d;
        datos->f = f;
}
y esta funcion se invoca usando el nombre de la funcion a usar para imprimr. Nota que es solo el nombre de la funcion, No como siempre usas las funciones, con parentesis.

Código:
dato_insertar(general, &b, tipo_entero );
   
y finalmente cuando quieras imprimir el dato, solo haces

Código:
dato.f(dato.valor);

y esto imprimira de acuerdo a la funcion que usaste.

Suerte!
308  Programación / Programación C/C++ / Re: Sobre argv en: 28 Septiembre 2014, 18:05 pm
Estas comparando un char contra un string. En C son tipos distintos.
Usa comilla simple y compararas caracter contra caracter.
309  Programación / Programación C/C++ / Re: Problema en un Ejercicio de C++ en: 30 Julio 2014, 23:59 pm
¿por que no aplicaste el modulo 10 al decriptar?
310  Programación / Programación C/C++ / Re: Extraña asignación en un array con -1 en: 28 Julio 2014, 06:24 am
Genéricamente, la notacion que usa el parentesis cuadrado, como

p[ entero ]

es igual a

 * ( p + entero )

por lo que

 puntero[ -1 ]

es igual a

 *( puntero - 1 )

El codigo que muestras mueve a "s" un lugar hacia adelante unas lineas antes por lo que si se quiere acceder a posiciones previas el -1 tiene (algo de) sentido.
Páginas: 1 ... 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 [31] 32 33
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines