First, write a test function:
Code:
bool
arrays_equal(int *a1, size_t len. int * a2)
{
if (NULL == a1 || NULL == a2)
return len == 0; // equal for 0 elts, otherwise not equal
for (int i = 0; i < len; ++i)
if (a1[i] != a2[i])
return false;
return true;
}
Now write your main function to assert what you want to be true:
Code:
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L
#error "Need C11"
#endif
#define array_length(a) (sizeof (a) / sizeof (*a))
void reverse_array(int *, size_t);
int
main(void)
{
reverse_array(NULL, 0); // These had better do something!
reverse_array(NULL, 1); // Write a test case.
int a1[] = {1, 2, 3, 4, 5};
reverse_array(a1, array_length(a1));
assert(arrays_equal(a1, array_length(a1),
(int[]){5, 4, 3, 2, 1}));
int a2[] = {3, 7};
reverse_array(a2, array_length(a2));
assert(arrays_equal(a2, array_length(a2).
(int[]){7, 3}));
int a3[] = {5};
reverse_array(a3, array_length(a3));
assert(arrays_equal(a3, array_length(a3),
(int[]){5}));
int a4[] = {};
reverse_array(a4, array_length(a4));
assert(arrays_equal(a4, array_length(a4),
(int[]){5}));
}