Answer: In early days of C, different implementations in order to enhance the performance of the program, improved the common library functions by modifying or extending their functionality. These changes nay have been useful for particular implementations for which they were made, but they inhibited portability because the code that depended on these changes would fail on other implementations that lacked them or had different modifications.
To maintain the concept of portability of code across a wide range of implementations, ANSI C implementations include library in specification. Standard dictates a mandated set of functions, which have required interface and they operate in prescribed manner. In addition, ANSI C implementations aren’t prohibited from adding additional non-standard functions in the library. In order to be able to write portable code be sure to use functions defined by the standard and avoid non-standard functions.
Sanfoundry Global Education & Learning Series – 1000 C Tutorials.