guidjos 65 Denunciar post Postado Dezembro 10, 2010 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