original source from C Programming: A Modern Approach 2th edition by K. N. King