lunes, 19 de abril de 2010

Practica y apuntes

Se encuentra disponible para bajar la práctica y los apuntes de la materia.

Pido disculpas por la demora.

La dirección para bajar el archivo es:
Megaupload: http://www.megaupload.com/?d=C30Y10IB
Rapidshare : http://rapidshare.com/files/377757001/so2.rar.html
MediaFire : http://www.mediafire.com/?fq0tttmywlz

Lo puse en 3 hostings distintos por si llegan a tener problemas con alguno.

Saludos, Nicolás

martes, 6 de abril de 2010

Macro para Imprimir

Acá les dejo una macro que armé para poder imprimir en pantalla sin usar printf.
El código se basa en lo que la profesora escribió en clase, pero evita tener que andar copiando y pegando ese código por todos lados.

A falta de creatividad le puse de nombre printout. Se utiliza de la misma forma que el printf, con cero o más argumentos.

Ej:
printout("Hola mundo!\n");
printout("Mi nombre es %s, Mi PID es %d\n",argv[0],getpid());

Este és el codigo de la macro:

#define BUFFER_LEN 512
#define printout(_str, ...) \
do { \
char _buffer[BUFFER_LEN]; \
sprintf(_buffer, _str, ## __VA_ARGS__); \
write(fileno(stdout), _buffer, strlen(_buffer)); \
} while(0)

Recomiendo copiarla a un header (ej: printout.h) para ser incluido en todos los archivos que lo necesiten. Para que compile bien es necesario incluir los siguientes headers: string.h, stdio.h.

Les dejo también una variante que uso yo, que agrega al string el PID del proceso que llamó a ese printout.

#define BUFFER_LEN 512
#define printout(_str, ...) \
do { \
char _buffer[BUFFER_LEN]; \
sprintf(_buffer, "%6d: " _str, getpid(), ## __VA_ARGS__); \
write(fileno(stdout), _buffer, strlen(_buffer)); \
} while(0)

Cualquier duda que tengan pueden dejar un comentario o preguntarme en clase.

Saludos