I have a JSON parser that sends a callback for every parsed key-value pair. I then use strncmp with statically allocated strings in my program to check if the field matches any of the fields I am interested in. I have now ended up with a dozen of strncmp in if-else statements:
if (strncmp(input, "apple", sizeof("apple")-1) == 0)
{// do something}
else if (strncmp(input, "banana", sizeof("banana")-1) == 0)
{// do something}
I'm not sure if this is an optimal/maintainable way of getting the job done. Is there a better way to do it? I already precompute the string lengths at compile time.
You could define an array of static strings:
And then loop over the array, looking if the string matches one on the elements of the array:
If you need to limit the size of the comparison, you could have an array a structures combining the name string + the size.
And if you need to do a different action for each one, you could include a function pointer in the structure to indicate what to do.