fork download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. static long double array[] = {
  6. 0.304411824158121,
  7. 0.702270983146229,
  8. 0.675987113307883,
  9. 0.652289676782947,
  10. 0.975411752562938,
  11. 0.284802741036713,
  12. 0.877898595240810,
  13. 0.726726914957288,
  14. 0.084725908720116,
  15. 0.946546040643011 };
  16.  
  17. static void rev_array( void *array, size_t nelem, size_t width )
  18. {
  19. size_t i = 0, j;
  20. char *data = ( char * )array;
  21. char *tmp = malloc( width );
  22.  
  23. for( i = 0, j = nelem - 1; i < j; i++, j-- ) {
  24. memcpy( tmp, data + j * width, width );
  25. memcpy( data + j * width, data + i * width, width );
  26. memcpy( data + i * width, tmp, width );
  27. }
  28. free( tmp );
  29. }
  30.  
  31. static void print_array( long double *array, size_t size )
  32. {
  33. size_t i;
  34. for( i = 0; i < size; i++ ) {
  35. printf( "%.15Lf\n", array[i] );
  36. }
  37. }
  38.  
  39. int main()
  40. {
  41. print_array( array, sizeof( array ) / sizeof( array[0] ) );
  42. rev_array( array, sizeof( array ) / sizeof( array[0] ), sizeof( array[0] ) );
  43. printf( "---\n" );
  44. print_array( array, sizeof( array ) / sizeof( array[0] ) );
  45. return 0;
  46. }
  47.  
Success #stdin #stdout 0s 2300KB
stdin
Standard input is empty
stdout
0.304411824158121
0.702270983146229
0.675987113307883
0.652289676782947
0.975411752562938
0.284802741036713
0.877898595240810
0.726726914957288
0.084725908720116
0.946546040643011
---
0.946546040643011
0.084725908720116
0.726726914957288
0.877898595240810
0.284802741036713
0.975411752562938
0.652289676782947
0.675987113307883
0.702270983146229
0.304411824158121