swap.c : enteros y cadenas

A veces el tema de los punteros en c se puede convertir en una pesadilla, pero lo cierto es que no es tan complicado teniendo las ideas claras.
En ocasiones...
Para empezar, un array de caracteres que se pasa como argumento a una función, no es un paso de parametro por valor, y si se modifica, al retornar de la función los cambios estarán ahí.
Y en el caso de un swap de enteros, se pasan los parametros por referencia con el operador &. En una entrada anterior en el codeblog puse un swap de cadenas muy complicado, creo que este es más elegante.

/**
* swap.c
* Implementa dos versiónes de la función swap, una para intercambiar enteros
* y la otra para intercambiar arrays
* Compilacion: gcc -o swap swap.c
* 
* Pello Xabier Altadill Izura
*/

#include <stdio.h>


void swap(int *px, int *py);
void swaps(char a[], char b[]);

main ()
{
     int valor1 = 666;
     int valor2 = -34;
     char cadena1[] = "Esta es la primera cadena";
     char cadena2[] = "Esta es la segunda cadena";
     
     printf("Antes: valor1:%d  y valor2: %d
", valor1, valor2);
     /* Atención, los parametros deben ser las direcciones */
     swap(&valor1, &valor2);
     printf("Despues: valor1:%d  y valor2: %d
", valor1, valor2);
     
     printf("Antes: cadena1:%s  y cadena2: %s
", cadena1, cadena2);
     /* Atención, los parametros deben ser las direcciones */
     swaps(cadena1, cadena2);
     printf("Despues: cadena1:%s  y cadena2: %s
", cadena1, cadena2);
     
     

}

/* Implementación de SWAP */
void swap (int *px, int *py)
{
     int tmp;
     
     tmp = *px;
     *px = *py;
     *py = tmp;
}

/* Implementacion de swaps */
void swaps(char a[], char b[])
{
     int i;
     char tmp[2048];
     
     /* En el mismo array vamos asignando */
     for (i=0;(tmp[i]=a[i]) != '';i++);
     
     /* Y despues le metemos el final */
     tmp[i]='';

     for (i=0;(a[i]=b[i]) != '';i++);

     /* Y despues le metemos el final */
     a[i]='';
     
     for (i=0;(b[i]=tmp[i]) != '';i++);

     /* Y despues le metemos el final */
     b[i]='';
     
}




by Pello Altadill 07/15/2006 09:55:14 - 43781 hits

C# día 20: páginas Web

Bueno, me hubiera gustado terminar el día 6, pero han llegado los sanfermines y me ha pillado el toro. En fin. Veamos como se crea una página web con ASP.NET y C#. Por un lado se usan etiquetas especiales para los "componentes HTML" como las cajas de texto, botónes y etiquetas. Por otro se puede meter código C# dentro de etiquetas script, pero se ejecutan en el servidor claro. Y también se puede asociar una clase C# a la página, pero eso se escapa de esta introduci...

by Pello Altadill 07/07/2006 10:01:24 - 6177 hits

More »

C# día 19: Webservices

Vaya, pues esto de los webservices, con c# parece más fácil de lo esperado. Primero se crea una clase hija de WebService, atención a la extensión /** * Saluda.asmx * Ejemplo básico de webservice. * SE trata de una clase con un método accesible * como servicio web, un método que muestra el saludo standar * En el caso de IIS, cuelgaló en inetpub/wwwroot y verás que pasa: * se detecta el servicio ...

by Pello Altadill 07/05/2006 10:00:51 - 26204 hits

More »

C# día 18: acceso a BD

Acceso a BBDD con ADO.NET. Para ejemplos simples se puede usar un ficherillo de access o una conexión odbc cualquiera. La cosa no cambia mucho; /** * AccesoBD.cs * Clase para probar el acceso a BD desde C# * Se usa el ADO.NET * En este caso se prueba una select, pero las otras sentencias * se ejecutan del mismo modo, aunque sin guardar resultado en un DataReader claro. */ using System; // Para el acceso a BBDD using System.Data; using System.Data.OleDb; public class AccesoBD { // MÃÂ...

by Pello Altadill 07/04/2006 23:07:47 - 5268 hits

More »

Theme de wordpress

Bueno, para variar un poco que mejor que hacerse un theme de Wordpress. Puede resultar algo contradictorio hablar de eso en un blog tan descaradamente drupaliano como este, pero lo cierto es que hacer ese theme no es más que una excusa para poner en práctica (más bien en tela de juicio) los conocimientos de css, y más en concreto del posicionamiento de bloques. Lo malo es que cuando se te mete un diseño como este en la cabeza: ...

by Pello Altadill 07/04/2006 15:39:20 - 9540 hits

More »

Sunflowers theme for Wordpress 2

This is just another Wordpress theme. The design is based in sunflowers fields, with random pictures from som fields of Pamplona-Iruñea. This theme has a images/random directory where you can upload image files to be shown in header background. It uses a v...

by Pello Altadill 07/04/2006 15:01:57 - 4637 hits

More »

C# día 17: aplicaciones windows

Solo por encima vamos a ver algunos elementos más que podemos meter en las aplicaciones visuales con c#. Veamos algunos elementos nuevos /** * Elementos.cs * Ejemplo de uso de elementos de windows. * A la hora de compilar, para ejecutar como aplicación de windows * y para que no salga una ventana de DOS, hay que usar estas opciones * csc /t:winexe Formularios.cs o en su defecto * csc /r:System.Windows.Forms.dll /t:winexe Formularios.cs * */ // Usamos esta librería para los formu...

by Pello Altadill 07/03/2006 22:07:37 - 8596 hits

More »

C# dí­a 16: formularios windows

Bueno, pese a que este no es el tema que más interesa hay que verlo: el de las aplicaciones para entornos de ventanas. Hay que tener cuidado a la hora de compilar. Este tema se maneja en entornos Case o IDEs como Visual Studio. Veamos el ejemplo mínimo: /** * Formularios.cs * Ejemplo de uso de formularios windows. * A la hora de compilar, para ejecutar como aplicación de windows * y para que no salga una ventana de DOS, hay que usar estas opciones * csc /t:winexe Formularios.cs o...

by Pello Altadill 07/02/2006 21:14:44 - 3689 hits

More »

C# dí­a 15: clases útiles

Vamos a conocer algunas clases útiles de C#, presentes en cualquier otro lenguaje. Veamos el práctico temporizador con Timer /** * Temporizador.cs * Muestra el uso de la clase Timer para crear temporizadores. * Se puede asociar un evento a un temporizador para que el programa * reaccione al cabo de x tiempo. * Info sobre el standar http://msdn.microsoft.com/net/ecma */ using System; using System.Timers; // Vamos a usar El timer a través de nuestra clase temporizador publ...

by Pello Altadill 07/01/2006 22:44:20 - 19749 hits

More »