Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - fabianjsm

#1
Humilde consejo: K&R
#2
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 C/C++ / Re: decimal a octal
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 (cpp) [Seleccionar]
char *strdup (const char *s)
{
   char *d = malloc (strlen (s) + 1);
   if (d != NULL)
       strcpy (d,s);
   return d;
}


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 ;-)

Cita de: leosansan en 30 Agosto 2012, 15:19 PMAnder debes currrate el código antes

Muy cierto, haber si nos muestras algún adelanto Ander123!
#4
Te serviría esto:

Código (cpp) [Seleccionar]
struct hostent *h;
if((h=gethostbyname("foro.elhacker.net"))) {
printf("Host: %s\n", h->h_name);
printf(" IP: %s\n", inet_ntoa(*((struct in_addr*)h->h_addr)));
}


MODIFICO: Perdón, no me di cuenta que estaba en el foro de VB
#5
Programación C/C++ / Re: decimal a octal
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:

char *a = b10base_n(100,10);
char *b = b10base_n(20,10);
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

char a[32], b[32];
strcpy(a, b10base_n(100,10));
strcpy(b, b10base_n(20,10));
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 C/C++ / Re: duda con flex y bison
29 Agosto 2012, 05:26 AM
Tienes razón, modifique el código y lo compile para probar

Código (cpp) [Seleccionar]
%option noyywrap
%{
#include <stdio.h>
int nl = 0, nc = 0;
%}

%%
\n  ++nl; ++nc;
.   ++nc;
%%

int main()
{
    yylex();
    printf( "%d caracteres en %d lineas\n", nc, nl);
    return 0;
}


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


Esta fue la salida:

193 caracteres en 19 lineas
#7
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
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
GNU/Linux / Re: sistema operativo en red
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 C/C++ / Re: duda con flex y bison
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:

int nl = 0, nc = 0;
%%
\n  ++nl; ++nc;
.   ++nc;
%%
int main()
{
    yylex();
    printf( "%d caracteres en %d lineas\n", nc, nl);
    return 0;
}


Procesar con flex y compilar:

Código (bash) [Seleccionar]
$flex test.l
$gcc -o test lex.yy.c