Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guidjos

[Resolvido] [Código] Trocar Valores - Genérico - C

Recommended Posts

Há algum tempo criei esta função, que troca os valores de quaisquer dois objetos de mesmo tipo. A função deve receber como argumentos os endereços dos dois objetos e o tamanho do tipo deles.

 

#include <stdlib.h>
#include <stdio.h>


void swap(char *a, char *b, int size)
{
  char swapbuff[size], *byte = a;
  int i;

  for (i = 0; i < size; i++)
     swapbuff[i] = *byte++;

  *a = *b;

  byte = b;   

  for (i = 0; i < size; i++)
     *byte++ = swapbuff[i];
}


int main(void)
{

  int um = 1, zero = 0;

  swap((char *) &um, (char *) &zero, sizeof (int));

  printf("\n\tum: %d\n\tzero: %d", um, zero);
  return 0;
}

 

Se acharem que o código fica muito poluído, podem usar uma macro para simplificar:

 

#include <stdlib.h>
#include <stdio.h>

#define inverter(X, Y) swap((char *) &X, (char *) &Y, sizeof X)

void swap(char *a, char *b, int size)
{
  char swapbuff[size], *byte = a;
  int i;

  for (i = 0; i < size; i++)
     swapbuff[i] = *byte++;

  *a = *b;

  byte = b;   

  for (i = 0; i < size; i++)
     *byte++ = swapbuff[i];
}


int main(void)
{

  int um = 1, zero = 0;

  inverter(um, zero);

  printf("\n\tum: %d\n\tzero: %d", um, zero);
  return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.