Is the defacto method for comparing arrays (in C) to use memcmp from string.h?
I want to compare arrays of ints and doubles in my unit tests
I am unsure whether to use something like:
double a[] = {1.0, 2.0, 3.0};
double b[] = {1.0, 2.0, 3.0};
size_t n = 3;
if (! memcmp(a, b, n * sizeof(double)))
/* arrays equal */
or to write a bespoke is_array_equal(a, b, n) type function?
memcmpwould do an exact comparison, which is seldom a good idea for floats, and would not follow the rule that NaN != NaN. For sorting, that’s fine, but for other purposes, you might to do an approximate comparison such as: