Skip navigation.

Log in | Sign up

photo of Anibal

Error Prone

_dy->connect(qObject, "post()", self, OBJC_SLOT(0, @selector(ohYea)));

Posts tagged with "C"

Cortar un texto sin quitar las xhtml-tags

, ,

Éste es un pequeño código que demuestra lo desordenado que trabajo. Por lo general mi modus operandi es:
Tener una idea.
Codificarla hasta que anda (con todas las malas prácticas habidas y por haber).
Limpiarla hasta que quede más bonita y legible.
Aburrirme y abandonar el proyecto.

Lo bueno, es que la primer parte me divierte mucho y puedo pasar horas viendo, modificando, aprendiendo (sobre todo aprendiendo) y diciendome "pero que pelotudo, mirá lo que hice....".

Ahora si, el problema:


Tengo un texto largo (o corto no es el problema), yo quiero que los textos largos sean cortados hasta las primeras 256 letras, sin contar los tags de xhtml. O sea, si yo tengo un texto <strong>Anibal</strong>, éste tiene 6 letras. También lo que quiero es que el código resultante tenga todas sus tags bien cerradas (ésto, en el texto original está bien, asumo que no hay un texto que tenga alguna tag xhtml no cerrada).

Read more...

Leyendo las declaraciones correctamente

,

Cuando a uno le enseñan un lenguaje, y le enseñan las cosas básicas se encuentra con cosas como las declaraciones.
int *miVariable;
A lo cual uno directamente dice que miVariable es un puntero a int, lo cual no es del todo errado. Hoy leyendo Cocoa With Love, más precisamente acá me encuentro una muy buena explicación de cómo leer éstas declaraciones:

Read more...

Frustrado

, , , ...

Acabo de terminar, por la fuerza, un chat con un personaje. En realidad es que no entiendo bien cómo puede ser que no se entienda. Paso a explicar lo sucedido. El personaje éste apareció por el foro el-hacker.net con preguntas, muchos le contestaron hasta el artasgo y se le sugirió comprar un libro. Como mi msn me resbala, yo tengo activado para que se agreguen, éste personaje se me agregó, como soy muy buena onda, siempre ayudo (bah, eso intento), por msn soy un poco más compasivo y le explico, muchas veces me terminó cansando y le escribía un código en no más de 2 minutos y se lo regalaba. Hace como una semana llegó con un problema un tanto avanzado, estuve no se cuanto tiempo tratando de hacerlo comprender su error y cómo podía solucionarlo, a los pocos días recibí un correo de que aún no le salía que si no podía ayudarlo a corregir, yo le contesté muy mal (la verdad que no había visto el archivo adjunto), por culpa cuando vi el archivo adjunto dediqué un buen tiempo a explicar y dar paso por paso cómo funcionaba y qué debía hacer para descubrir el error. Grata fue mi sorpresa que el perder esa cantidad de tiempo no sirvió de nada. El código en cuestión:

float decimal (float n)
{
  int m,L;
  float d,k,N;

  k=n*10;
  m=k/10;
  d=n-m;
  N=d*10;

  while((L%10)!=0)
  {
    N=N*10;
    int(L=N*10);
  }

  return N;
}


NOTA: quiero decir que mi intención no es tildar de nada a éste personaje (incluso cambié su mail por Anonimo, lo cual quiero dejar en claro que si se llega a nombrar en algún comentario, si llegase a haber alguno, será editado por mi y borrado.

Read more...

Diferencias entre char *string y char string[]

, ,

Existen 3 formas de definir un string en C:
char *puntero_a_char = "Valor inicial";
char sin_definir_tamanio[] = "Valor inicial";
char definendo_tamanio[TAMANIO] = "Valor inicial";
¿cuál es la diferencia entre ambas?

Read more...

Si juegas con la memoria, la puedes cagar

, ,

Trataré de mostrar un par de cosas que, pueden (o no) ser interesantes, pueden (o no) ser de utilidad, respecto a la memoria dinámica en C, puede ser aplicable a C++, pero no me interesa ésto por ahora.

Pondré aquí un ejemplo, útil o no, sobre el manejo de memoria (un poco avanzado lo considero yo):

Read more...

NetBeans 6.7 para C/C++

, , ,

No hace mucho salió NetBeans 6.7, en si nació como un IDE para java, pero a partir de la versión 6 se creó un framework para hacer plugins y de ahí se pudo hacer un montón de plugins para soportar distintos lenguajes, a partir de la versión 6.5, ya se podía descargar únicamente lo que se quería, por ejemplo si quieres un IDE para C/C++, únicamente descargaba los componentes para C/C++, o si querías ruby, descargaba únicamente los de ruby, o podías descargar todos.

Read more...

Ahora C me vuelve loco (math.h)

, , ,

Como en el post anterior sobre php, ahora me surgió una duda con C, en realidad el compilador gcc. Es simple, igual que la vez anterior:
#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[])
{
    double a = sqrt(4.0);
    printf("%.2f\n", a);

    return ;
}
éste código compila sin ningún problema:
~$ make hola
~$#o bien puedo hacerlo con la forma larga
~$ gcc -o hola hola.c -Wall
~$
Nada pasa, ahora compliquemos un poco:
#include <stdio.h>
#include <math.h>

int main(int argc, char *argv[])
{
    double b = 4.0;
    double a = sqrt(b);
    printf("%.2f\n", a);

    return ;
}
Ahí está el problema, ¿se ve?, lo único que hice fue cambiar la llamada de sqrt, en lugar de llamarla con un valor constante lo llamo con una variable, aquí la salida del compilador:
~$ make hola
cc     hola.c   -o hola
/tmp/ccMlaYKP.o: In function `main':
hola.c:(.text+0x3b): undefined reference to `sqrt'
collect2: ld devolvió el estado de salida 1
make: *** [hola] Error 1
~$ #nada cambia cuando lo hago con la versión larga:
~$ gcc -o hola -Wall hola.c
/tmp/ccMlaYKP.o: In function `main':
hola.c:(.text+0x3b): undefined reference to `sqrt'
collect2: ld devolvió el estado de salida 1
make: *** [hola] Error 1
me marca como que sqrt no está definida, buscando buscando encontré la solución aquí, pero antes tengo que decir que ésto no sucede si utilizo g++ para compilar, o sea si compilo el código con compilador de C++,
~$ g++ -o hola -Wall hola.c
~$
anda hermoso, en fin, la solución que encontré es que hay que decirle explícitamente que linkee con la librería math, eso se hace pasándole el parámetro -lm al linker, por lo que el código para compilar algo que utilice la librería math.h quedaría así:
~$ gcc -o hola -Wall hola.c -lm
Pero mi duda es ¿por qué el compilador de C++ no necesita el pasaje de ese parámetro mientras que C si, y lo que es peor aún, por qué si le paso una constante compila sin problemas?

Así debería funcionar... ¡Estúpido!

, ,

Eso es lo que me acabo de decir, resulta que empecé un pequeño proyecto únicamente para propósito personal de aprender, el runtime de Objective-C. GNUStep es la implementación de OpenStep por parte de la gente GNU. No está mal, es muy amplia y Foundation está muy avanzada, pero la parte de interfaz gráfica es muy pobre y súmamente buggy (llena de errores P:), además de eso, tiene su propia forma de crear Makefiles, para "simplificar" la vida y la neta no simplifica nada puesto que como no quiero usar su AppKit me la complica.

Entonces me dije, hagamos algo, a ver, qué es lo que más me gusta de GNUStep, a ver... a ver...

Read more...

Ta-Te-Ti (código en C)

,

Si eres como yo, odiarás leer desde la página web, así que mejor pasate por el final de éste post para descargar el archivo, en su defecto sigue dale para seguir leyendo que está el código completito completito.

Read more...

Ta-Te-Ti

,

Hola holita!, aqui Shinisami-sama... (debo dejar compenetrarme tanto con los mangas que leo). Oki, aquí yo de nuevo, dejando de lado, volviendo, dejando, volviendo y así sustantivamente. Ahora voy a dejar un código que realmente me gusta mucho, un Ta-Te-Ti que hice para un reto en el-hacker.com pero se ve que no quedó en nada pero igual me chupa un huevo porque ese foro está más caído que las bolsas de Europa. En si un tateti no requiere mucho y no es la gran innovación, pero lo que tiene éste (y es lo que realmente me gusta) es que el tablero está compuesto de 2 números int, que cómo es eso, estaba leyendo el forito la parte del reto y se me ocurrió, ¿en qué consiste un tablero?, en posición ocupada, eso lo puedo representar con un 0 o un 1 (1=ocupado, 0=no), que bien la máquina en su lógica almacena las cosas como 0's y 1's, ahora sólo distingo 2 estados, y éste juego requiere 3 (o sea, no ocupado, ficha jugador 1 y ficha jugador 2), entonces mi tablero está compuesto por:
  • Un entero que representa las posiciones del jugador 1
  • Otro entero que representa las posiciones del jugador 2

Hermoso, ahora sólo necesito poder trabajar con los bits de esos enteros, y C posee unos operadores para trabajar a nivel de bits (ok no es para ésto pero es una solución, además así pude entender bien cómo funcionan éstos operadores).
Para hacerme la vida más fácil, utilizo macros, muchas macros, F0C0 corresponde a la fila 0 columna 0, F1C2, corresponde a la fila 1 columna 2, en resumen FxCy corresponden a la fila x columna y.
Ahora:

Read more...

Download Opera, the fastest and most secure browser
December 2009
M T W T F S S
November 2009January 2010
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31