I noticed that the difference between linux and windows. strcmpi is in windows C standard libary implementation but it is not in GNU\'s C standard libary implementation. Is
Nope, it's a non-standard extension. Unix-like systems commonly have a strcasecmp
which performs the same task as MS's strcmpi
.
Nope, a quick CTRL+F in the standard returns nothing for strcmpi
. This means that it is a non-standard extension (of which both Windows and GNU have a lot).
The POSIX Standard (aka, UNIX) has strcasecmp() but it's not part of C99 / ISO-C.
Note: If you compare the above reference with e.g. the one for strcmp() you'll note that the latter explicitly references ISO-C, while the former does not. An useful feature of the OpenGroup references.
Edit: Since the locale-dependency was mentioned as a complication, see the above reference for strcasecmp_l()
which allows explicitly specifying the locale to be used for the conversion. Windows has _strcmpi_l() for the purpose, again keeping with its own naming conventions.