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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45
371  Programación / Programación C/C++ / Re: tengo problemas con mi programa no puedo modificar ni eliminar datos del fichero en: 28 Diciembre 2015, 21:28 pm
Para la próxima, pon tu código entre las etiquetas GeSHI (entre [ code=cpp] y [ /code], quitando espacios). Además, explica que errores has detectado para que así sea más fácil ayudarte...

Bien, he compilado el código para detectar errores más rápidamente, y he encontrado unos cuantos (presuponiendo que es código C):

Código:
main.c: In function 'menu':
main.c:51:31: error: expected expression before 'Contacto'
                borrarContacto(Contacto(),nombreArchivo);
                               ^
main.c:51:31: error: too few arguments to function 'borrarContacto'
main.c:15:6: note: declared here
 void borrarContacto(Contacto contacto, char* nombreArchivo);
      ^
main.c:54:34: error: expected expression before 'Contacto'
                modificarContacto(Contacto(),nombreArchivo);
                                  ^
main.c:54:34: error: too few arguments to function 'modificarContacto'
main.c:16:6: note: declared here
 void modificarContacto(Contacto contacto,char* nombreArchivo);
      ^
main.c: In function 'pausar':
main.c:160:5: warning: zero-length ms_printf format string [-Wformat-zero-length
]
     printf("");
     ^

Realmente, todos los errores pasan porque no tienes creada una función llamada "Contacto". A esta función, la llamas en un par de ocasiones, pero no existe!.

Realmente, no puedes crear esa función, porque has definido un tipo con ese mismo nombre.

Fuera de los errores de sintaxis, no sé si hay más errores...

_____________________________

PD.: Yo he presupuesto que el código está en C, pero si lo estás haciendo en C++, puedes hacerlo MUCHO más óptimo (por ejemplo, pasando por referencia los argumentos).

Si fuera C++, he compilado el código, y me sale un Warning. Quitando eso, el programa me ha funcionado bien hasta que he decidido modificar un contacto... Sinceramente, no comprendo muy bien que intención o de que forma pretendías modificar contactos... Primero, escaneas la ID del contacto, pero después no usas esa ID. En la opción borrar contacto, eliminas todos los contactos!
372  Programación / Programación C/C++ / Re: [?] Ayuda como redondeo el valor de una variable en c en: 27 Diciembre 2015, 00:42 am
Claro, pero mi caso es más general :P
373  Programación / Programación C/C++ / Re: [?] Ayuda como redondeo el valor de una variable en c en: 26 Diciembre 2015, 10:19 am
Puedes hacer tu propia función 'round':

Código
  1. #include <math.h>
  2.  
  3. double Round(double d, int decimals) {
  4.    return (double)((int)(d * pow(10, decimals))) / pow(10, decimals);
  5. }

Estoy casi seguro de que existe una versión más reducida, pero al menos da una idea...
374  Programación / ASM / Re: (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout? en: 23 Diciembre 2015, 13:30 pm
De acuerdo. A ver si existe :D
375  Programación / ASM / (Consulta - Windows) ¿En que anillo está el buffer manejado por stdout? en: 23 Diciembre 2015, 01:55 am
Hola, muy buenas. La duda es ¿dónde está el buffer de stdout? Por ejemplo, cuando llamamos a la función printf, lo que hacemos es copiar el buffer del parámetro de dicha función a otro buffer manejado por Windows. Entonces, ¿qué nivel de protección tiene?

Por si alguien anda despitadillo, me refiero a los anillos del modo protegido de los procesadores. He escuchado que suelen haber 4. El kernel se encuentra en el nivel 0, y las aplicaciones de usuario en el 3.

Lo pregunto por saber si puedo acceder a ese buffer directamente o está en el kernel, y por tanto solo se puede acceder a el por Windows y su API (o las librerías standard de los compiladores, aunque estas a su vez requieren a la API).

Gracias
376  Programación / Programación C/C++ / Re: ¿Alguien puede ayudarme a entender este codigo de strstr? en: 22 Diciembre 2015, 14:55 pm
Respuesta corta: el operador '!' invierte entre true y false una expresión.
El operador && relaciona dos expresiones booleanas. Si alguna de las dos es false, entonces la expresión "expresion1 && expresion2" valdrá false, pero si las dos expresiones son true, entonces la expresión final será verdadera.

Respuesta larga:

Partimos de
Código
  1. *s1 && *s2 && !(*s1 - *s2)

Analicemos. El operador con menos prioridad en esa expresión es el &&, por lo que por ahora lo dejamos aparte y la dividimos en tres partes:
Código
  1. *s1 // Primera parte
  2. *s2 // Segunda parte
  3. !(*s1 - *s2) // Tercera parte

Vale, entonces, la única expresión que hay es !(*s1 - *s2). Dicha expresión tiene un paréntesis, el operador con más prioridad, por lo que lo evaluamos primero con el ejemplo donde *s1 vale 65, y *s2 vale 66. El paréntesis queda así:

Código
  1. 65 - 66
Lo que a su vez equivale a...
Código
  1. -1 //Simplemente restamos

Entonces, ya tenemos el paréntesis. La expresión quedaría:
Código
  1. !(-1)

Lo que hace el operador '!' es cambiar de true a false o viceversa la expresión que tenga a la derecha. Por ejemplo, si tenemos "!(false)", pasaría a "true", y si tenemos "!(true)", pasaría a "false". Pero, ¿y que pasa cuando son números? Si tenemos un número distinto de cero, entonces pasa a ser 0 (por ejemplo, "!(2)" equivale a "0"), y si tiene un "0", entonces pasa a valer "1".

Sabiendo esto, la expresión de antes "!(-1)" quedaría así:
Código
  1. 0 // Invertimos

Ya sabemos que la primera parte vale 65. Sabemos que la segunda parte vale 66 y sabemos que la tercera parte vale 0.  Entonces, nos quedaría así:

Código
  1. 65 && 66 && 0

Las expresiones, normalmente, se evalúan de izquierda a derecha, por lo que primero evaluamos "65 && 66". Lo que hace el operador es lo siguiente:

Valor izquierdoValor derechoResultado
00false
0Distinto de 0false
Distinto de 00false
Distinto de 0Distinto de 0true

Entonces, la expresión ÚNICAMENTE valdrá true cuando los dos operandos sean DISTINTOS de 0. En cualquier otro caso, la expresión será false.

Entonces, "65 && 66" pasaría a valer true.

Ahora tenemos la expresión "true && 0". Como ya hemos visto, como hay un operando que vale 0, entonces la expresión es false.

Sé que es largo de leer, pero creo que si se lee con detenimiento, se puede entender perfectamente

______________________________________

PD.: Hubiera sido mejor la expresión
Código
  1. *s1 && *s2 && *s1 == *s2
377  Programación / ASM / Re: (Consulta) ¿Por qué Windows no usa interrupciones? en: 22 Diciembre 2015, 14:09 pm
Muchas gracias. Me ha costado un poco xD (no es que sea complicado, es que me he comido el coco :P)
378  Programación / ASM / Re: (Consulta) ¿Por qué Windows no usa interrupciones? en: 22 Diciembre 2015, 10:18 am
Interesante... Pero, ¿por qué no se siguen usando las interrupciones? ¿Por qué motivo se están sustituyendo por syscall o demás instrucciones? ¿Qué desventajas tienen?

Gracias por tu respuesta!
379  Programación / ASM / (Consulta) ¿Por qué Windows no usa interrupciones? en: 22 Diciembre 2015, 08:06 am
Hola, muy buenas! La pregunta es bastante simple. ¿Por qué Windows no usa interrupciones para operaciones de bajo nivel? Por ejemplo, Los sistemas Unix usan su clásica interrupción 0x80 para, por ejemplo, operaciones de lectura o escritura. Sin embargo, para hacer operaciones de escritura o lectura en Windows, necesitas usar su API.

La duda se puede plantear de otra forma. ¿Tienen las interrupciones alguna desventaja clara frente al sistema que usa Windows? Gracias!
380  Programación / Programación C/C++ / Re: std::ofstream::close crashea sin explicación aparente en: 19 Diciembre 2015, 22:54 pm
Al final lo que he hecho es rehacer el código y ha resultado. Llevo tanto con esto que no tengo ganas de comprobar que era. Siento la intriga xD
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines