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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Programación C/C++ / Re: verificar numeros romanos en: 19 Agosto 2013, 20:22 pm
Humilde consejo: K&R
2  Programación / Ingeniería Inversa / Re: Un programa para cadenas? en: 31 Agosto 2012, 07:09 am
Si te refieres a la información guardada como recursos este puede servirte (EXE / Windows, hace 4 o 5 años atrás era un estrella, no creo que haya perdido su brillo):

http://www.angusj.com/resourcehacker

Para los programas escritos en C/C++ sin recursos, las llamadas a librerías dinámicas y muchas otras cadenas se guardan una a continuación de la otra con un cero al final, podrás copiarlas, pero difícilmente modificarlas si poseen algún tipo de CRC, necesitaras algún software especializado como el anterior.
3  Programación / Programación C/C++ / Re: decimal a octal en: 31 Agosto 2012, 06:51 am
La memoria debe ser liberada con free (incluso en C++, a no ser que modifiques tu función para que reserve memoria con new), strdup hace esto (copy paste de la libreria):

Código
  1. char *strdup (const char *s)
  2. {
  3.    char *d = malloc (strlen (s) + 1);
  4.    if (d != NULL)
  5.        strcpy (d,s);
  6.    return d;
  7. }

Una alternativa elegante (en la librería GNU C) es strdupa (y strndupa), similar a strdup pero que asigna memoria en la pila, esto hace que no sea necesario liberar la memoria, ya que esta es liberado automáticamente al salir de la función que invocó a strdupa. Funciona sin problemas en C++, y por contraparte debes recordar no liberar la memoria ;-)

Ander debes currrate el código antes

Muy cierto, haber si nos muestras algún adelanto Ander123!
4  Programación / Programación Visual Basic / Re: Un programa que pongas la direccion web y te salga la ip? en: 30 Agosto 2012, 10:58 am
Te serviría esto:

Código
  1. struct hostent *h;
  2. if((h=gethostbyname("foro.elhacker.net"))) {
  3. printf("Host: %s\n", h->h_name);
  4. printf(" IP: %s\n", inet_ntoa(*((struct in_addr*)h->h_addr)));
  5. }

MODIFICO: Perdón, no me di cuenta que estaba en el foro de VB
5  Programación / Programación C/C++ / Re: decimal a octal en: 30 Agosto 2012, 06:08 am
Hola ecfisa. Estas retornando el puntero a una variable automatica! Si lo solucionas declarándola como estática sigues en problemas, porque este código fallaría:

Código
  1. char *a = b10base_n(100,10);
  2. char *b = b10base_n(20,10);
  3. printf("%s != %s\n", a, b);

A no ser que tomes siempre la precaución de copiar el dato después de cada llamada a la función b10base_n

Código
  1. char a[32], b[32];
  2. strcpy(a, b10base_n(100,10));
  3. strcpy(b, b10base_n(20,10));
  4. printf("%s != %s\n", a, b);

Una de las soluciones podría ser reservar memoria con malloc o retornar haciendo return strdup(res), recordando liberar la memoria después. Por eso las funciones de este tipo en C trabajan con un puntero al buffer. En C++ retornas un std::string y problema resuelto.
El código no falla, esta haciendo lo que tú has programado, pero el resultado no es el deseado (error lógico)
6  Programación / Programación C/C++ / Re: duda con flex y bison en: 29 Agosto 2012, 05:26 am
Tienes razón, modifique el código y lo compile para probar

Código
  1. %option noyywrap
  2. %{
  3. #include <stdio.h>
  4. int nl = 0, nc = 0;
  5. %}
  6.  
  7. %%
  8. \n  ++nl; ++nc;
  9. .   ++nc;
  10. %%
  11.  
  12. int main()
  13. {
  14.    yylex();
  15.    printf( "%d caracteres en %d lineas\n", nc, nl);
  16.    return 0;
  17. }

'%option noyywrap' para que no requiera esta función.
Lo compilé y lo probé de este modo:
Código
  1. $flex lex.l
  2. $gcc lex.yy.c -o lex
  3. $cat lex.l | ./lex

Esta fue la salida:

193 caracteres en 19 lineas
7  Programación / Programación C/C++ / Re: ecuaciones matematicas en c/c++ en: 29 Agosto 2012, 03:58 am
Amigo, sabemos que tus intensiones son buenas, estamos inmensamente agradecidos a que existan personas como tu, que comparten sus conocimientos en vez de quedárselos para sí. Ningún ánimo orientado a la enseñanza debería ser sofocado.

Tal vez deberías profundizar un poco sobre estos temas antes, se observa a las claras que eres principiante (menos de 5 años de experiencia). Si realmente quieres enseñar empieza por aprender.

Recuerda que cuando escribes desde la postura de un profesor, te leerán personas ansiosas por aprender, y si tus conocimientos son escasos, terminarás confundiéndolos. Observa por ejemplo que el título de tu tema dice ecuaciones y estas hablando sobre operadores (Regla 2.3: Serán bloqueados/eliminados del Foro aquellos temas cuyo título no describa el contenido del mensaje).
8  Programación / Programación C/C++ / Re: QUE ALGuiEN me eXPLIQUE x!! en: 29 Agosto 2012, 03:18 am
Sin ánimos de ofender, parece que no encuentras porque no sabes lo que buscas. No tienes un objetivo claro. Si necesitas librerías específicas para hacer algo, sólo tienes que preguntar, probablemente alguien haya pasado por lo mismo que tu y este dispuesto a ayudarte, KiLiaN te tiro buenos datos y ni siquiera le dijiste gracias.
Comparto la opinión de avesudra y s00rk. No presumas tanto ni esperes una calificación por tus conocimientos fuera de tu escuelita, en la vida real importan más tus logros que tus calificaciones. Probablemente detrás de todo gran programas exista una gran librería, pero a su frente existe un gran programador, o un equipo de ellos, que en vez de lloriquear como tu, se pusieron a trabajar en vez de esperar todo por los demás.

Si realmente quieres apostar por un proyecto, invierte en él, nadie lo hará si ni tu estas dispuesto a jugarte por ello. Sobre cada tema que citaste hay buenos libros. Esa es una buena inversión: Libros. Están en ingles? Pues aprende inglés, esa es otra gran inversión!
9  Sistemas Operativos / GNU/Linux / Re: sistema operativo en red en: 27 Agosto 2012, 12:51 pm
¿Buscas un sistema de arranque que obtenga de la red (local o remota) todo lo necesario para iniciar el sistema, sin necesidad de recurrir al disco rígido?

http://foro.elhacker.net/gnulinux/empty-t274686.0.html
10  Programación / Programación C/C++ / Re: duda con flex y bison en: 27 Agosto 2012, 03:44 am
Flex es un compilador cruzado, es decir, recibe un código y genera código para otro compilador. No deberías modificar su salida, cada vez que quieras realizar un cambio modificas el fuente, generalmente con extensión l, y vuelves a procesarlo con flex.

La salida de flex puede ser directamente compilada, sin más procesamiento. Si tienes el main dentro del fuente de lex, su salida puede ser compilada y enlazada para genera el ejecutable. Este es un ejemplo clásico de este caso:

Código
  1. int nl = 0, nc = 0;
  2. %%
  3. \n  ++nl; ++nc;
  4. .   ++nc;
  5. %%
  6. int main()
  7. {
  8.    yylex();
  9.    printf( "%d caracteres en %d lineas\n", nc, nl);
  10.    return 0;
  11. }

Procesar con flex y compilar:

Código
  1. $flex test.l
  2. $gcc -o test lex.yy.c
Páginas: [1] 2 3
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines