La respuesta al título de esta publicación es muy sencilla, conectarse a MySQL desde C se realiza mediante una API provista por el mismo proveedor de base de datos.
La API de C es ditribuida con MySQL, no es más que una librería (libmysqlclient) que interfacea entre el programa y la base de datos.
La documentación provista por MySQL es muy completa (MySQL C API), no obstante, fiel a nuestra costumbre iremos a un ejemplo sencillo y concreto.
Algo muy poco atractivo para muchos programadores que llegan a C/C++ luego de hacer experiencia en otros lenguajes es la asignación de memoria dinámica (punteros, mallocs y reallocs).
Repasemos un poco de teoría y luego veamos un ejemplo sencillo e indoloro
Luego de leer el artículo C/C++: Indicador de progreso de La plaga Tux, me vino a la mente ese indicador de progreso que tiene ese aspecto de “barrita” girando sobre su propio eje.
Entonces, tiempo libre mediante, en principio tomé el artículo original y porté el código de C++ a C (nada de otro mundo). Tal artículo me hizo recordar que hay vida más allá del \n recordándome el \r. Pero como una cosa va encadenada a la otra, también me hizo recordar el \b.
Para quienes hasta aquí me leen perdidos o necesitan un refresco de su memoria, les recuerdo que en el formato de impresión se pueden utilizar varias secuencias de control de cursor:
Con esto, ya tenemos todos los fundamentos para que puedas entender los ejemplos.
En la semana una noticia ocupó a la mayoría de los blogs: Go, un nuevo lenguaje de programación. La noticia hubiera pasado desapercibida de no ser porque Go es un nuevo lanzamiento de Google!
Go se promociona a si mismos como un lenguaje:
Los que me conocen me escucharán hablar mal de Microsoft en varios aspectos y por publicar este artículo no significa que pierda mi postura de los mismos.
Simplemente me pareció un aporte importante para aquella comunidad que utiliza los productos de Microsoft, pero que quieren dejar de estar fuera de la ley y empezar utilizar herramientas gratuitas.
Microsoft DreamSpark es una propuesta de Microsoft, especialmente dedicada a estudiantes de nivel superior, que ofrece sus herramientas de desarrolllo y diseño a nivel profesional y sin costo alguno.
Para aquellos anticuados como yo que en C, desde que descubrimos la varargs.h no podemos dejar de mandar un número de argumentos variables, hoy veremos que con Java también es posible.
El objetivo de un depurador es que le permite ver lo que está sucediendo dentro de otro programa mientras se ejecuta. Es útil para averiguar qué estaba haciendo otro programa en el momento en que “pinchó”. La mayoría de gente recomienda GNU gdb, Nemiver, valgrind o algún IDE como el Eclipse. Lo cierto, por increíble que parezca, es que mucha gente utiliza el viejo y querido printf(), por más que no sea la forma correcta y ortodoxa de debuguear.
Para quienes dan sus primeros pasos en C, pero que vienen de otros lenguajes de más alto nivel, se encontrarán con el faltante de varias funciones disponibles en otros lenguajes (ya sea como funciones o como métodos de algunas clases).
A continuación, pongo a vuestra disposición el código de algunas funciones que pueden resultar de utilidad: las clásicas funciones rtrim, ltrim y trim (para eliminar espacios a la derecha, izquierda y de ambos lados de una cadena) y de la función isNumeric para comprobar si un valor ingresado es numérico o no.
Además, para agregar un poco de valor agregado a la publicación convertiremos a estas funciones en una librería dinámica.
Los algoritmos recursivos no son un recurso tan utilizado por los programadores, inclusive, también se plantean discusiones acerca de algoritmos iterativos vs. recursivos.
Independientemente de la preferencia de cada uno de los programadores, la idea de esta publicación es mostrar con un ejemplo sencillo una misma función “potencia” escrita de ambas formas.