home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / book / xpg4ref.inf (.txt) < prev   
OS/2 Help File  |  1999-05-12  |  775KB  |  30,941 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. About This Book ΓòÉΓòÉΓòÉ
  3.  
  4. The C language is a general-purpose, function-oriented programming language 
  5. that you can use to create applications quickly and easily. C provides 
  6. high-level control statements and data types similar to other structured 
  7. programming languages as well as many of the benefits of a low-level language. 
  8. Portable code is easily written in the C language. 
  9.  
  10. This book describes the library functions provided by The IBM Developer's 
  11. Toolkit for OS/2 Warp Version 4 (referred to in this book as The Developer's 
  12. Toolkit) product. Many of the functions are defined by the following language 
  13. standards: 
  14.  
  15.      The American National Standards Institute C Standard and International 
  16.       Standards Organization, ANSI/ISO 9899-1990[1992], and the amendment 
  17.       ISO/IEC 9899:1990/Amendment 1:1993(E) 
  18.      The ISO/IEC 9945-1:1990/IEEE POSIX 1003.1-1990 standard 
  19.      The X/Open Common Applications Environment Specification, System 
  20.       Interfaces and Headers, Issue 4 
  21.      The IBM Systems Application Architecture (SAA) C Level 2 language 
  22.       definition. 
  23.  
  24.  Unless explicitly indicated otherwise, all of the library functions described 
  25.  in this book are also available to C++ programs. 
  26.  
  27.  
  28. ΓòÉΓòÉΓòÉ 1.1. Who Should Read This Book ΓòÉΓòÉΓòÉ
  29.  
  30. This book is written for application programmers who want to use the functions 
  31. and macros provided by The Developer's Toolkit to develop and run C and C++ 
  32. applications on the Operating System/2 (OS/2) platform. It assumes you have a 
  33. working knowledge of the C programming language and the OS/2 Warp Version 4 
  34. operating system. 
  35.  
  36.  
  37. ΓòÉΓòÉΓòÉ 1.2. Portability Considerations ΓòÉΓòÉΓòÉ
  38.  
  39. If you will be using The Developer's Toolkit to develop applications that will 
  40. also be compiled and run on other systems, you should refer to the current 
  41. language standards described in Preface above. 
  42.  
  43. The language level is given for each function in Library Functions. When 
  44. creating programs to conform strictly to language standards such as ANSI/ISO or 
  45. POSIX, do not use the functions described as extensions in this book. 
  46.  
  47.  
  48. ΓòÉΓòÉΓòÉ 2. The C Library ΓòÉΓòÉΓòÉ
  49.  
  50. This chapter summarizes the available C library functions and indicates where 
  51. in this book each is described. It also briefly describes what the function 
  52. does. Each library function is listed according to the type of function it 
  53. performs. 
  54.  
  55.  
  56. ΓòÉΓòÉΓòÉ 2.1. Summary of Library Functions ΓòÉΓòÉΓòÉ
  57.  
  58. The functions described in this book are listed according to the following 
  59. tasks they perform: 
  60.  
  61.  
  62. ΓòÉΓòÉΓòÉ 2.1.1. Error Handling ΓòÉΓòÉΓòÉ
  63.  
  64. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  65. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  66. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  67. Γöé assert          Γöé "assert.h"  Γöé assert          Γöé Prints   Γöé
  68. Γöé             Γöé        Γöé             Γöé diag-   Γöé
  69. Γöé             Γöé        Γöé             Γöé nostic   Γöé
  70. Γöé             Γöé        Γöé             Γöé messages. Γöé
  71. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  72. Γöé atexit          Γöé "stdlib.h"  Γöé atexit          Γöé Registers Γöé
  73. Γöé             Γöé        Γöé             Γöé a func-  Γöé
  74. Γöé             Γöé        Γöé             Γöé tion to  Γöé
  75. Γöé             Γöé        Γöé             Γöé be exe-  Γöé
  76. Γöé             Γöé        Γöé             Γöé cuted at  Γöé
  77. Γöé             Γöé        Γöé             Γöé program  Γöé
  78. Γöé             Γöé        Γöé             Γöé termi-   Γöé
  79. Γöé             Γöé        Γöé             Γöé nation.  Γöé
  80. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  81. Γöé clearerr         Γöé "stdio.h"   Γöé clearerr         Γöé Resets   Γöé
  82. Γöé             Γöé        Γöé             Γöé error   Γöé
  83. Γöé             Γöé        Γöé             Γöé indica-  Γöé
  84. Γöé             Γöé        Γöé             Γöé tors.   Γöé
  85. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  86. Γöé ferror          Γöé "stdio.h"   Γöé ferror          Γöé Tests the Γöé
  87. Γöé             Γöé        Γöé             Γöé error   Γöé
  88. Γöé             Γöé        Γöé             Γöé indicator Γöé
  89. Γöé             Γöé        Γöé             Γöé for a   Γöé
  90. Γöé             Γöé        Γöé             Γöé specified Γöé
  91. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  92. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  93. Γöé _matherr         Γöé "math.h"   Γöé _matherr         Γöé Processes Γöé
  94. Γöé             Γöé        Γöé             Γöé errors   Γöé
  95. Γöé             Γöé        Γöé             Γöé generated Γöé
  96. Γöé             Γöé        Γöé             Γöé by the   Γöé
  97. Γöé             Γöé        Γöé             Γöé functions Γöé
  98. Γöé             Γöé        Γöé             Γöé in the   Γöé
  99. Γöé             Γöé        Γöé             Γöé math    Γöé
  100. Γöé             Γöé        Γöé             Γöé library.  Γöé
  101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  102. Γöé perror          Γöé "stdio.h"   Γöé perror          Γöé Prints an Γöé
  103. Γöé             Γöé        Γöé             Γöé error   Γöé
  104. Γöé             Γöé        Γöé             Γöé message  Γöé
  105. Γöé             Γöé        Γöé             Γöé to     Γöé
  106. Γöé             Γöé        Γöé             Γöé stderr.  Γöé
  107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  108. Γöé raise          Γöé "signal.h"  Γöé raise          Γöé Initiates Γöé
  109. Γöé             Γöé        Γöé             Γöé a signal. Γöé
  110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  111. Γöé _set_crt_msg_handle   Γöé "stdio.h"   Γöé _set_crt_msg_handle   Γöé Changes  Γöé
  112. Γöé             Γöé        Γöé             Γöé the file  Γöé
  113. Γöé             Γöé        Γöé             Γöé handle to Γöé
  114. Γöé             Γöé        Γöé             Γöé which   Γöé
  115. Γöé             Γöé        Γöé             Γöé run-time  Γöé
  116. Γöé             Γöé        Γöé             Γöé messages  Γöé
  117. Γöé             Γöé        Γöé             Γöé are sent. Γöé
  118. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  119. Γöé signal          Γöé "signal.h"  Γöé signal          Γöé Allows   Γöé
  120. Γöé             Γöé        Γöé             Γöé handling  Γöé
  121. Γöé             Γöé        Γöé             Γöé of an   Γöé
  122. Γöé             Γöé        Γöé             Γöé interrupt Γöé
  123. Γöé             Γöé        Γöé             Γöé signal   Γöé
  124. Γöé             Γöé        Γöé             Γöé from the  Γöé
  125. Γöé             Γöé        Γöé             Γöé operating Γöé
  126. Γöé             Γöé        Γöé             Γöé system.  Γöé
  127. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  128. Γöé strerror         Γöé "string.h"  Γöé strerror         Γöé Sets    Γöé
  129. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  130. Γöé             Γöé        Γöé             Γöé to system Γöé
  131. Γöé             Γöé        Γöé             Γöé error   Γöé
  132. Γöé             Γöé        Γöé             Γöé message.  Γöé
  133. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  134. Γöé _strerror        Γöé "string.h"  Γöé _strerror        Γöé Tests for Γöé
  135. Γöé             Γöé        Γöé             Γöé system   Γöé
  136. Γöé             Γöé        Γöé             Γöé error.   Γöé
  137. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  138.  
  139.  
  140. ΓòÉΓòÉΓòÉ 2.1.2. Process Control ΓòÉΓòÉΓòÉ
  141.  
  142. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  143. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  144. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  145. Γöé _beginthread       Γöé "stdlib.h""  Γöé _beginthread       Γöé Creates a Γöé
  146. Γöé             Γöé process.h"  Γöé             Γöé new    Γöé
  147. Γöé             Γöé        Γöé             Γöé thread.  Γöé
  148. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  149. Γöé _cwait          Γöé "process.h"  Γöé _cwait          Γöé Delays   Γöé
  150. Γöé             Γöé        Γöé             Γöé the com-  Γöé
  151. Γöé             Γöé        Γöé             Γöé pletion  Γöé
  152. Γöé             Γöé        Γöé             Γöé of a    Γöé
  153. Γöé             Γöé        Γöé             Γöé parent   Γöé
  154. Γöé             Γöé        Γöé             Γöé process  Γöé
  155. Γöé             Γöé        Γöé             Γöé until a  Γöé
  156. Γöé             Γöé        Γöé             Γöé child   Γöé
  157. Γöé             Γöé        Γöé             Γöé process  Γöé
  158. Γöé             Γöé        Γöé             Γöé ends.   Γöé
  159. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  160. Γöé _endthread        Γöé "stdlib.h""  Γöé _endthread        Γöé Termi-   Γöé
  161. Γöé             Γöé process.h"  Γöé             Γöé nates a  Γöé
  162. Γöé             Γöé        Γöé             Γöé thread.  Γöé
  163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  164. Γöé execl - _execvpe     Γöé "process.h"  Γöé execl - _execvpe     Γöé Load and  Γöé
  165. Γöé             Γöé        Γöé             Γöé run child Γöé
  166. Γöé             Γöé        Γöé             Γöé proc-   Γöé
  167. Γöé             Γöé        Γöé             Γöé esses.   Γöé
  168. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  169. Γöé _exit          Γöé "stdlib.h""  Γöé _exit          Γöé Ends the  Γöé
  170. Γöé             Γöé process.h"  Γöé             Γöé calling  Γöé
  171. Γöé             Γöé        Γöé             Γöé process  Γöé
  172. Γöé             Γöé        Γöé             Γöé without  Γöé
  173. Γöé             Γöé        Γöé             Γöé calling  Γöé
  174. Γöé             Γöé        Γöé             Γöé other   Γöé
  175. Γöé             Γöé        Γöé             Γöé func-   Γöé
  176. Γöé             Γöé        Γöé             Γöé tions.   Γöé
  177. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  178. Γöé getpid          Γöé "process.h"  Γöé getpid          Γöé Gets the  Γöé
  179. Γöé             Γöé        Γöé             Γöé process  Γöé
  180. Γöé             Γöé        Γöé             Γöé identi-  Γöé
  181. Γöé             Γöé        Γöé             Γöé fier that Γöé
  182. Γöé             Γöé        Γöé             Γöé identi-  Γöé
  183. Γöé             Γöé        Γöé             Γöé fies the  Γöé
  184. Γöé             Γöé        Γöé             Γöé calling  Γöé
  185. Γöé             Γöé        Γöé             Γöé process.  Γöé
  186. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  187. Γöé _onexit         Γöé "stdlib.h"  Γöé _onexit         Γöé Records  Γöé
  188. Γöé             Γöé        Γöé             Γöé the    Γöé
  189. Γöé             Γöé        Γöé             Γöé address  Γöé
  190. Γöé             Γöé        Γöé             Γöé of a    Γöé
  191. Γöé             Γöé        Γöé             Γöé function  Γöé
  192. Γöé             Γöé        Γöé             Γöé to call  Γöé
  193. Γöé             Γöé        Γöé             Γöé when the  Γöé
  194. Γöé             Γöé        Γöé             Γöé program  Γöé
  195. Γöé             Γöé        Γöé             Γöé ends.   Γöé
  196. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  197. Γöé putenv          Γöé "stdlib.h"  Γöé putenv          Γöé Adds new  Γöé
  198. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  199. Γöé             Γöé        Γöé             Γöé ment var- Γöé
  200. Γöé             Γöé        Γöé             Γöé iables or Γöé
  201. Γöé             Γöé        Γöé             Γöé modifies  Γöé
  202. Γöé             Γöé        Γöé             Γöé the    Γöé
  203. Γöé             Γöé        Γöé             Γöé values of Γöé
  204. Γöé             Γöé        Γöé             Γöé those   Γöé
  205. Γöé             Γöé        Γöé             Γöé already  Γöé
  206. Γöé             Γöé        Γöé             Γöé existing. Γöé
  207. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  208. Γöé _searchenv        Γöé "stdlib.h"  Γöé _searchenv        Γöé Searches  Γöé
  209. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  210. Γöé             Γöé        Γöé             Γöé fied    Γöé
  211. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  212. Γöé             Γöé        Γöé             Γöé ment for  Γöé
  213. Γöé             Γöé        Γöé             Γöé a target  Γöé
  214. Γöé             Γöé        Γöé             Γöé file.   Γöé
  215. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  216. Γöé _spawnl - _spawnvpe   Γöé "process.h"  Γöé _spawnl - _spawnvpe   Γöé Start and Γöé
  217. Γöé             Γöé        Γöé             Γöé run child Γöé
  218. Γöé             Γöé        Γöé             Γöé proc-   Γöé
  219. Γöé             Γöé        Γöé             Γöé esses.   Γöé
  220. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  221. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  222. Γöé _threadstore       Γöé "stdlib.h"  Γöé _threadstore       Γöé Accesses  Γöé
  223. Γöé             Γöé        Γöé             Γöé a thread- Γöé
  224. Γöé             Γöé        Γöé             Γöé specific  Γöé
  225. Γöé             Γöé        Γöé             Γöé storage  Γöé
  226. Γöé             Γöé        Γöé             Γöé space.   Γöé
  227. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  228.  
  229.  
  230. ΓòÉΓòÉΓòÉ 2.1.3. File and Directory Management ΓòÉΓòÉΓòÉ
  231.  
  232. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  233. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  234. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  235. Γöé chdir          Γöé "direct.h"  Γöé chdir          Γöé Changes  Γöé
  236. Γöé             Γöé        Γöé             Γöé the    Γöé
  237. Γöé             Γöé        Γöé             Γöé current  Γöé
  238. Γöé             Γöé        Γöé             Γöé working  Γöé
  239. Γöé             Γöé        Γöé             Γöé directory Γöé
  240. Γöé             Γöé        Γöé             Γöé to a    Γöé
  241. Γöé             Γöé        Γöé             Γöé specified Γöé
  242. Γöé             Γöé        Γöé             Γöé direc-   Γöé
  243. Γöé             Γöé        Γöé             Γöé tory.   Γöé
  244. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  245. Γöé _chdrive         Γöé "direct.h"  Γöé _chdrive         Γöé Changes  Γöé
  246. Γöé             Γöé        Γöé             Γöé the    Γöé
  247. Γöé             Γöé        Γöé             Γöé current  Γöé
  248. Γöé             Γöé        Γöé             Γöé working  Γöé
  249. Γöé             Γöé        Γöé             Γöé drive to  Γöé
  250. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  251. Γöé             Γöé        Γöé             Γöé fied    Γöé
  252. Γöé             Γöé        Γöé             Γöé drive.   Γöé
  253. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  254. Γöé fstat          Γöé "sys\stat.h" Γöé fstat          Γöé Gets and  Γöé
  255. Γöé             Γöé        Γöé             Γöé stores   Γöé
  256. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  257. Γöé             Γöé        Γöé             Γöé tion    Γöé
  258. Γöé             Γöé        Γöé             Γöé about the Γöé
  259. Γöé             Γöé        Γöé             Γöé open    Γöé
  260. Γöé             Γöé        Γöé             Γöé file.   Γöé
  261. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  262. Γöé _fullpath        Γöé "stdlib.h"  Γöé _fullpath        Γöé Gets and  Γöé
  263. Γöé             Γöé        Γöé             Γöé stores   Γöé
  264. Γöé             Γöé        Γöé             Γöé the full  Γöé
  265. Γöé             Γöé        Γöé             Γöé path name Γöé
  266. Γöé             Γöé        Γöé             Γöé of a    Γöé
  267. Γöé             Γöé        Γöé             Γöé given   Γöé
  268. Γöé             Γöé        Γöé             Γöé partial  Γöé
  269. Γöé             Γöé        Γöé             Γöé path.   Γöé
  270. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  271. Γöé _getcwd         Γöé "direct.h"  Γöé _getcwd         Γöé Gets the  Γöé
  272. Γöé             Γöé        Γöé             Γöé full path Γöé
  273. Γöé             Γöé        Γöé             Γöé name of  Γöé
  274. Γöé             Γöé        Γöé             Γöé the    Γöé
  275. Γöé             Γöé        Γöé             Γöé current  Γöé
  276. Γöé             Γöé        Γöé             Γöé working  Γöé
  277. Γöé             Γöé        Γöé             Γöé direc-   Γöé
  278. Γöé             Γöé        Γöé             Γöé tory.   Γöé
  279. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  280. Γöé _getdcwd         Γöé "direct.h"  Γöé _getdcwd         Γöé Gets the  Γöé
  281. Γöé             Γöé        Γöé             Γöé full path Γöé
  282. Γöé             Γöé        Γöé             Γöé name for  Γöé
  283. Γöé             Γöé        Γöé             Γöé the    Γöé
  284. Γöé             Γöé        Γöé             Γöé current  Γöé
  285. Γöé             Γöé        Γöé             Γöé directory Γöé
  286. Γöé             Γöé        Γöé             Γöé of a    Γöé
  287. Γöé             Γöé        Γöé             Γöé specified Γöé
  288. Γöé             Γöé        Γöé             Γöé drive.   Γöé
  289. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  290. Γöé _getdrive        Γöé "direct.h"  Γöé _getdrive        Γöé Returns  Γöé
  291. Γöé             Γöé        Γöé             Γöé an     Γöé
  292. Γöé             Γöé        Γöé             Γöé integer  Γöé
  293. Γöé             Γöé        Γöé             Γöé corre-   Γöé
  294. Γöé             Γöé        Γöé             Γöé sponding  Γöé
  295. Γöé             Γöé        Γöé             Γöé to the   Γöé
  296. Γöé             Γöé        Γöé             Γöé letter   Γöé
  297. Γöé             Γöé        Γöé             Γöé repres-  Γöé
  298. Γöé             Γöé        Γöé             Γöé enting   Γöé
  299. Γöé             Γöé        Γöé             Γöé the    Γöé
  300. Γöé             Γöé        Γöé             Γöé current  Γöé
  301. Γöé             Γöé        Γöé             Γöé drive.   Γöé
  302. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  303. Γöé _makepath        Γöé "stdlib.h"  Γöé _makepath        Γöé Creates a Γöé
  304. Γöé             Γöé        Γöé             Γöé single   Γöé
  305. Γöé             Γöé        Γöé             Γöé path    Γöé
  306. Γöé             Γöé        Γöé             Γöé name.   Γöé
  307. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  308. Γöé mkdir          Γöé "direct.h"  Γöé mkdir          Γöé Creates a Γöé
  309. Γöé             Γöé        Γöé             Γöé new    Γöé
  310. Γöé             Γöé        Γöé             Γöé direc-   Γöé
  311. Γöé             Γöé        Γöé             Γöé tory.   Γöé
  312. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  313. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  314. Γöé rmdir          Γöé "direct.h"  Γöé rmdir          Γöé Deletes a Γöé
  315. Γöé             Γöé        Γöé             Γöé direc-   Γöé
  316. Γöé             Γöé        Γöé             Γöé tory.   Γöé
  317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  318. Γöé _splitpath        Γöé "stdlib.h"  Γöé _splitpath        Γöé Decom-   Γöé
  319. Γöé             Γöé        Γöé             Γöé poses a  Γöé
  320. Γöé             Γöé        Γöé             Γöé path name Γöé
  321. Γöé             Γöé        Γöé             Γöé into its  Γöé
  322. Γöé             Γöé        Γöé             Γöé four com- Γöé
  323. Γöé             Γöé        Γöé             Γöé ponents.  Γöé
  324. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  325. Γöé stat           Γöé "sys\stat.h" Γöé stat           Γöé Stores   Γöé
  326. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  327. Γöé             Γöé        Γöé             Γöé tion    Γöé
  328. Γöé             Γöé        Γöé             Γöé about a  Γöé
  329. Γöé             Γöé        Γöé             Γöé file or  Γöé
  330. Γöé             Γöé        Γöé             Γöé directory Γöé
  331. Γöé             Γöé        Γöé             Γöé in a    Γöé
  332. Γöé             Γöé        Γöé             Γöé struc-   Γöé
  333. Γöé             Γöé        Γöé             Γöé ture.   Γöé
  334. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  335.  
  336.  
  337. ΓòÉΓòÉΓòÉ 2.1.4. Searching and Sorting ΓòÉΓòÉΓòÉ
  338.  
  339. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  340. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  341. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  342. Γöé bsearch         Γöé "stdlib.h""  Γöé bsearch         Γöé Performs  Γöé
  343. Γöé             Γöé search.h"   Γöé             Γöé a binary  Γöé
  344. Γöé             Γöé        Γöé             Γöé search of Γöé
  345. Γöé             Γöé        Γöé             Γöé a sorted  Γöé
  346. Γöé             Γöé        Γöé             Γöé array.   Γöé
  347. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  348. Γöé lfind          Γöé "search.h"  Γöé lfind - lsearch     Γöé Performs  Γöé
  349. Γöé             Γöé        Γöé             Γöé a linear  Γöé
  350. Γöé             Γöé        Γöé             Γöé search   Γöé
  351. Γöé             Γöé        Γöé             Γöé for a   Γöé
  352. Γöé             Γöé        Γöé             Γöé value in  Γöé
  353. Γöé             Γöé        Γöé             Γöé an array. Γöé
  354. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  355. Γöé lsearch         Γöé "search.h"  Γöé lfind - lsearch     Γöé Performs  Γöé
  356. Γöé             Γöé        Γöé             Γöé a linear  Γöé
  357. Γöé             Γöé        Γöé             Γöé search   Γöé
  358. Γöé             Γöé        Γöé             Γöé for a   Γöé
  359. Γöé             Γöé        Γöé             Γöé value in  Γöé
  360. Γöé             Γöé        Γöé             Γöé an array. Γöé
  361. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  362. Γöé qsort          Γöé "stdlib.h""  Γöé qsort          Γöé Performs  Γöé
  363. Γöé             Γöé search.h"   Γöé             Γöé a quick  Γöé
  364. Γöé             Γöé        Γöé             Γöé sort on  Γöé
  365. Γöé             Γöé        Γöé             Γöé an array  Γöé
  366. Γöé             Γöé        Γöé             Γöé of ele-  Γöé
  367. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  368. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  369.  
  370.  
  371. ΓòÉΓòÉΓòÉ 2.1.5. Regular Expressions ΓòÉΓòÉΓòÉ
  372.  
  373. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  374. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  375. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  376. Γöé regcomp         Γöé "regex.h"   Γöé regcomp         Γöé Compiles  Γöé
  377. Γöé             Γöé        Γöé             Γöé a source  Γöé
  378. Γöé             Γöé        Γöé             Γöé regular  Γöé
  379. Γöé             Γöé        Γöé             Γöé expressionΓöé
  380. Γöé             Γöé        Γöé             Γöé into an  Γöé
  381. Γöé             Γöé        Γöé             Γöé execut-  Γöé
  382. Γöé             Γöé        Γöé             Γöé able    Γöé
  383. Γöé             Γöé        Γöé             Γöé version.  Γöé
  384. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  385. Γöé regerror         Γöé "regex.h"   Γöé regerror         Γöé Finds the Γöé
  386. Γöé             Γöé        Γöé             Γöé descriptioΓöé
  387. Γöé             Γöé        Γöé             Γöé for the  Γöé
  388. Γöé             Γöé        Γöé             Γöé error   Γöé
  389. Γöé             Γöé        Γöé             Γöé code for  Γöé
  390. Γöé             Γöé        Γöé             Γöé a regular Γöé
  391. Γöé             Γöé        Γöé             Γöé expressionΓöé
  392. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  393. Γöé regexec         Γöé "regex.h"   Γöé regexec         Γöé Compares  Γöé
  394. Γöé             Γöé        Γöé             Γöé a string  Γöé
  395. Γöé             Γöé        Γöé             Γöé with a   Γöé
  396. Γöé             Γöé        Γöé             Γöé regular  Γöé
  397. Γöé             Γöé        Γöé             Γöé expressionΓöé
  398. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  399. Γöé regfree         Γöé "regex.h"   Γöé regfree         Γöé Frees the Γöé
  400. Γöé             Γöé        Γöé             Γöé memory   Γöé
  401. Γöé             Γöé        Γöé             Γöé for a   Γöé
  402. Γöé             Γöé        Γöé             Γöé regular  Γöé
  403. Γöé             Γöé        Γöé             Γöé expressionΓöé
  404. Γöé             Γöé        Γöé             Γöé removing  Γöé
  405. Γöé             Γöé        Γöé             Γöé the com-  Γöé
  406. Γöé             Γöé        Γöé             Γöé piled   Γöé
  407. Γöé             Γöé        Γöé             Γöé regular  Γöé
  408. Γöé             Γöé        Γöé             Γöé expressionΓöé
  409. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  410.  
  411.  
  412. ΓòÉΓòÉΓòÉ 2.1.6. Mathematical ΓòÉΓòÉΓòÉ
  413.  
  414. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  415. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  416. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  417. Γöé abs           Γöé "stdlib.h"  Γöé abs           Γöé Calcu-   Γöé
  418. Γöé             Γöé        Γöé             Γöé lates the Γöé
  419. Γöé             Γöé        Γöé             Γöé absolute  Γöé
  420. Γöé             Γöé        Γöé             Γöé value of  Γöé
  421. Γöé             Γöé        Γöé             Γöé an     Γöé
  422. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  423. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  424. Γöé ceil           Γöé "math.h"   Γöé ceil           Γöé Calcu-   Γöé
  425. Γöé             Γöé        Γöé             Γöé lates the Γöé
  426. Γöé             Γöé        Γöé             Γöé double   Γöé
  427. Γöé             Γöé        Γöé             Γöé value   Γöé
  428. Γöé             Γöé        Γöé             Γöé repres-  Γöé
  429. Γöé             Γöé        Γöé             Γöé enting   Γöé
  430. Γöé             Γöé        Γöé             Γöé the    Γöé
  431. Γöé             Γöé        Γöé             Γöé smallest  Γöé
  432. Γöé             Γöé        Γöé             Γöé integer  Γöé
  433. Γöé             Γöé        Γöé             Γöé that is  Γöé
  434. Γöé             Γöé        Γöé             Γöé greater  Γöé
  435. Γöé             Γöé        Γöé             Γöé than or  Γöé
  436. Γöé             Γöé        Γöé             Γöé equal to  Γöé
  437. Γöé             Γöé        Γöé             Γöé a number. Γöé
  438. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  439. Γöé div           Γöé "stdlib.h"  Γöé div           Γöé Calcu-   Γöé
  440. Γöé             Γöé        Γöé             Γöé lates the Γöé
  441. Γöé             Γöé        Γöé             Γöé quotient  Γöé
  442. Γöé             Γöé        Γöé             Γöé and    Γöé
  443. Γöé             Γöé        Γöé             Γöé remainder Γöé
  444. Γöé             Γöé        Γöé             Γöé of an   Γöé
  445. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  446. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  447. Γöé erf           Γöé "math.h"   Γöé erf  - erfc       Γöé Calcu-   Γöé
  448. Γöé             Γöé        Γöé             Γöé lates the Γöé
  449. Γöé             Γöé        Γöé             Γöé error   Γöé
  450. Γöé             Γöé        Γöé             Γöé function. Γöé
  451. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  452. Γöé erfc           Γöé "math.h"   Γöé erf  - erfc       Γöé Calcu-   Γöé
  453. Γöé             Γöé        Γöé             Γöé lates the Γöé
  454. Γöé             Γöé        Γöé             Γöé error   Γöé
  455. Γöé             Γöé        Γöé             Γöé function  Γöé
  456. Γöé             Γöé        Γöé             Γöé for large Γöé
  457. Γöé             Γöé        Γöé             Γöé numbers.  Γöé
  458. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  459. Γöé exp           Γöé "math.h"   Γöé exp           Γöé Calcu-   Γöé
  460. Γöé             Γöé        Γöé             Γöé lates an  Γöé
  461. Γöé             Γöé        Γöé             Γöé exponen-  Γöé
  462. Γöé             Γöé        Γöé             Γöé tial    Γöé
  463. Γöé             Γöé        Γöé             Γöé function. Γöé
  464. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  465. Γöé fabs           Γöé "math.h"   Γöé fabs           Γöé Calcu-   Γöé
  466. Γöé             Γöé        Γöé             Γöé lates the Γöé
  467. Γöé             Γöé        Γöé             Γöé absolute  Γöé
  468. Γöé             Γöé        Γöé             Γöé value of  Γöé
  469. Γöé             Γöé        Γöé             Γöé a     Γöé
  470. Γöé             Γöé        Γöé             Γöé floating- Γöé
  471. Γöé             Γöé        Γöé             Γöé point   Γöé
  472. Γöé             Γöé        Γöé             Γöé number.  Γöé
  473. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  474. Γöé floor          Γöé "math.h"   Γöé floor          Γöé Calcu-   Γöé
  475. Γöé             Γöé        Γöé             Γöé lates the Γöé
  476. Γöé             Γöé        Γöé             Γöé double   Γöé
  477. Γöé             Γöé        Γöé             Γöé value   Γöé
  478. Γöé             Γöé        Γöé             Γöé repres-  Γöé
  479. Γöé             Γöé        Γöé             Γöé enting   Γöé
  480. Γöé             Γöé        Γöé             Γöé the    Γöé
  481. Γöé             Γöé        Γöé             Γöé largest  Γöé
  482. Γöé             Γöé        Γöé             Γöé integer  Γöé
  483. Γöé             Γöé        Γöé             Γöé that is  Γöé
  484. Γöé             Γöé        Γöé             Γöé less than Γöé
  485. Γöé             Γöé        Γöé             Γöé or equal  Γöé
  486. Γöé             Γöé        Γöé             Γöé to a    Γöé
  487. Γöé             Γöé        Γöé             Γöé number.  Γöé
  488. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  489. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  490. Γöé fmod           Γöé "math.h"   Γöé fmod           Γöé Calcu-   Γöé
  491. Γöé             Γöé        Γöé             Γöé lates the Γöé
  492. Γöé             Γöé        Γöé             Γöé floating  Γöé
  493. Γöé             Γöé        Γöé             Γöé point   Γöé
  494. Γöé             Γöé        Γöé             Γöé remainder Γöé
  495. Γöé             Γöé        Γöé             Γöé of one   Γöé
  496. Γöé             Γöé        Γöé             Γöé argument  Γöé
  497. Γöé             Γöé        Γöé             Γöé divided  Γöé
  498. Γöé             Γöé        Γöé             Γöé by     Γöé
  499. Γöé             Γöé        Γöé             Γöé another.  Γöé
  500. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  501. Γöé frexp          Γöé "math.h"   Γöé frexp          Γöé Separates Γöé
  502. Γöé             Γöé        Γöé             Γöé a     Γöé
  503. Γöé             Γöé        Γöé             Γöé floating- Γöé
  504. Γöé             Γöé        Γöé             Γöé point   Γöé
  505. Γöé             Γöé        Γöé             Γöé number   Γöé
  506. Γöé             Γöé        Γöé             Γöé into its  Γöé
  507. Γöé             Γöé        Γöé             Γöé mantissa  Γöé
  508. Γöé             Γöé        Γöé             Γöé and expo- Γöé
  509. Γöé             Γöé        Γöé             Γöé nent.   Γöé
  510. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  511. Γöé gamma          Γöé "math.h"   Γöé gamma          Γöé Calcu-   Γöé
  512. Γöé             Γöé        Γöé             Γöé lates the Γöé
  513. Γöé             Γöé        Γöé             Γöé gamma   Γöé
  514. Γöé             Γöé        Γöé             Γöé function. Γöé
  515. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  516. Γöé hypot          Γöé "math.h"   Γöé hypot          Γöé Calcu-   Γöé
  517. Γöé             Γöé        Γöé             Γöé lates the Γöé
  518. Γöé             Γöé        Γöé             Γöé hypotenuseΓöé
  519. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  520. Γöé labs           Γöé "stdlib.h"  Γöé labs           Γöé Calcu-   Γöé
  521. Γöé             Γöé        Γöé             Γöé lates the Γöé
  522. Γöé             Γöé        Γöé             Γöé absolute  Γöé
  523. Γöé             Γöé        Γöé             Γöé value of  Γöé
  524. Γöé             Γöé        Γöé             Γöé a long   Γöé
  525. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  526. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  527. Γöé ldexp          Γöé "math.h"   Γöé ldexp          Γöé Multi-   Γöé
  528. Γöé             Γöé        Γöé             Γöé plies a  Γöé
  529. Γöé             Γöé        Γöé             Γöé floating- Γöé
  530. Γöé             Γöé        Γöé             Γöé point   Γöé
  531. Γöé             Γöé        Γöé             Γöé number by Γöé
  532. Γöé             Γöé        Γöé             Γöé an inte-  Γöé
  533. Γöé             Γöé        Γöé             Γöé gral    Γöé
  534. Γöé             Γöé        Γöé             Γöé power of  Γöé
  535. Γöé             Γöé        Γöé             Γöé 2.     Γöé
  536. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  537. Γöé ldiv           Γöé "stdlib.h"  Γöé ldiv           Γöé Calcu-   Γöé
  538. Γöé             Γöé        Γöé             Γöé lates the Γöé
  539. Γöé             Γöé        Γöé             Γöé quotient  Γöé
  540. Γöé             Γöé        Γöé             Γöé and    Γöé
  541. Γöé             Γöé        Γöé             Γöé remainder Γöé
  542. Γöé             Γöé        Γöé             Γöé of a long Γöé
  543. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  544. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  545. Γöé log           Γöé "math.h"   Γöé log           Γöé Calcu-   Γöé
  546. Γöé             Γöé        Γöé             Γöé lates   Γöé
  547. Γöé             Γöé        Γöé             Γöé natural  Γöé
  548. Γöé             Γöé        Γöé             Γöé loga-   Γöé
  549. Γöé             Γöé        Γöé             Γöé rithm.   Γöé
  550. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  551. Γöé log10          Γöé "math.h"   Γöé log10          Γöé Calcu-   Γöé
  552. Γöé             Γöé        Γöé             Γöé lates   Γöé
  553. Γöé             Γöé        Γöé             Γöé base 10  Γöé
  554. Γöé             Γöé        Γöé             Γöé loga-   Γöé
  555. Γöé             Γöé        Γöé             Γöé rithm.   Γöé
  556. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  557. Γöé max           Γöé "stdlib.h"  Γöé max           Γöé Compares  Γöé
  558. Γöé             Γöé        Γöé             Γöé two    Γöé
  559. Γöé             Γöé        Γöé             Γöé values   Γöé
  560. Γöé             Γöé        Γöé             Γöé and    Γöé
  561. Γöé             Γöé        Γöé             Γöé returns  Γöé
  562. Γöé             Γöé        Γöé             Γöé the    Γöé
  563. Γöé             Γöé        Γöé             Γöé larger of Γöé
  564. Γöé             Γöé        Γöé             Γöé the two.  Γöé
  565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  566. Γöé min           Γöé "stdlib.h"  Γöé min           Γöé Compares  Γöé
  567. Γöé             Γöé        Γöé             Γöé two    Γöé
  568. Γöé             Γöé        Γöé             Γöé values   Γöé
  569. Γöé             Γöé        Γöé             Γöé and    Γöé
  570. Γöé             Γöé        Γöé             Γöé returns  Γöé
  571. Γöé             Γöé        Γöé             Γöé the    Γöé
  572. Γöé             Γöé        Γöé             Γöé smaller  Γöé
  573. Γöé             Γöé        Γöé             Γöé of the   Γöé
  574. Γöé             Γöé        Γöé             Γöé two.    Γöé
  575. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  576. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  577. Γöé modf           Γöé "math.h"   Γöé modf           Γöé Calcu-   Γöé
  578. Γöé             Γöé        Γöé             Γöé lates the Γöé
  579. Γöé             Γöé        Γöé             Γöé signed   Γöé
  580. Γöé             Γöé        Γöé             Γöé frac-   Γöé
  581. Γöé             Γöé        Γöé             Γöé tional   Γöé
  582. Γöé             Γöé        Γöé             Γöé portion  Γöé
  583. Γöé             Γöé        Γöé             Γöé of the   Γöé
  584. Γöé             Γöé        Γöé             Γöé argument. Γöé
  585. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  586. Γöé pow           Γöé "math.h"   Γöé pow           Γöé Calcu-   Γöé
  587. Γöé             Γöé        Γöé             Γöé lates the Γöé
  588. Γöé             Γöé        Γöé             Γöé value of  Γöé
  589. Γöé             Γöé        Γöé             Γöé an argu-  Γöé
  590. Γöé             Γöé        Γöé             Γöé ment    Γöé
  591. Γöé             Γöé        Γöé             Γöé raised to Γöé
  592. Γöé             Γöé        Γöé             Γöé a power.  Γöé
  593. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  594. Γöé sqrt           Γöé "math.h"   Γöé sqrt           Γöé Calcu-   Γöé
  595. Γöé             Γöé        Γöé             Γöé lates the Γöé
  596. Γöé             Γöé        Γöé             Γöé square   Γöé
  597. Γöé             Γöé        Γöé             Γöé root of a Γöé
  598. Γöé             Γöé        Γöé             Γöé number.  Γöé
  599. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  600.  
  601.  
  602. ΓòÉΓòÉΓòÉ 2.1.6.1. Trigonometric Functions ΓòÉΓòÉΓòÉ
  603.  
  604. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  605. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  606. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  607. Γöé acos           Γöé "math.h"   Γöé acos           Γöé Calcu-   Γöé
  608. Γöé             Γöé        Γöé             Γöé lates the Γöé
  609. Γöé             Γöé        Γöé             Γöé arccosine.Γöé
  610. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  611. Γöé asin           Γöé "math.h"   Γöé asin           Γöé Calcu-   Γöé
  612. Γöé             Γöé        Γöé             Γöé lates the Γöé
  613. Γöé             Γöé        Γöé             Γöé arcsine.  Γöé
  614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  615. Γöé atan           Γöé "math.h"   Γöé atan - atan2       Γöé Calcu-   Γöé
  616. Γöé             Γöé        Γöé             Γöé lates the Γöé
  617. Γöé             Γöé        Γöé             Γöé arctangentΓöé
  618. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  619. Γöé atan2          Γöé "math.h"   Γöé atan - atan2       Γöé Calcu-   Γöé
  620. Γöé             Γöé        Γöé             Γöé lates the Γöé
  621. Γöé             Γöé        Γöé             Γöé arctangentΓöé
  622. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  623. Γöé cos           Γöé "math.h"   Γöé cos           Γöé Calcu-   Γöé
  624. Γöé             Γöé        Γöé             Γöé lates the Γöé
  625. Γöé             Γöé        Γöé             Γöé cosine.  Γöé
  626. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  627. Γöé cosh           Γöé "math.h"   Γöé cosh           Γöé Calcu-   Γöé
  628. Γöé             Γöé        Γöé             Γöé lates the Γöé
  629. Γöé             Γöé        Γöé             Γöé hyperbolicΓöé
  630. Γöé             Γöé        Γöé             Γöé cosine.  Γöé
  631. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  632. Γöé sin           Γöé "math.h"   Γöé sin           Γöé Calcu-   Γöé
  633. Γöé             Γöé        Γöé             Γöé lates the Γöé
  634. Γöé             Γöé        Γöé             Γöé sine.   Γöé
  635. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  636. Γöé sinh           Γöé "math.h"   Γöé sinh           Γöé Calcu-   Γöé
  637. Γöé             Γöé        Γöé             Γöé lates the Γöé
  638. Γöé             Γöé        Γöé             Γöé hyperbolicΓöé
  639. Γöé             Γöé        Γöé             Γöé sine.   Γöé
  640. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  641. Γöé tan           Γöé "math.h"   Γöé tan           Γöé Calcu-   Γöé
  642. Γöé             Γöé        Γöé             Γöé lates the Γöé
  643. Γöé             Γöé        Γöé             Γöé tangent.  Γöé
  644. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  645. Γöé tanh           Γöé "math.h"   Γöé tanh           Γöé Calcu-   Γöé
  646. Γöé             Γöé        Γöé             Γöé lates the Γöé
  647. Γöé             Γöé        Γöé             Γöé hyperbolicΓöé
  648. Γöé             Γöé        Γöé             Γöé tangent.  Γöé
  649. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  650.  
  651.  
  652. ΓòÉΓòÉΓòÉ 2.1.6.2. Bessel Functions ΓòÉΓòÉΓòÉ
  653.  
  654. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  655. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  656. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  657. Γöé "_j0"          Γöé "math.h"   Γöé bessel          Γöé 0 order  Γöé
  658. Γöé             Γöé        Γöé             Γöé differen- Γöé
  659. Γöé             Γöé        Γöé             Γöé tial    Γöé
  660. Γöé             Γöé        Γöé             Γöé equation  Γöé
  661. Γöé             Γöé        Γöé             Γöé of the   Γöé
  662. Γöé             Γöé        Γöé             Γöé first   Γöé
  663. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  664. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  665. Γöé "_j1"          Γöé "math.h"   Γöé bessel          Γöé 1st order Γöé
  666. Γöé             Γöé        Γöé             Γöé differen- Γöé
  667. Γöé             Γöé        Γöé             Γöé tial    Γöé
  668. Γöé             Γöé        Γöé             Γöé equation  Γöé
  669. Γöé             Γöé        Γöé             Γöé of the   Γöé
  670. Γöé             Γöé        Γöé             Γöé first   Γöé
  671. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  672. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  673. Γöé "_jn"          Γöé "math.h"   Γöé bessel          Γöé nth order Γöé
  674. Γöé             Γöé        Γöé             Γöé differen- Γöé
  675. Γöé             Γöé        Γöé             Γöé tial    Γöé
  676. Γöé             Γöé        Γöé             Γöé equation  Γöé
  677. Γöé             Γöé        Γöé             Γöé of the   Γöé
  678. Γöé             Γöé        Γöé             Γöé first   Γöé
  679. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  680. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  681. Γöé "_y0"          Γöé "math.h"   Γöé bessel          Γöé 0 order  Γöé
  682. Γöé             Γöé        Γöé             Γöé differen- Γöé
  683. Γöé             Γöé        Γöé             Γöé tial    Γöé
  684. Γöé             Γöé        Γöé             Γöé equation  Γöé
  685. Γöé             Γöé        Γöé             Γöé of the   Γöé
  686. Γöé             Γöé        Γöé             Γöé second   Γöé
  687. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  688. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  689. Γöé "_y1"          Γöé "math.h"   Γöé bessel          Γöé 1st order Γöé
  690. Γöé             Γöé        Γöé             Γöé differen- Γöé
  691. Γöé             Γöé        Γöé             Γöé tial    Γöé
  692. Γöé             Γöé        Γöé             Γöé equation  Γöé
  693. Γöé             Γöé        Γöé             Γöé of the   Γöé
  694. Γöé             Γöé        Γöé             Γöé second   Γöé
  695. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  696. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  697. Γöé "_yn"          Γöé "math.h"   Γöé bessel          Γöé nth order Γöé
  698. Γöé             Γöé        Γöé             Γöé differen- Γöé
  699. Γöé             Γöé        Γöé             Γöé tial    Γöé
  700. Γöé             Γöé        Γöé             Γöé equation  Γöé
  701. Γöé             Γöé        Γöé             Γöé of the   Γöé
  702. Γöé             Γöé        Γöé             Γöé second   Γöé
  703. Γöé             Γöé        Γöé             Γöé kind.   Γöé
  704. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  705.  
  706.  
  707. ΓòÉΓòÉΓòÉ 2.1.7. Date, Time, and Monetary Manipulation ΓòÉΓòÉΓòÉ
  708.  
  709. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  710. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  712. Γöé asctime         Γöé "time.h"   Γöé asctime         Γöé Converts  Γöé
  713. Γöé             Γöé        Γöé             Γöé time    Γöé
  714. Γöé             Γöé        Γöé             Γöé stored as Γöé
  715. Γöé             Γöé        Γöé             Γöé a struc-  Γöé
  716. Γöé             Γöé        Γöé             Γöé ture to a Γöé
  717. Γöé             Γöé        Γöé             Γöé character Γöé
  718. Γöé             Γöé        Γöé             Γöé string in Γöé
  719. Γöé             Γöé        Γöé             Γöé storage.  Γöé
  720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  721. Γöé clock          Γöé "time.h"   Γöé clock          Γöé Deter-   Γöé
  722. Γöé             Γöé        Γöé             Γöé mines   Γöé
  723. Γöé             Γöé        Γöé             Γöé processor Γöé
  724. Γöé             Γöé        Γöé             Γöé time.   Γöé
  725. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  726. Γöé ctime          Γöé "time.h"   Γöé ctime          Γöé Converts  Γöé
  727. Γöé             Γöé        Γöé             Γöé time    Γöé
  728. Γöé             Γöé        Γöé             Γöé stored as Γöé
  729. Γöé             Γöé        Γöé             Γöé a long   Γöé
  730. Γöé             Γöé        Γöé             Γöé value to  Γöé
  731. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  732. Γöé             Γöé        Γöé             Γöé acter   Γöé
  733. Γöé             Γöé        Γöé             Γöé string.  Γöé
  734. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  735. Γöé difftime         Γöé "time.h"   Γöé difftime         Γöé Calcu-   Γöé
  736. Γöé             Γöé        Γöé             Γöé lates the Γöé
  737. Γöé             Γöé        Γöé             Γöé differ-  Γöé
  738. Γöé             Γöé        Γöé             Γöé ence    Γöé
  739. Γöé             Γöé        Γöé             Γöé between  Γöé
  740. Γöé             Γöé        Γöé             Γöé two    Γöé
  741. Γöé             Γöé        Γöé             Γöé times.   Γöé
  742. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  743. Γöé _ftime          Γöé "sys\timeb.h"Γöé _ftime          Γöé Obtains  Γöé
  744. Γöé             Γöé        Γöé             Γöé the    Γöé
  745. Γöé             Γöé        Γöé             Γöé current  Γöé
  746. Γöé             Γöé        Γöé             Γöé time and  Γöé
  747. Γöé             Γöé        Γöé             Γöé stores it Γöé
  748. Γöé             Γöé        Γöé             Γöé in a    Γöé
  749. Γöé             Γöé        Γöé             Γöé struc-   Γöé
  750. Γöé             Γöé        Γöé             Γöé ture.   Γöé
  751. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  752. Γöé gmtime          Γöé "time.h"   Γöé gmtime          Γöé Converts  Γöé
  753. Γöé             Γöé        Γöé             Γöé time to  Γöé
  754. Γöé             Γöé        Γöé             Γöé Coordi-  Γöé
  755. Γöé             Γöé        Γöé             Γöé nated   Γöé
  756. Γöé             Γöé        Γöé             Γöé Universal Γöé
  757. Γöé             Γöé        Γöé             Γöé Time    Γöé
  758. Γöé             Γöé        Γöé             Γöé struc-   Γöé
  759. Γöé             Γöé        Γöé             Γöé ture.   Γöé
  760. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  761. Γöé localtime        Γöé "time.h"   Γöé localtime        Γöé Converts  Γöé
  762. Γöé             Γöé        Γöé             Γöé time to  Γöé
  763. Γöé             Γöé        Γöé             Γöé local   Γöé
  764. Γöé             Γöé        Γöé             Γöé time.   Γöé
  765. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  766. Γöé mktime          Γöé "time.h"   Γöé mktime          Γöé Converts  Γöé
  767. Γöé             Γöé        Γöé             Γöé local   Γöé
  768. Γöé             Γöé        Γöé             Γöé time into Γöé
  769. Γöé             Γöé        Γöé             Γöé calendar  Γöé
  770. Γöé             Γöé        Γöé             Γöé time.   Γöé
  771. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  772. Γöé _strdate         Γöé "time.h"   Γöé _strdate         Γöé Stores   Γöé
  773. Γöé             Γöé        Γöé             Γöé the    Γöé
  774. Γöé             Γöé        Γöé             Γöé current  Γöé
  775. Γöé             Γöé        Γöé             Γöé date in a Γöé
  776. Γöé             Γöé        Γöé             Γöé buffer.  Γöé
  777. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  778. Γöé strfmon         Γöé "monetary.h" Γöé strfmon         Γöé Converts  Γöé
  779. Γöé             Γöé        Γöé             Γöé a mone-  Γöé
  780. Γöé             Γöé        Γöé             Γöé tary    Γöé
  781. Γöé             Γöé        Γöé             Γöé value to  Γöé
  782. Γöé             Γöé        Γöé             Γöé a for-   Γöé
  783. Γöé             Γöé        Γöé             Γöé matted   Γöé
  784. Γöé             Γöé        Γöé             Γöé string.  Γöé
  785. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  786. Γöé strftime         Γöé "time.h"   Γöé strftime         Γöé Converts  Γöé
  787. Γöé             Γöé        Γöé             Γöé time to a Γöé
  788. Γöé             Γöé        Γöé             Γöé multibyte Γöé
  789. Γöé             Γöé        Γöé             Γöé character Γöé
  790. Γöé             Γöé        Γöé             Γöé string.  Γöé
  791. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  792. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  793. Γöé strptime         Γöé "time.h"   Γöé strptime         Γöé Converts  Γöé
  794. Γöé             Γöé        Γöé             Γöé time    Γöé
  795. Γöé             Γöé        Γöé             Γöé stored as Γöé
  796. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  797. Γöé             Γöé        Γöé             Γöé acter   Γöé
  798. Γöé             Γöé        Γöé             Γöé string to Γöé
  799. Γöé             Γöé        Γöé             Γöé a struc-  Γöé
  800. Γöé             Γöé        Γöé             Γöé ture.   Γöé
  801. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  802. Γöé _strtime         Γöé "time.h"   Γöé _strtime         Γöé Copies   Γöé
  803. Γöé             Γöé        Γöé             Γöé the    Γöé
  804. Γöé             Γöé        Γöé             Γöé current  Γöé
  805. Γöé             Γöé        Γöé             Γöé time into Γöé
  806. Γöé             Γöé        Γöé             Γöé a buffer. Γöé
  807. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  808. Γöé time           Γöé "time.h"   Γöé time           Γöé Returns  Γöé
  809. Γöé             Γöé        Γöé             Γöé the time  Γöé
  810. Γöé             Γöé        Γöé             Γöé in     Γöé
  811. Γöé             Γöé        Γöé             Γöé seconds.  Γöé
  812. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  813. Γöé tzset          Γöé "time.h"   Γöé tzset          Γöé Changes  Γöé
  814. Γöé             Γöé        Γöé             Γöé the time  Γöé
  815. Γöé             Γöé        Γöé             Γöé zone and  Γöé
  816. Γöé             Γöé        Γöé             Γöé daylight  Γöé
  817. Γöé             Γöé        Γöé             Γöé saving   Γöé
  818. Γöé             Γöé        Γöé             Γöé time zone Γöé
  819. Γöé             Γöé        Γöé             Γöé values.  Γöé
  820. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  821. Γöé utime          Γöé "sys\utime.h"Γöé utime          Γöé Sets the  Γöé
  822. Γöé             Γöé        Γöé             Γöé modifica- Γöé
  823. Γöé             Γöé        Γöé             Γöé tion time Γöé
  824. Γöé             Γöé        Γöé             Γöé for a   Γöé
  825. Γöé             Γöé        Γöé             Γöé file.   Γöé
  826. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  827. Γöé wcsftime         Γöé "wchar.h"   Γöé wcsftime         Γöé Converts  Γöé
  828. Γöé             Γöé        Γöé             Γöé the time  Γöé
  829. Γöé             Γöé        Γöé             Γöé and date  Γöé
  830. Γöé             Γöé        Γöé             Γöé to a wide Γöé
  831. Γöé             Γöé        Γöé             Γöé character Γöé
  832. Γöé             Γöé        Γöé             Γöé string.  Γöé
  833. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  834.  
  835.  
  836. ΓòÉΓòÉΓòÉ 2.1.8. Messages ΓòÉΓòÉΓòÉ
  837.  
  838. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  839. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  840. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  841. Γöé catclose         Γöé "nl_types.h" Γöé catclose         Γöé Closes a  Γöé
  842. Γöé             Γöé        Γöé             Γöé specified Γöé
  843. Γöé             Γöé        Γöé             Γöé message  Γöé
  844. Γöé             Γöé        Γöé             Γöé catalog.  Γöé
  845. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  846. Γöé catgets         Γöé "nl_types.h" Γöé catgets         Γöé Retrieves Γöé
  847. Γöé             Γöé        Γöé             Γöé a message Γöé
  848. Γöé             Γöé        Γöé             Γöé from a   Γöé
  849. Γöé             Γöé        Γöé             Γöé catalog.  Γöé
  850. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  851. Γöé catopen         Γöé "nl_types.h" Γöé catopen         Γöé Opens a  Γöé
  852. Γöé             Γöé        Γöé             Γöé specified Γöé
  853. Γöé             Γöé        Γöé             Γöé message  Γöé
  854. Γöé             Γöé        Γöé             Γöé catalog.  Γöé
  855. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  856.  
  857.  
  858. ΓòÉΓòÉΓòÉ 2.1.9. Type Conversion ΓòÉΓòÉΓòÉ
  859.  
  860. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  861. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  862. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  863. Γöé atof           Γöé "stdlib.h"  Γöé atof           Γöé Converts  Γöé
  864. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  865. Γöé             Γöé        Γöé             Γöé acter   Γöé
  866. Γöé             Γöé        Γöé             Γöé string to Γöé
  867. Γöé             Γöé        Γöé             Γöé a     Γöé
  868. Γöé             Γöé        Γöé             Γöé floating- Γöé
  869. Γöé             Γöé        Γöé             Γöé point   Γöé
  870. Γöé             Γöé        Γöé             Γöé value.   Γöé
  871. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  872. Γöé atoi           Γöé "stdlib.h"  Γöé atoi           Γöé Converts  Γöé
  873. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  874. Γöé             Γöé        Γöé             Γöé acter   Γöé
  875. Γöé             Γöé        Γöé             Γöé string to Γöé
  876. Γöé             Γöé        Γöé             Γöé an     Γöé
  877. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  878. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  879. Γöé atol           Γöé "stdlib.h"  Γöé atol           Γöé Converts  Γöé
  880. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  881. Γöé             Γöé        Γöé             Γöé acter   Γöé
  882. Γöé             Γöé        Γöé             Γöé string to Γöé
  883. Γöé             Γöé        Γöé             Γöé a long   Γöé
  884. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  885. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  886. Γöé _atold          Γöé "stdlib.h""  Γöé _atold          Γöé Converts  Γöé
  887. Γöé             Γöé math.h"    Γöé             Γöé a char-  Γöé
  888. Γöé             Γöé        Γöé             Γöé acter   Γöé
  889. Γöé             Γöé        Γöé             Γöé string to Γöé
  890. Γöé             Γöé        Γöé             Γöé a long   Γöé
  891. Γöé             Γöé        Γöé             Γöé double   Γöé
  892. Γöé             Γöé        Γöé             Γöé value.   Γöé
  893. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  894. Γöé _ecvt          Γöé "stdlib.h"  Γöé _ecvt          Γöé Converts  Γöé
  895. Γöé             Γöé        Γöé             Γöé a     Γöé
  896. Γöé             Γöé        Γöé             Γöé floating- Γöé
  897. Γöé             Γöé        Γöé             Γöé point   Γöé
  898. Γöé             Γöé        Γöé             Γöé number to Γöé
  899. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  900. Γöé             Γöé        Γöé             Γöé acter   Γöé
  901. Γöé             Γöé        Γöé             Γöé string.  Γöé
  902. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  903. Γöé _fcvt          Γöé "stdlib.h"  Γöé _fcvt          Γöé Converts  Γöé
  904. Γöé             Γöé        Γöé             Γöé a     Γöé
  905. Γöé             Γöé        Γöé             Γöé floating- Γöé
  906. Γöé             Γöé        Γöé             Γöé point   Γöé
  907. Γöé             Γöé        Γöé             Γöé number to Γöé
  908. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  909. Γöé             Γöé        Γöé             Γöé acter   Γöé
  910. Γöé             Γöé        Γöé             Γöé string,  Γöé
  911. Γöé             Γöé        Γöé             Γöé rounding  Γöé
  912. Γöé             Γöé        Γöé             Γöé according Γöé
  913. Γöé             Γöé        Γöé             Γöé to the   Γöé
  914. Γöé             Γöé        Γöé             Γöé FORTRAN F Γöé
  915. Γöé             Γöé        Γöé             Γöé format.  Γöé
  916. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  917. Γöé _gcvt          Γöé "stdlib.h"  Γöé _gcvt          Γöé Converts  Γöé
  918. Γöé             Γöé        Γöé             Γöé a     Γöé
  919. Γöé             Γöé        Γöé             Γöé floating- Γöé
  920. Γöé             Γöé        Γöé             Γöé point   Γöé
  921. Γöé             Γöé        Γöé             Γöé value to  Γöé
  922. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  923. Γöé             Γöé        Γöé             Γöé acter   Γöé
  924. Γöé             Γöé        Γöé             Γöé string,  Γöé
  925. Γöé             Γöé        Γöé             Γöé rounding  Γöé
  926. Γöé             Γöé        Γöé             Γöé according Γöé
  927. Γöé             Γöé        Γöé             Γöé to the   Γöé
  928. Γöé             Γöé        Γöé             Γöé FORTRAN F Γöé
  929. Γöé             Γöé        Γöé             Γöé or     Γöé
  930. Γöé             Γöé        Γöé             Γöé FORTRAN E Γöé
  931. Γöé             Γöé        Γöé             Γöé formats.  Γöé
  932. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  933. Γöé _itoa          Γöé "stdlib.h"  Γöé _itoa          Γöé Converts  Γöé
  934. Γöé             Γöé        Γöé             Γöé the    Γöé
  935. Γöé             Γöé        Γöé             Γöé digits of Γöé
  936. Γöé             Γöé        Γöé             Γöé an     Γöé
  937. Γöé             Γöé        Γöé             Γöé integer  Γöé
  938. Γöé             Γöé        Γöé             Γöé to a    Γöé
  939. Γöé             Γöé        Γöé             Γöé character Γöé
  940. Γöé             Γöé        Γöé             Γöé string.  Γöé
  941. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  942. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  943. Γöé _ltoa          Γöé "stdlib.h"  Γöé _ltoa          Γöé Converts  Γöé
  944. Γöé             Γöé        Γöé             Γöé the    Γöé
  945. Γöé             Γöé        Γöé             Γöé digits of Γöé
  946. Γöé             Γöé        Γöé             Γöé a long   Γöé
  947. Γöé             Γöé        Γöé             Γöé integer  Γöé
  948. Γöé             Γöé        Γöé             Γöé to a    Γöé
  949. Γöé             Γöé        Γöé             Γöé character Γöé
  950. Γöé             Γöé        Γöé             Γöé string.  Γöé
  951. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  952. Γöé strtod          Γöé "stdlib.h"  Γöé strtod          Γöé Converts  Γöé
  953. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  954. Γöé             Γöé        Γöé             Γöé acter   Γöé
  955. Γöé             Γöé        Γöé             Γöé string to Γöé
  956. Γöé             Γöé        Γöé             Γöé a double  Γöé
  957. Γöé             Γöé        Γöé             Γöé value.   Γöé
  958. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  959. Γöé strtol          Γöé "stdlib.h"  Γöé strtol          Γöé Converts  Γöé
  960. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  961. Γöé             Γöé        Γöé             Γöé acter   Γöé
  962. Γöé             Γöé        Γöé             Γöé string to Γöé
  963. Γöé             Γöé        Γöé             Γöé a long   Γöé
  964. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  965. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  966. Γöé strtold         Γöé "stdlib.h"  Γöé strtold         Γöé Converts  Γöé
  967. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  968. Γöé             Γöé        Γöé             Γöé acter   Γöé
  969. Γöé             Γöé        Γöé             Γöé string to Γöé
  970. Γöé             Γöé        Γöé             Γöé a long   Γöé
  971. Γöé             Γöé        Γöé             Γöé double   Γöé
  972. Γöé             Γöé        Γöé             Γöé value.   Γöé
  973. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  974. Γöé strtoul         Γöé "stdlib.h"  Γöé strtoul         Γöé Converts  Γöé
  975. Γöé             Γöé        Γöé             Γöé a string  Γöé
  976. Γöé             Γöé        Γöé             Γöé to an   Γöé
  977. Γöé             Γöé        Γöé             Γöé unsigned  Γöé
  978. Γöé             Γöé        Γöé             Γöé long    Γöé
  979. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  980. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  981. Γöé _ultoa          Γöé "stdlib.h"  Γöé _ultoa          Γöé Converts  Γöé
  982. Γöé             Γöé        Γöé             Γöé the    Γöé
  983. Γöé             Γöé        Γöé             Γöé values of Γöé
  984. Γöé             Γöé        Γöé             Γöé a long   Γöé
  985. Γöé             Γöé        Γöé             Γöé value to  Γöé
  986. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  987. Γöé             Γöé        Γöé             Γöé acter   Γöé
  988. Γöé             Γöé        Γöé             Γöé string.  Γöé
  989. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  990. Γöé wcstod          Γöé "wchar.h"   Γöé wcstod          Γöé Converts  Γöé
  991. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  992. Γöé             Γöé        Γöé             Γöé character Γöé
  993. Γöé             Γöé        Γöé             Γöé string to Γöé
  994. Γöé             Γöé        Γöé             Γöé a double  Γöé
  995. Γöé             Γöé        Γöé             Γöé value.   Γöé
  996. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  997. Γöé wcstol          Γöé "wchar.h"   Γöé wcstol          Γöé Converts  Γöé
  998. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  999. Γöé             Γöé        Γöé             Γöé character Γöé
  1000. Γöé             Γöé        Γöé             Γöé string to Γöé
  1001. Γöé             Γöé        Γöé             Γöé a long   Γöé
  1002. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  1003. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1004. Γöé wcstoul         Γöé "wchar.h"   Γöé wcstoul         Γöé Converts  Γöé
  1005. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  1006. Γöé             Γöé        Γöé             Γöé character Γöé
  1007. Γöé             Γöé        Γöé             Γöé string to Γöé
  1008. Γöé             Γöé        Γöé             Γöé an     Γöé
  1009. Γöé             Γöé        Γöé             Γöé unsigned  Γöé
  1010. Γöé             Γöé        Γöé             Γöé long    Γöé
  1011. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  1012. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1013. Γöé wctob          Γöé "wchar.h"   Γöé wctob          Γöé Converts  Γöé
  1014. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  1015. Γöé             Γöé        Γöé             Γöé character Γöé
  1016. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1017. Γöé             Γöé        Γöé             Γöé single-  Γöé
  1018. Γöé             Γöé        Γöé             Γöé byte    Γöé
  1019. Γöé             Γöé        Γöé             Γöé char-   Γöé
  1020. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  1021. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1022.  
  1023.  
  1024. ΓòÉΓòÉΓòÉ 2.1.9.1. Multibyte and Wide-Character Type Conversion ΓòÉΓòÉΓòÉ
  1025.  
  1026. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1027. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1028. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1029. Γöé mbstowcs         Γöé "stdlib.h"  Γöé mbstowcs         Γöé Converts  Γöé
  1030. Γöé             Γöé        Γöé             Γöé a multi-  Γöé
  1031. Γöé             Γöé        Γöé             Γöé byte    Γöé
  1032. Γöé             Γöé        Γöé             Γöé character Γöé
  1033. Γöé             Γöé        Γöé             Γöé string to Γöé
  1034. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  1035. Γöé             Γöé        Γöé             Γöé character Γöé
  1036. Γöé             Γöé        Γöé             Γöé (wchar_t) Γöé
  1037. Γöé             Γöé        Γöé             Γöé string.  Γöé
  1038. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1039. Γöé mbtowc          Γöé "stdlib.h"  Γöé mbtowc          Γöé Converts  Γöé
  1040. Γöé             Γöé        Γöé             Γöé a multi-  Γöé
  1041. Γöé             Γöé        Γöé             Γöé byte    Γöé
  1042. Γöé             Γöé        Γöé             Γöé character Γöé
  1043. Γöé             Γöé        Γöé             Γöé to a wide Γöé
  1044. Γöé             Γöé        Γöé             Γöé character Γöé
  1045. Γöé             Γöé        Γöé             Γöé (wchar_t).Γöé
  1046. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1047. Γöé wcstombs         Γöé "stdlib.h"  Γöé wcstombs         Γöé Converts  Γöé
  1048. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  1049. Γöé             Γöé        Γöé             Γöé character Γöé
  1050. Γöé             Γöé        Γöé             Γöé (wchar_t) Γöé
  1051. Γöé             Γöé        Γöé             Γöé string to Γöé
  1052. Γöé             Γöé        Γöé             Γöé a multi-  Γöé
  1053. Γöé             Γöé        Γöé             Γöé byte    Γöé
  1054. Γöé             Γöé        Γöé             Γöé character Γöé
  1055. Γöé             Γöé        Γöé             Γöé string.  Γöé
  1056. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1057. Γöé wctomb          Γöé "stdlib.h"  Γöé wctomb          Γöé Converts  Γöé
  1058. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  1059. Γöé             Γöé        Γöé             Γöé character Γöé
  1060. Γöé             Γöé        Γöé             Γöé (wchar_t) Γöé
  1061. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1062. Γöé             Γöé        Γöé             Γöé multibyte Γöé
  1063. Γöé             Γöé        Γöé             Γöé char-   Γöé
  1064. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  1065. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1066.  
  1067.  
  1068. ΓòÉΓòÉΓòÉ 2.1.10. Stream Input/Output ΓòÉΓòÉΓòÉ
  1069.  
  1070. This section describes the following input/output functions: 
  1071.  
  1072.      Formatted Input/Output 
  1073.      Character and String Input/Output 
  1074.      Wide Character and String Input/Output 
  1075.      Direct Input/Output 
  1076.      File Positioning 
  1077.      File Access 
  1078.      File Operations 
  1079.  
  1080.  
  1081. ΓòÉΓòÉΓòÉ 2.1.10.1. Formatted Input/Output ΓòÉΓòÉΓòÉ
  1082.  
  1083. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1084. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1085. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1086. Γöé fprintf         Γöé "stdio.h"   Γöé fprintf         Γöé Formats  Γöé
  1087. Γöé             Γöé        Γöé             Γöé and    Γöé
  1088. Γöé             Γöé        Γöé             Γöé prints   Γöé
  1089. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1090. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1091. Γöé             Γöé        Γöé             Γöé the    Γöé
  1092. Γöé             Γöé        Γöé             Γöé output   Γöé
  1093. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1094. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1095. Γöé fscanf          Γöé "stdio.h"   Γöé fscanf          Γöé Reads   Γöé
  1096. Γöé             Γöé        Γöé             Γöé data from Γöé
  1097. Γöé             Γöé        Γöé             Γöé a stream  Γöé
  1098. Γöé             Γöé        Γöé             Γöé into    Γöé
  1099. Γöé             Γöé        Γöé             Γöé locations Γöé
  1100. Γöé             Γöé        Γöé             Γöé given by  Γöé
  1101. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1102. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1104. Γöé printf          Γöé "stdio.h"   Γöé printf          Γöé Formats  Γöé
  1105. Γöé             Γöé        Γöé             Γöé and    Γöé
  1106. Γöé             Γöé        Γöé             Γöé prints   Γöé
  1107. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1108. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1109. Γöé             Γöé        Γöé             Γöé stdout.  Γöé
  1110. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1111. Γöé scanf          Γöé "stdio.h"   Γöé scanf          Γöé Reads   Γöé
  1112. Γöé             Γöé        Γöé             Γöé data from Γöé
  1113. Γöé             Γöé        Γöé             Γöé stdin   Γöé
  1114. Γöé             Γöé        Γöé             Γöé into    Γöé
  1115. Γöé             Γöé        Γöé             Γöé locations Γöé
  1116. Γöé             Γöé        Γöé             Γöé given by  Γöé
  1117. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1118. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1119. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1120. Γöé sprintf         Γöé "stdio.h"   Γöé sprintf         Γöé Formats  Γöé
  1121. Γöé             Γöé        Γöé             Γöé and    Γöé
  1122. Γöé             Γöé        Γöé             Γöé writes   Γöé
  1123. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1124. Γöé             Γöé        Γöé             Γöé ters to a Γöé
  1125. Γöé             Γöé        Γöé             Γöé buffer.  Γöé
  1126. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1127. Γöé sscanf          Γöé "stdio.h"   Γöé sscanf          Γöé Reads   Γöé
  1128. Γöé             Γöé        Γöé             Γöé data from Γöé
  1129. Γöé             Γöé        Γöé             Γöé a buffer  Γöé
  1130. Γöé             Γöé        Γöé             Γöé into    Γöé
  1131. Γöé             Γöé        Γöé             Γöé locations Γöé
  1132. Γöé             Γöé        Γöé             Γöé given by  Γöé
  1133. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1134. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1135. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1136. Γöé vfprintf         Γöé "stdarg.h""  Γöé vfprintf         Γöé Formats  Γöé
  1137. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1138. Γöé             Γöé        Γöé             Γöé prints   Γöé
  1139. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1140. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1141. Γöé             Γöé        Γöé             Γöé the    Γöé
  1142. Γöé             Γöé        Γöé             Γöé output   Γöé
  1143. Γöé             Γöé        Γöé             Γöé stream   Γöé
  1144. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1145. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1146. Γöé             Γöé        Γöé             Γöé number of Γöé
  1147. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1148. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1149. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1150. Γöé vprintf         Γöé "stdarg.h""  Γöé vprintf         Γöé Formats  Γöé
  1151. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1152. Γöé             Γöé        Γöé             Γöé writes   Γöé
  1153. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1154. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1155. Γöé             Γöé        Γöé             Γöé stdout   Γöé
  1156. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1157. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1158. Γöé             Γöé        Γöé             Γöé number of Γöé
  1159. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1160. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1161. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1162. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1163. Γöé vsprintf         Γöé "stdarg.h""  Γöé vsprintf         Γöé Formats  Γöé
  1164. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1165. Γöé             Γöé        Γöé             Γöé writes   Γöé
  1166. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1167. Γöé             Γöé        Γöé             Γöé ters to a Γöé
  1168. Γöé             Γöé        Γöé             Γöé buffer   Γöé
  1169. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1170. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1171. Γöé             Γöé        Γöé             Γöé number of Γöé
  1172. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1173. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1174. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1175.  
  1176.  
  1177. ΓòÉΓòÉΓòÉ 2.1.10.2. Character and String Input/Output ΓòÉΓòÉΓòÉ
  1178.  
  1179. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1180. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1181. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1182. Γöé fgetc          Γöé "stdio.h"   Γöé fgetc          Γöé Reads a  Γöé
  1183. Γöé             Γöé        Γöé             Γöé character Γöé
  1184. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1185. Γöé             Γöé        Γöé             Γöé specified Γöé
  1186. Γöé             Γöé        Γöé             Γöé input   Γöé
  1187. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1188. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1189. Γöé fgets          Γöé "stdio.h"   Γöé fgets          Γöé Reads a  Γöé
  1190. Γöé             Γöé        Γöé             Γöé string   Γöé
  1191. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1192. Γöé             Γöé        Γöé             Γöé specified Γöé
  1193. Γöé             Γöé        Γöé             Γöé input   Γöé
  1194. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1195. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1196. Γöé fputc          Γöé "stdio.h"   Γöé fputc          Γöé Prints a  Γöé
  1197. Γöé             Γöé        Γöé             Γöé character Γöé
  1198. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1199. Γöé             Γöé        Γöé             Γöé specified Γöé
  1200. Γöé             Γöé        Γöé             Γöé output   Γöé
  1201. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1202. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1203. Γöé fputs          Γöé "stdio.h"   Γöé fputs          Γöé Prints a  Γöé
  1204. Γöé             Γöé        Γöé             Γöé string to Γöé
  1205. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1206. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1207. Γöé             Γöé        Γöé             Γöé output   Γöé
  1208. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1209. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1210. Γöé getc           Γöé "stdio.h"   Γöé getc - getchar      Γöé Reads a  Γöé
  1211. Γöé             Γöé        Γöé             Γöé character Γöé
  1212. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1213. Γöé             Γöé        Γöé             Γöé specified Γöé
  1214. Γöé             Γöé        Γöé             Γöé input   Γöé
  1215. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1216. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1217. Γöé getchar         Γöé "stdio.h"   Γöé getc - getchar      Γöé Reads a  Γöé
  1218. Γöé             Γöé        Γöé             Γöé character Γöé
  1219. Γöé             Γöé        Γöé             Γöé from    Γöé
  1220. Γöé             Γöé        Γöé             Γöé stdin.   Γöé
  1221. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1222. Γöé gets           Γöé "stdio.h"   Γöé gets           Γöé Reads a  Γöé
  1223. Γöé             Γöé        Γöé             Γöé line from Γöé
  1224. Γöé             Γöé        Γöé             Γöé stdin.   Γöé
  1225. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1226. Γöé putc           Γöé "stdio.h"   Γöé putc - putchar      Γöé Prints a  Γöé
  1227. Γöé             Γöé        Γöé             Γöé character Γöé
  1228. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1229. Γöé             Γöé        Γöé             Γöé specified Γöé
  1230. Γöé             Γöé        Γöé             Γöé output   Γöé
  1231. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1232. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1233. Γöé putchar         Γöé "stdio.h"   Γöé putc - putchar      Γöé Prints a  Γöé
  1234. Γöé             Γöé        Γöé             Γöé character Γöé
  1235. Γöé             Γöé        Γöé             Γöé to     Γöé
  1236. Γöé             Γöé        Γöé             Γöé stdout.  Γöé
  1237. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1238. Γöé puts           Γöé "stdio.h"   Γöé puts           Γöé Prints a  Γöé
  1239. Γöé             Γöé        Γöé             Γöé string to Γöé
  1240. Γöé             Γöé        Γöé             Γöé stdout.  Γöé
  1241. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1242. Γöé ungetc          Γöé "stdio.h"   Γöé ungetc          Γöé Pushes a  Γöé
  1243. Γöé             Γöé        Γöé             Γöé character Γöé
  1244. Γöé             Γöé        Γöé             Γöé back onto Γöé
  1245. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1246. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1247. Γöé             Γöé        Γöé             Γöé input   Γöé
  1248. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1249. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1250.  
  1251.  
  1252. ΓòÉΓòÉΓòÉ 2.1.10.3. Wide Character and String Input/Output ΓòÉΓòÉΓòÉ
  1253.  
  1254. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1255. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1256. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1257. Γöé fgetwc          Γöé "stdio.h""  Γöé fgetwc          Γöé Reads a  Γöé
  1258. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1259. Γöé             Γöé        Γöé             Γöé character Γöé
  1260. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1261. Γöé             Γöé        Γöé             Γöé specified Γöé
  1262. Γöé             Γöé        Γöé             Γöé input   Γöé
  1263. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1264. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1265. Γöé fgetws          Γöé "stdio.h""  Γöé fgetwc          Γöé Reads a  Γöé
  1266. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1267. Γöé             Γöé        Γöé             Γöé string   Γöé
  1268. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1269. Γöé             Γöé        Γöé             Γöé specified Γöé
  1270. Γöé             Γöé        Γöé             Γöé input   Γöé
  1271. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1272. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1273. Γöé fputwc          Γöé "stdio.h""  Γöé fputwc          Γöé Writes a  Γöé
  1274. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1275. Γöé             Γöé        Γöé             Γöé character Γöé
  1276. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1277. Γöé             Γöé        Γöé             Γöé specified Γöé
  1278. Γöé             Γöé        Γöé             Γöé output   Γöé
  1279. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1281. Γöé fputws          Γöé "stdio.h""  Γöé fputws          Γöé Writes a  Γöé
  1282. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1283. Γöé             Γöé        Γöé             Γöé character Γöé
  1284. Γöé             Γöé        Γöé             Γöé string to Γöé
  1285. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1286. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1287. Γöé             Γöé        Γöé             Γöé output   Γöé
  1288. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1289. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1290. Γöé getwc          Γöé "stdio.h""  Γöé getwc          Γöé Reads a  Γöé
  1291. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1292. Γöé             Γöé        Γöé             Γöé character Γöé
  1293. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1294. Γöé             Γöé        Γöé             Γöé specified Γöé
  1295. Γöé             Γöé        Γöé             Γöé input   Γöé
  1296. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1297. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1298. Γöé getwchar         Γöé "wchar.h"   Γöé getwchar         Γöé Reads a  Γöé
  1299. Γöé             Γöé        Γöé             Γöé wide    Γöé
  1300. Γöé             Γöé        Γöé             Γöé character Γöé
  1301. Γöé             Γöé        Γöé             Γöé from    Γöé
  1302. Γöé             Γöé        Γöé             Γöé stdin.   Γöé
  1303. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1304. Γöé putwc          Γöé "stdio.h""  Γöé putwc          Γöé Writes a  Γöé
  1305. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1306. Γöé             Γöé        Γöé             Γöé character Γöé
  1307. Γöé             Γöé        Γöé             Γöé to a    Γöé
  1308. Γöé             Γöé        Γöé             Γöé specified Γöé
  1309. Γöé             Γöé        Γöé             Γöé output   Γöé
  1310. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1311. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1312. Γöé putwchar         Γöé "wchar.h"   Γöé putwchar         Γöé Writes a  Γöé
  1313. Γöé             Γöé        Γöé             Γöé wide    Γöé
  1314. Γöé             Γöé        Γöé             Γöé character Γöé
  1315. Γöé             Γöé        Γöé             Γöé to     Γöé
  1316. Γöé             Γöé        Γöé             Γöé stdout.  Γöé
  1317. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1318. Γöé ungetwc         Γöé "stdio.h""  Γöé ungetwc         Γöé Pushes a  Γöé
  1319. Γöé             Γöé wchar.h"   Γöé             Γöé wide    Γöé
  1320. Γöé             Γöé        Γöé             Γöé character Γöé
  1321. Γöé             Γöé        Γöé             Γöé back onto Γöé
  1322. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1323. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1324. Γöé             Γöé        Γöé             Γöé input   Γöé
  1325. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1326. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1327.  
  1328.  
  1329. ΓòÉΓòÉΓòÉ 2.1.10.4. Direct Input/Output ΓòÉΓòÉΓòÉ
  1330.  
  1331. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1332. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1333. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1334. Γöé clearerr         Γöé "stdio.h"   Γöé clearerr         Γöé Resets   Γöé
  1335. Γöé             Γöé        Γöé             Γöé error   Γöé
  1336. Γöé             Γöé        Γöé             Γöé indica-  Γöé
  1337. Γöé             Γöé        Γöé             Γöé tors.   Γöé
  1338. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1339. Γöé feof           Γöé "stdio.h"   Γöé feof           Γöé Tests   Γöé
  1340. Γöé             Γöé        Γöé             Γöé end-of-  Γöé
  1341. Γöé             Γöé        Γöé             Γöé file    Γöé
  1342. Γöé             Γöé        Γöé             Γöé indicator Γöé
  1343. Γöé             Γöé        Γöé             Γöé for    Γöé
  1344. Γöé             Γöé        Γöé             Γöé stream   Γöé
  1345. Γöé             Γöé        Γöé             Γöé input.   Γöé
  1346. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1347. Γöé ferror          Γöé "stdio.h"   Γöé ferror          Γöé Tests the Γöé
  1348. Γöé             Γöé        Γöé             Γöé error   Γöé
  1349. Γöé             Γöé        Γöé             Γöé indicator Γöé
  1350. Γöé             Γöé        Γöé             Γöé for a   Γöé
  1351. Γöé             Γöé        Γöé             Γöé specified Γöé
  1352. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1353. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1354. Γöé fread          Γöé "stdio.h"   Γöé fread          Γöé Reads   Γöé
  1355. Γöé             Γöé        Γöé             Γöé items   Γöé
  1356. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1357. Γöé             Γöé        Γöé             Γöé specified Γöé
  1358. Γöé             Γöé        Γöé             Γöé input   Γöé
  1359. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1360. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1361. Γöé fwrite          Γöé "stdio.h"   Γöé fwrite          Γöé Writes   Γöé
  1362. Γöé             Γöé        Γöé             Γöé items to  Γöé
  1363. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1364. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1365. Γöé             Γöé        Γöé             Γöé output   Γöé
  1366. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1367. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1368.  
  1369.  
  1370. ΓòÉΓòÉΓòÉ 2.1.10.5. File Positioning ΓòÉΓòÉΓòÉ
  1371.  
  1372. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1373. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1374. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1375. Γöé fgetpos         Γöé "stdio.h"   Γöé fgetpos         Γöé Gets the  Γöé
  1376. Γöé             Γöé        Γöé             Γöé current  Γöé
  1377. Γöé             Γöé        Γöé             Γöé position  Γöé
  1378. Γöé             Γöé        Γöé             Γöé of the   Γöé
  1379. Γöé             Γöé        Γöé             Γöé file    Γöé
  1380. Γöé             Γöé        Γöé             Γöé pointer.  Γöé
  1381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1382. Γöé fseek          Γöé "stdio.h"   Γöé fseek          Γöé Moves the Γöé
  1383. Γöé             Γöé        Γöé             Γöé file    Γöé
  1384. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1385. Γöé             Γöé        Γöé             Γöé to a new  Γöé
  1386. Γöé             Γöé        Γöé             Γöé location. Γöé
  1387. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1388. Γöé fsetpos         Γöé "stdio.h"   Γöé fsetpos         Γöé Moves the Γöé
  1389. Γöé             Γöé        Γöé             Γöé file    Γöé
  1390. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1391. Γöé             Γöé        Γöé             Γöé to a new  Γöé
  1392. Γöé             Γöé        Γöé             Γöé location. Γöé
  1393. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1394. Γöé ftell          Γöé "stdio.h"   Γöé ftell          Γöé Gets the  Γöé
  1395. Γöé             Γöé        Γöé             Γöé current  Γöé
  1396. Γöé             Γöé        Γöé             Γöé position  Γöé
  1397. Γöé             Γöé        Γöé             Γöé of the   Γöé
  1398. Γöé             Γöé        Γöé             Γöé file    Γöé
  1399. Γöé             Γöé        Γöé             Γöé pointer.  Γöé
  1400. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1401. Γöé lseek          Γöé "io.h"    Γöé lseek          Γöé Moves a  Γöé
  1402. Γöé             Γöé        Γöé             Γöé file    Γöé
  1403. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1404. Γöé             Γöé        Γöé             Γöé to a new  Γöé
  1405. Γöé             Γöé        Γöé             Γöé location. Γöé
  1406. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1407. Γöé rewind          Γöé "stdio.h"   Γöé rewind          Γöé Reposi-  Γöé
  1408. Γöé             Γöé        Γöé             Γöé tions the Γöé
  1409. Γöé             Γöé        Γöé             Γöé file    Γöé
  1410. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1411. Γöé             Γöé        Γöé             Γöé to the   Γöé
  1412. Γöé             Γöé        Γöé             Γöé beginning Γöé
  1413. Γöé             Γöé        Γöé             Γöé of the   Γöé
  1414. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1415. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1416.  
  1417.  
  1418. ΓòÉΓòÉΓòÉ 2.1.10.6. File Access ΓòÉΓòÉΓòÉ
  1419.  
  1420. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1421. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1422. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1423. Γöé fclose          Γöé "stdio.h"   Γöé fclose          Γöé Closes a  Γöé
  1424. Γöé             Γöé        Γöé             Γöé specified Γöé
  1425. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1426. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1427. Γöé _fcloseall        Γöé "stdio.h"   Γöé _fcloseall        Γöé Closes   Γöé
  1428. Γöé             Γöé        Γöé             Γöé all open  Γöé
  1429. Γöé             Γöé        Γöé             Γöé streams,  Γöé
  1430. Γöé             Γöé        Γöé             Γöé except   Γöé
  1431. Γöé             Γöé        Γöé             Γöé the    Γöé
  1432. Γöé             Γöé        Γöé             Γöé standard  Γöé
  1433. Γöé             Γöé        Γöé             Γöé streams.  Γöé
  1434. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1435. Γöé fdopen          Γöé "stdio.h"   Γöé fdopen          Γöé Associ-  Γöé
  1436. Γöé             Γöé        Γöé             Γöé ates an  Γöé
  1437. Γöé             Γöé        Γöé             Γöé input or  Γöé
  1438. Γöé             Γöé        Γöé             Γöé output   Γöé
  1439. Γöé             Γöé        Γöé             Γöé stream   Γöé
  1440. Γöé             Γöé        Γöé             Γöé with a   Γöé
  1441. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1442. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1443. Γöé fflush          Γöé "stdio.h"   Γöé fflush          Γöé Causes   Γöé
  1444. Γöé             Γöé        Γöé             Γöé the    Γöé
  1445. Γöé             Γöé        Γöé             Γöé system to Γöé
  1446. Γöé             Γöé        Γöé             Γöé write the Γöé
  1447. Γöé             Γöé        Γöé             Γöé contents  Γöé
  1448. Γöé             Γöé        Γöé             Γöé of a    Γöé
  1449. Γöé             Γöé        Γöé             Γöé buffer to Γöé
  1450. Γöé             Γöé        Γöé             Γöé a file.  Γöé
  1451. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1452. Γöé _flushall        Γöé "stdio.h"   Γöé _flushall        Γöé Writes   Γöé
  1453. Γöé             Γöé        Γöé             Γöé the con-  Γöé
  1454. Γöé             Γöé        Γöé             Γöé tents of  Γöé
  1455. Γöé             Γöé        Γöé             Γöé buffers  Γöé
  1456. Γöé             Γöé        Γöé             Γöé to files. Γöé
  1457. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1458. Γöé fopen          Γöé "stdio.h"   Γöé fopen          Γöé Opens a  Γöé
  1459. Γöé             Γöé        Γöé             Γöé specified Γöé
  1460. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1461. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1462. Γöé freopen         Γöé "stdio.h"   Γöé freopen         Γöé Closes a  Γöé
  1463. Γöé             Γöé        Γöé             Γöé file and  Γöé
  1464. Γöé             Γöé        Γöé             Γöé reassigns Γöé
  1465. Γöé             Γöé        Γöé             Γöé a stream. Γöé
  1466. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1467. Γöé setbuf          Γöé "stdio.h"   Γöé setbuf          Γöé Allows   Γöé
  1468. Γöé             Γöé        Γöé             Γöé control  Γöé
  1469. Γöé             Γöé        Γöé             Γöé of buf-  Γöé
  1470. Γöé             Γöé        Γöé             Γöé fering.  Γöé
  1471. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1472. Γöé _setmode         Γöé "io.h"    Γöé _setmode         Γöé Sets the  Γöé
  1473. Γöé             Γöé        Γöé             Γöé trans-   Γöé
  1474. Γöé             Γöé        Γöé             Γöé lation   Γöé
  1475. Γöé             Γöé        Γöé             Γöé mode of a Γöé
  1476. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1477. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1478. Γöé setvbuf         Γöé "stdio.h"   Γöé setvbuf         Γöé Controls  Γöé
  1479. Γöé             Γöé        Γöé             Γöé buffering Γöé
  1480. Γöé             Γöé        Γöé             Γöé and    Γöé
  1481. Γöé             Γöé        Γöé             Γöé buffer   Γöé
  1482. Γöé             Γöé        Γöé             Γöé size for  Γöé
  1483. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1484. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1485. Γöé             Γöé        Γöé             Γöé stream.  Γöé
  1486. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1487.  
  1488.  
  1489. ΓòÉΓòÉΓòÉ 2.1.10.7. File Operations ΓòÉΓòÉΓòÉ
  1490.  
  1491. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1492. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1494. Γöé fileno          Γöé "stdio.h"   Γöé fileno          Γöé Deter-   Γöé
  1495. Γöé             Γöé        Γöé             Γöé mines the Γöé
  1496. Γöé             Γöé        Γöé             Γöé file    Γöé
  1497. Γöé             Γöé        Γöé             Γöé handle.  Γöé
  1498. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1499. Γöé remove          Γöé "stdio.h"   Γöé remove          Γöé Deletes a Γöé
  1500. Γöé             Γöé        Γöé             Γöé specified Γöé
  1501. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1502. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1503. Γöé rename          Γöé "stdio.h"   Γöé rename          Γöé Renames a Γöé
  1504. Γöé             Γöé        Γöé             Γöé specified Γöé
  1505. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1506. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1507. Γöé _rmtmp          Γöé "stdio.h"   Γöé _rmtmp          Γöé Closes   Γöé
  1508. Γöé             Γöé        Γöé             Γöé and    Γöé
  1509. Γöé             Γöé        Γöé             Γöé deletes  Γöé
  1510. Γöé             Γöé        Γöé             Γöé temporary Γöé
  1511. Γöé             Γöé        Γöé             Γöé files.   Γöé
  1512. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1513. Γöé tempnam         Γöé "stdio.h"   Γöé tempnam         Γöé Creates a Γöé
  1514. Γöé             Γöé        Γöé             Γöé temporary Γöé
  1515. Γöé             Γöé        Γöé             Γöé file name Γöé
  1516. Γöé             Γöé        Γöé             Γöé in     Γöé
  1517. Γöé             Γöé        Γöé             Γöé another  Γöé
  1518. Γöé             Γöé        Γöé             Γöé direc-   Γöé
  1519. Γöé             Γöé        Γöé             Γöé tory.   Γöé
  1520. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1521. Γöé tmpfile         Γöé "stdio.h"   Γöé tmpfile         Γöé Creates a Γöé
  1522. Γöé             Γöé        Γöé             Γöé temporary Γöé
  1523. Γöé             Γöé        Γöé             Γöé file and  Γöé
  1524. Γöé             Γöé        Γöé             Γöé returns a Γöé
  1525. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1526. Γöé             Γöé        Γöé             Γöé to that  Γöé
  1527. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1528. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1529. Γöé tmpnam          Γöé "stdio.h"   Γöé tmpnam          Γöé Produces  Γöé
  1530. Γöé             Γöé        Γöé             Γöé a tempo-  Γöé
  1531. Γöé             Γöé        Γöé             Γöé rary file Γöé
  1532. Γöé             Γöé        Γöé             Γöé name.   Γöé
  1533. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1534. Γöé unlink          Γöé "stdio.h"   Γöé unlink          Γöé Deletes a Γöé
  1535. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1536. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1537.  
  1538.  
  1539. ΓòÉΓòÉΓòÉ 2.1.11. Low-Level Input/Output ΓòÉΓòÉΓòÉ
  1540.  
  1541. This section describes the following input/output functions: 
  1542.  
  1543.      Port Input/Output 
  1544.      Character and String Input/Output 
  1545.      Direct Input/Output 
  1546.      File Positioning 
  1547.      File Access 
  1548.      File Operations 
  1549.  
  1550.  
  1551. ΓòÉΓòÉΓòÉ 2.1.11.1. Port Input/Output ΓòÉΓòÉΓòÉ
  1552.  
  1553. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1554. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1555. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1556. Γöé umask          Γöé "io.h"    Γöé umask          Γöé Sets the  Γöé
  1557. Γöé             Γöé        Γöé             Γöé file per- Γöé
  1558. Γöé             Γöé        Γöé             Γöé mission  Γöé
  1559. Γöé             Γöé        Γöé             Γöé mask of  Γöé
  1560. Γöé             Γöé        Γöé             Γöé the exe-  Γöé
  1561. Γöé             Γöé        Γöé             Γöé cuting   Γöé
  1562. Γöé             Γöé        Γöé             Γöé process  Γöé
  1563. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  1564. Γöé             Γöé        Γöé             Γöé ment.   Γöé
  1565. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1566.  
  1567.  
  1568. ΓòÉΓòÉΓòÉ 2.1.11.2. Character and String Input/Output ΓòÉΓòÉΓòÉ
  1569.  
  1570. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1571. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1573. Γöé _cgets          Γöé "conio.h"   Γöé _cgets          Γöé Reads a  Γöé
  1574. Γöé             Γöé        Γöé             Γöé string   Γöé
  1575. Γöé             Γöé        Γöé             Γöé from the  Γöé
  1576. Γöé             Γöé        Γöé             Γöé keyboard  Γöé
  1577. Γöé             Γöé        Γöé             Γöé into    Γöé
  1578. Γöé             Γöé        Γöé             Γöé locations Γöé
  1579. Γöé             Γöé        Γöé             Γöé given by  Γöé
  1580. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1581. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1582. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1583. Γöé _cprintf         Γöé "conio.h"   Γöé _cprintf         Γöé Formats  Γöé
  1584. Γöé             Γöé        Γöé             Γöé and sends Γöé
  1585. Γöé             Γöé        Γöé             Γöé a series  Γöé
  1586. Γöé             Γöé        Γöé             Γöé of char-  Γöé
  1587. Γöé             Γöé        Γöé             Γöé acters   Γöé
  1588. Γöé             Γöé        Γöé             Γöé and    Γöé
  1589. Γöé             Γöé        Γöé             Γöé values to Γöé
  1590. Γöé             Γöé        Γöé             Γöé the    Γöé
  1591. Γöé             Γöé        Γöé             Γöé screen.  Γöé
  1592. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1593. Γöé _cputs          Γöé "conio.h"   Γöé _cputs          Γöé Writes a  Γöé
  1594. Γöé             Γöé        Γöé             Γöé string   Γöé
  1595. Γöé             Γöé        Γöé             Γöé directly  Γöé
  1596. Γöé             Γöé        Γöé             Γöé to the   Γöé
  1597. Γöé             Γöé        Γöé             Γöé screen.  Γöé
  1598. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1599. Γöé _cscanf         Γöé "conio.h"   Γöé _cscanf         Γöé Reads   Γöé
  1600. Γöé             Γöé        Γöé             Γöé data from Γöé
  1601. Γöé             Γöé        Γöé             Γöé the key-  Γöé
  1602. Γöé             Γöé        Γöé             Γöé board   Γöé
  1603. Γöé             Γöé        Γöé             Γöé into    Γöé
  1604. Γöé             Γöé        Γöé             Γöé locations Γöé
  1605. Γöé             Γöé        Γöé             Γöé given by  Γöé
  1606. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1607. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1608. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1609. Γöé _getch          Γöé "conio.h"   Γöé _getch - _getche     Γöé Reads a  Γöé
  1610. Γöé             Γöé        Γöé             Γöé single   Γöé
  1611. Γöé             Γöé        Γöé             Γöé character Γöé
  1612. Γöé             Γöé        Γöé             Γöé from the  Γöé
  1613. Γöé             Γöé        Γöé             Γöé keyboard. Γöé
  1614. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1615. Γöé _getche         Γöé "conio.h"   Γöé _getch - _getche     Γöé Reads a  Γöé
  1616. Γöé             Γöé        Γöé             Γöé single   Γöé
  1617. Γöé             Γöé        Γöé             Γöé character Γöé
  1618. Γöé             Γöé        Γöé             Γöé from the  Γöé
  1619. Γöé             Γöé        Γöé             Γöé keyboard  Γöé
  1620. Γöé             Γöé        Γöé             Γöé and dis-  Γöé
  1621. Γöé             Γöé        Γöé             Γöé plays it. Γöé
  1622. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1623. Γöé _kbhit          Γöé "conio.h"   Γöé _kbhit          Γöé Tests if  Γöé
  1624. Γöé             Γöé        Γöé             Γöé a key has Γöé
  1625. Γöé             Γöé        Γöé             Γöé been    Γöé
  1626. Γöé             Γöé        Γöé             Γöé pressed  Γöé
  1627. Γöé             Γöé        Γöé             Γöé on the   Γöé
  1628. Γöé             Γöé        Γöé             Γöé keyboard. Γöé
  1629. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1630. Γöé _putch          Γöé "conio.h"   Γöé _putch          Γöé Writes a  Γöé
  1631. Γöé             Γöé        Γöé             Γöé character Γöé
  1632. Γöé             Γöé        Γöé             Γöé to the   Γöé
  1633. Γöé             Γöé        Γöé             Γöé screen.  Γöé
  1634. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1635. Γöé _ungetch         Γöé "conio.h"   Γöé _ungetch         Γöé Pushes a  Γöé
  1636. Γöé             Γöé        Γöé             Γöé character Γöé
  1637. Γöé             Γöé        Γöé             Γöé back to  Γöé
  1638. Γöé             Γöé        Γöé             Γöé the key-  Γöé
  1639. Γöé             Γöé        Γöé             Γöé board.   Γöé
  1640. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1641.  
  1642.  
  1643. ΓòÉΓòÉΓòÉ 2.1.11.3. Direct Input/Output ΓòÉΓòÉΓòÉ
  1644.  
  1645. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1646. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1647. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1648. Γöé read           Γöé "io.h"    Γöé read           Γöé Reads   Γöé
  1649. Γöé             Γöé        Γöé             Γöé bytes   Γöé
  1650. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1651. Γöé             Γöé        Γöé             Γöé file into Γöé
  1652. Γöé             Γöé        Γöé             Γöé a buffer. Γöé
  1653. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1654. Γöé write          Γöé "io.h"    Γöé write          Γöé Writes   Γöé
  1655. Γöé             Γöé        Γöé             Γöé bytes   Γöé
  1656. Γöé             Γöé        Γöé             Γöé from a   Γöé
  1657. Γöé             Γöé        Γöé             Γöé buffer   Γöé
  1658. Γöé             Γöé        Γöé             Γöé into a   Γöé
  1659. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1660. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1661.  
  1662.  
  1663. ΓòÉΓòÉΓòÉ 2.1.11.4. File Positioning ΓòÉΓòÉΓòÉ
  1664.  
  1665. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1666. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1667. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1668. Γöé __eof          Γöé "io.h"    Γöé __eof          Γöé Deter-   Γöé
  1669. Γöé             Γöé        Γöé             Γöé mines   Γöé
  1670. Γöé             Γöé        Γöé             Γöé whether  Γöé
  1671. Γöé             Γöé        Γöé             Γöé the file  Γöé
  1672. Γöé             Γöé        Γöé             Γöé pointer  Γöé
  1673. Γöé             Γöé        Γöé             Γöé has    Γöé
  1674. Γöé             Γöé        Γöé             Γöé reached  Γöé
  1675. Γöé             Γöé        Γöé             Γöé the end  Γöé
  1676. Γöé             Γöé        Γöé             Γöé of the   Γöé
  1677. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1678. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1679. Γöé _tell          Γöé "io.h"    Γöé _tell          Γöé Gets the  Γöé
  1680. Γöé             Γöé        Γöé             Γöé current  Γöé
  1681. Γöé             Γöé        Γöé             Γöé position  Γöé
  1682. Γöé             Γöé        Γöé             Γöé of a file Γöé
  1683. Γöé             Γöé        Γöé             Γöé pointer.  Γöé
  1684. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1685.  
  1686.  
  1687. ΓòÉΓòÉΓòÉ 2.1.11.5. File Access ΓòÉΓòÉΓòÉ
  1688.  
  1689. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1690. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1691. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1692. Γöé access          Γöé "io.h"    Γöé access          Γöé Deter-   Γöé
  1693. Γöé             Γöé        Γöé             Γöé mines   Γöé
  1694. Γöé             Γöé        Γöé             Γöé whether  Γöé
  1695. Γöé             Γöé        Γöé             Γöé the given Γöé
  1696. Γöé             Γöé        Γöé             Γöé file    Γöé
  1697. Γöé             Γöé        Γöé             Γöé exists   Γöé
  1698. Γöé             Γöé        Γöé             Γöé and    Γöé
  1699. Γöé             Γöé        Γöé             Γöé whether  Γöé
  1700. Γöé             Γöé        Γöé             Γöé you can  Γöé
  1701. Γöé             Γöé        Γöé             Γöé gain    Γöé
  1702. Γöé             Γöé        Γöé             Γöé access to Γöé
  1703. Γöé             Γöé        Γöé             Γöé it.    Γöé
  1704. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1705. Γöé chmod          Γöé "io.h"    Γöé chmod          Γöé Changes  Γöé
  1706. Γöé             Γöé        Γöé             Γöé the per-  Γöé
  1707. Γöé             Γöé        Γöé             Γöé mission  Γöé
  1708. Γöé             Γöé        Γöé             Γöé setting  Γöé
  1709. Γöé             Γöé        Γöé             Γöé of a    Γöé
  1710. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1711. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1712. Γöé close          Γöé "io.h"    Γöé close          Γöé Closes a  Γöé
  1713. Γöé             Γöé        Γöé             Γöé file    Γöé
  1714. Γöé             Γöé        Γöé             Γöé associ-  Γöé
  1715. Γöé             Γöé        Γöé             Γöé ated with Γöé
  1716. Γöé             Γöé        Γöé             Γöé the    Γöé
  1717. Γöé             Γöé        Γöé             Γöé handle.  Γöé
  1718. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1719. Γöé creat          Γöé "io.h"    Γöé creat          Γöé Creates a Γöé
  1720. Γöé             Γöé        Γöé             Γöé new file  Γöé
  1721. Γöé             Γöé        Γöé             Γöé or opens  Γöé
  1722. Γöé             Γöé        Γöé             Γöé and trun- Γöé
  1723. Γöé             Γöé        Γöé             Γöé cates an  Γöé
  1724. Γöé             Γöé        Γöé             Γöé existing  Γöé
  1725. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1726. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1727. Γöé dup           Γöé "io.h"    Γöé dup           Γöé Associ-  Γöé
  1728. Γöé             Γöé        Γöé             Γöé ates a   Γöé
  1729. Γöé             Γöé        Γöé             Γöé second   Γöé
  1730. Γöé             Γöé        Γöé             Γöé file    Γöé
  1731. Γöé             Γöé        Γöé             Γöé handle   Γöé
  1732. Γöé             Γöé        Γöé             Γöé with an  Γöé
  1733. Γöé             Γöé        Γöé             Γöé open    Γöé
  1734. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1735. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1736. Γöé dup2           Γöé "io.h"    Γöé dup2           Γöé Associ-  Γöé
  1737. Γöé             Γöé        Γöé             Γöé ates a   Γöé
  1738. Γöé             Γöé        Γöé             Γöé second   Γöé
  1739. Γöé             Γöé        Γöé             Γöé file    Γöé
  1740. Γöé             Γöé        Γöé             Γöé handle,  Γöé
  1741. Γöé             Γöé        Γöé             Γöé with pos- Γöé
  1742. Γöé             Γöé        Γöé             Γöé sibly   Γöé
  1743. Γöé             Γöé        Γöé             Γöé different Γöé
  1744. Γöé             Γöé        Γöé             Γöé attri-   Γöé
  1745. Γöé             Γöé        Γöé             Γöé butes,   Γöé
  1746. Γöé             Γöé        Γöé             Γöé with an  Γöé
  1747. Γöé             Γöé        Γöé             Γöé open    Γöé
  1748. Γöé             Γöé        Γöé             Γöé file.   Γöé
  1749. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1750. Γöé isatty          Γöé "io.h"    Γöé isatty          Γöé Deter-   Γöé
  1751. Γöé             Γöé        Γöé             Γöé mines   Γöé
  1752. Γöé             Γöé        Γöé             Γöé whether  Γöé
  1753. Γöé             Γöé        Γöé             Γöé the    Γöé
  1754. Γöé             Γöé        Γöé             Γöé handle is Γöé
  1755. Γöé             Γöé        Γöé             Γöé associ-  Γöé
  1756. Γöé             Γöé        Γöé             Γöé ated with Γöé
  1757. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  1758. Γöé             Γöé        Γöé             Γöé acter   Γöé
  1759. Γöé             Γöé        Γöé             Γöé device.  Γöé
  1760. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1761. Γöé open           Γöé "io.h"    Γöé open           Γöé Opens a  Γöé
  1762. Γöé             Γöé        Γöé             Γöé file and  Γöé
  1763. Γöé             Γöé        Γöé             Γöé prepares  Γöé
  1764. Γöé             Γöé        Γöé             Γöé it for   Γöé
  1765. Γöé             Γöé        Γöé             Γöé subse-   Γöé
  1766. Γöé             Γöé        Γöé             Γöé quent   Γöé
  1767. Γöé             Γöé        Γöé             Γöé reading  Γöé
  1768. Γöé             Γöé        Γöé             Γöé and    Γöé
  1769. Γöé             Γöé        Γöé             Γöé writing.  Γöé
  1770. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1771. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1772. Γöé _sopen          Γöé "io.h"    Γöé _sopen          Γöé Opens a  Γöé
  1773. Γöé             Γöé        Γöé             Γöé file and  Γöé
  1774. Γöé             Γöé        Γöé             Γöé prepares  Γöé
  1775. Γöé             Γöé        Γöé             Γöé it for   Γöé
  1776. Γöé             Γöé        Γöé             Γöé subse-   Γöé
  1777. Γöé             Γöé        Γöé             Γöé quent   Γöé
  1778. Γöé             Γöé        Γöé             Γöé shared   Γöé
  1779. Γöé             Γöé        Γöé             Γöé reading  Γöé
  1780. Γöé             Γöé        Γöé             Γöé or     Γöé
  1781. Γöé             Γöé        Γöé             Γöé writing.  Γöé
  1782. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1783.  
  1784.  
  1785. ΓòÉΓòÉΓòÉ 2.1.11.6. File Operations ΓòÉΓòÉΓòÉ
  1786.  
  1787. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1788. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1789. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1790. Γöé _chsize         Γöé "io.h"    Γöé chsize          Γöé Lengthens Γöé
  1791. Γöé             Γöé        Γöé             Γöé or cuts  Γöé
  1792. Γöé             Γöé        Γöé             Γöé off the  Γöé
  1793. Γöé             Γöé        Γöé             Γöé file to a Γöé
  1794. Γöé             Γöé        Γöé             Γöé specified Γöé
  1795. Γöé             Γöé        Γöé             Γöé length.  Γöé
  1796. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1797. Γöé _filelength       Γöé "io.h"    Γöé _filelength       Γöé Returns  Γöé
  1798. Γöé             Γöé        Γöé             Γöé the    Γöé
  1799. Γöé             Γöé        Γöé             Γöé length of Γöé
  1800. Γöé             Γöé        Γöé             Γöé a file.  Γöé
  1801. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1802.  
  1803.  
  1804. ΓòÉΓòÉΓòÉ 2.1.12. Handling Argument Lists ΓòÉΓòÉΓòÉ
  1805.  
  1806. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1807. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1808. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1809. Γöé va_arg          Γöé "stdarg.h"  Γöé va_arg - va_end -    Γöé Allows   Γöé
  1810. Γöé             Γöé        Γöé va_start         Γöé access to Γöé
  1811. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1812. Γöé             Γöé        Γöé             Γöé number of Γöé
  1813. Γöé             Γöé        Γöé             Γöé function  Γöé
  1814. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1815. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1816. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1817. Γöé va_end          Γöé "stdarg.h"  Γöé va_arg - va_end -    Γöé Allows   Γöé
  1818. Γöé             Γöé        Γöé va_start         Γöé access to Γöé
  1819. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1820. Γöé             Γöé        Γöé             Γöé number of Γöé
  1821. Γöé             Γöé        Γöé             Γöé function  Γöé
  1822. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1823. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1824. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1825. Γöé va_start         Γöé "stdarg.h"  Γöé va_arg - va_end -    Γöé Allows   Γöé
  1826. Γöé             Γöé        Γöé va_start         Γöé access to Γöé
  1827. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1828. Γöé             Γöé        Γöé             Γöé number of Γöé
  1829. Γöé             Γöé        Γöé             Γöé function  Γöé
  1830. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1831. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1832. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1833. Γöé vfprintf         Γöé "stdarg.h""  Γöé vfprintf         Γöé Formats  Γöé
  1834. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1835. Γöé             Γöé        Γöé             Γöé prints   Γöé
  1836. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1837. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1838. Γöé             Γöé        Γöé             Γöé the    Γöé
  1839. Γöé             Γöé        Γöé             Γöé output   Γöé
  1840. Γöé             Γöé        Γöé             Γöé stream   Γöé
  1841. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1842. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1843. Γöé             Γöé        Γöé             Γöé number of Γöé
  1844. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1845. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1846. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1847. Γöé vprintf         Γöé "stdarg.h""  Γöé vprintf         Γöé Formats  Γöé
  1848. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1849. Γöé             Γöé        Γöé             Γöé writes   Γöé
  1850. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1851. Γöé             Γöé        Γöé             Γöé ters to  Γöé
  1852. Γöé             Γöé        Γöé             Γöé stdout   Γöé
  1853. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1854. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1855. Γöé             Γöé        Γöé             Γöé number of Γöé
  1856. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1857. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1858. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1859. Γöé vsprintf         Γöé "stdarg.h""  Γöé vsprintf         Γöé Formats  Γöé
  1860. Γöé             Γöé stdio.h"   Γöé             Γöé and    Γöé
  1861. Γöé             Γöé        Γöé             Γöé writes   Γöé
  1862. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  1863. Γöé             Γöé        Γöé             Γöé ters to a Γöé
  1864. Γöé             Γöé        Γöé             Γöé buffer   Γöé
  1865. Γöé             Γöé        Γöé             Γöé using a  Γöé
  1866. Γöé             Γöé        Γöé             Γöé variable  Γöé
  1867. Γöé             Γöé        Γöé             Γöé number of Γöé
  1868. Γöé             Γöé        Γöé             Γöé argu-   Γöé
  1869. Γöé             Γöé        Γöé             Γöé ments.   Γöé
  1870. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1871.  
  1872.  
  1873. ΓòÉΓòÉΓòÉ 2.1.13. Pseudorandom Numbers ΓòÉΓòÉΓòÉ
  1874.  
  1875. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1876. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1877. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1878. Γöé rand           Γöé "stdlib.h"  Γöé rand           Γöé Returns a Γöé
  1879. Γöé             Γöé        Γöé             Γöé pseudorandΓöém
  1880. Γöé             Γöé        Γöé             Γöé integer.  Γöé
  1881. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1882. Γöé srand          Γöé "stdlib.h"  Γöé srand          Γöé Sets the  Γöé
  1883. Γöé             Γöé        Γöé             Γöé starting  Γöé
  1884. Γöé             Γöé        Γöé             Γöé point for Γöé
  1885. Γöé             Γöé        Γöé             Γöé pseudorandΓöém
  1886. Γöé             Γöé        Γöé             Γöé numbers.  Γöé
  1887. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1888.  
  1889.  
  1890. ΓòÉΓòÉΓòÉ 2.1.14. Dynamic Memory Management ΓòÉΓòÉΓòÉ
  1891.  
  1892. This section describes the following input/output functions: 
  1893.  
  1894.      Allocating and Freeing Memory 
  1895.      Heap Information and Checking 
  1896.      Heap Creation and Management 
  1897.  
  1898.  
  1899. ΓòÉΓòÉΓòÉ 2.1.14.1. Allocating and Freeing Memory ΓòÉΓòÉΓòÉ
  1900.  
  1901. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1902. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1903. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1904. Γöé calloc          Γöé "stdlib.h""  Γöé calloc          Γöé Reserves  Γöé
  1905. Γöé             Γöé malloc.h"   Γöé             Γöé storage  Γöé
  1906. Γöé             Γöé        Γöé             Γöé space for Γöé
  1907. Γöé             Γöé        Γöé             Γöé an array  Γöé
  1908. Γöé             Γöé        Γöé             Γöé and ini-  Γöé
  1909. Γöé             Γöé        Γöé             Γöé tializes  Γöé
  1910. Γöé             Γöé        Γöé             Γöé the    Γöé
  1911. Γöé             Γöé        Γöé             Γöé values of Γöé
  1912. Γöé             Γöé        Γöé             Γöé all ele-  Γöé
  1913. Γöé             Γöé        Γöé             Γöé ments to  Γöé
  1914. Γöé             Γöé        Γöé             Γöé 0.     Γöé
  1915. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1916. Γöé free           Γöé "stdlib.h""  Γöé free           Γöé Releases  Γöé
  1917. Γöé             Γöé malloc.h"   Γöé             Γöé memory   Γöé
  1918. Γöé             Γöé        Γöé             Γöé blocks.  Γöé
  1919. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1920. Γöé _heapmin         Γöé "stdlib.h""  Γöé _heapmin         Γöé Returns  Γöé
  1921. Γöé             Γöé malloc.h"   Γöé             Γöé all    Γöé
  1922. Γöé             Γöé        Γöé             Γöé unused   Γöé
  1923. Γöé             Γöé        Γöé             Γöé memory   Γöé
  1924. Γöé             Γöé        Γöé             Γöé from the  Γöé
  1925. Γöé             Γöé        Γöé             Γöé run-time  Γöé
  1926. Γöé             Γöé        Γöé             Γöé heap to  Γöé
  1927. Γöé             Γöé        Γöé             Γöé the oper- Γöé
  1928. Γöé             Γöé        Γöé             Γöé ating   Γöé
  1929. Γöé             Γöé        Γöé             Γöé system.  Γöé
  1930. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1931. Γöé malloc          Γöé "stdlib.h""  Γöé malloc          Γöé Allocates Γöé
  1932. Γöé             Γöé malloc.h"   Γöé             Γöé memory   Γöé
  1933. Γöé             Γöé        Γöé             Γöé blocks.  Γöé
  1934. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1935. Γöé realloc         Γöé "stdlib.h""  Γöé realloc         Γöé Changes  Γöé
  1936. Γöé             Γöé malloc.h"   Γöé             Γöé storage  Γöé
  1937. Γöé             Γöé        Γöé             Γöé size    Γöé
  1938. Γöé             Γöé        Γöé             Γöé allocated Γöé
  1939. Γöé             Γöé        Γöé             Γöé for an   Γöé
  1940. Γöé             Γöé        Γöé             Γöé object.  Γöé
  1941. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  1942.  
  1943.  
  1944. ΓòÉΓòÉΓòÉ 2.1.14.2. Heap Information and Checking ΓòÉΓòÉΓòÉ
  1945.  
  1946. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  1947. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  1948. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1949. Γöé _heapset         Γöé "malloc.h"  Γöé _heapset         Γöé Validates Γöé
  1950. Γöé             Γöé        Γöé             Γöé all allo- Γöé
  1951. Γöé             Γöé        Γöé             Γöé cated and Γöé
  1952. Γöé             Γöé        Γöé             Γöé freed   Γöé
  1953. Γöé             Γöé        Γöé             Γöé objects  Γöé
  1954. Γöé             Γöé        Γöé             Γöé on the   Γöé
  1955. Γöé             Γöé        Γöé             Γöé default  Γöé
  1956. Γöé             Γöé        Γöé             Γöé heap, and Γöé
  1957. Γöé             Γöé        Γöé             Γöé sets all  Γöé
  1958. Γöé             Γöé        Γöé             Γöé free    Γöé
  1959. Γöé             Γöé        Γöé             Γöé memory to Γöé
  1960. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  1961. Γöé             Γöé        Γöé             Γöé fied    Γöé
  1962. Γöé             Γöé        Γöé             Γöé value.   Γöé
  1963. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1964. Γöé _heapchk         Γöé "malloc.h"  Γöé _heapchk         Γöé Checks   Γöé
  1965. Γöé             Γöé        Γöé             Γöé all allo- Γöé
  1966. Γöé             Γöé        Γöé             Γöé cated and Γöé
  1967. Γöé             Γöé        Γöé             Γöé freed   Γöé
  1968. Γöé             Γöé        Γöé             Γöé objects  Γöé
  1969. Γöé             Γöé        Γöé             Γöé on the   Γöé
  1970. Γöé             Γöé        Γöé             Γöé default  Γöé
  1971. Γöé             Γöé        Γöé             Γöé storage  Γöé
  1972. Γöé             Γöé        Γöé             Γöé heap for  Γöé
  1973. Γöé             Γöé        Γöé             Γöé minimal  Γöé
  1974. Γöé             Γöé        Γöé             Γöé consist-  Γöé
  1975. Γöé             Γöé        Γöé             Γöé ency.   Γöé
  1976. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1977. Γöé _heap_walk        Γöé "malloc.h"  Γöé _heap_walk        Γöé Returns  Γöé
  1978. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  1979. Γöé             Γöé        Γöé             Γöé tion    Γöé
  1980. Γöé             Γöé        Γöé             Γöé about   Γöé
  1981. Γöé             Γöé        Γöé             Γöé allocated Γöé
  1982. Γöé             Γöé        Γöé             Γöé and freed Γöé
  1983. Γöé             Γöé        Γöé             Γöé objects  Γöé
  1984. Γöé             Γöé        Γöé             Γöé on the   Γöé
  1985. Γöé             Γöé        Γöé             Γöé default  Γöé
  1986. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  1987. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1988. Γöé _mheap          Γöé "umalloc.h"  Γöé _mheap          Γöé Finds out Γöé
  1989. Γöé             Γöé        Γöé             Γöé which   Γöé
  1990. Γöé             Γöé        Γöé             Γöé heap an  Γöé
  1991. Γöé             Γöé        Γöé             Γöé object   Γöé
  1992. Γöé             Γöé        Γöé             Γöé was allo- Γöé
  1993. Γöé             Γöé        Γöé             Γöé cated   Γöé
  1994. Γöé             Γöé        Γöé             Γöé from.   Γöé
  1995. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  1996. Γöé _msize          Γöé "stdlib.h""  Γöé _msize          Γöé Returns  Γöé
  1997. Γöé             Γöé malloc.h"   Γöé             Γöé the size  Γöé
  1998. Γöé             Γöé        Γöé             Γöé of an   Γöé
  1999. Γöé             Γöé        Γöé             Γöé allocated Γöé
  2000. Γöé             Γöé        Γöé             Γöé block.   Γöé
  2001. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2002. Γöé _uheapchk        Γöé "umalloc.h"  Γöé _uheapchk        Γöé Validates Γöé
  2003. Γöé             Γöé        Γöé             Γöé all allo- Γöé
  2004. Γöé             Γöé        Γöé             Γöé cated and Γöé
  2005. Γöé             Γöé        Γöé             Γöé freed   Γöé
  2006. Γöé             Γöé        Γöé             Γöé objects  Γöé
  2007. Γöé             Γöé        Γöé             Γöé on a    Γöé
  2008. Γöé             Γöé        Γöé             Γöé specified Γöé
  2009. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  2010. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2011. Γöé _uheapset        Γöé "umalloc.h"  Γöé _uheapset        Γöé Validates Γöé
  2012. Γöé             Γöé        Γöé             Γöé all allo- Γöé
  2013. Γöé             Γöé        Γöé             Γöé cated and Γöé
  2014. Γöé             Γöé        Γöé             Γöé freed   Γöé
  2015. Γöé             Γöé        Γöé             Γöé objects  Γöé
  2016. Γöé             Γöé        Γöé             Γöé on a    Γöé
  2017. Γöé             Γöé        Γöé             Γöé specified Γöé
  2018. Γöé             Γöé        Γöé             Γöé heap, and Γöé
  2019. Γöé             Γöé        Γöé             Γöé sets all  Γöé
  2020. Γöé             Γöé        Γöé             Γöé free    Γöé
  2021. Γöé             Γöé        Γöé             Γöé memory to Γöé
  2022. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  2023. Γöé             Γöé        Γöé             Γöé fied    Γöé
  2024. Γöé             Γöé        Γöé             Γöé value.   Γöé
  2025. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2026. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2027. Γöé _uheap_walk       Γöé "umalloc.h"  Γöé _uheap_walk       Γöé Returns  Γöé
  2028. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  2029. Γöé             Γöé        Γöé             Γöé tion    Γöé
  2030. Γöé             Γöé        Γöé             Γöé about   Γöé
  2031. Γöé             Γöé        Γöé             Γöé allocated Γöé
  2032. Γöé             Γöé        Γöé             Γöé and freed Γöé
  2033. Γöé             Γöé        Γöé             Γöé objects  Γöé
  2034. Γöé             Γöé        Γöé             Γöé on a    Γöé
  2035. Γöé             Γöé        Γöé             Γöé specified Γöé
  2036. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  2037. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2038. Γöé _ustats         Γöé "umalloc.h"  Γöé _ustats         Γöé Gets    Γöé
  2039. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  2040. Γöé             Γöé        Γöé             Γöé tion    Γöé
  2041. Γöé             Γöé        Γöé             Γöé about a  Γöé
  2042. Γöé             Γöé        Γöé             Γöé specified Γöé
  2043. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  2044. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2045.  
  2046.  
  2047. ΓòÉΓòÉΓòÉ 2.1.14.3. Heap Creation and Management ΓòÉΓòÉΓòÉ
  2048.  
  2049. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2050. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2051. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2052. Γöé _uaddmem         Γöé "umalloc.h"  Γöé _uaddmem         Γöé Adds    Γöé
  2053. Γöé             Γöé        Γöé             Γöé memory to Γöé
  2054. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  2055. Γöé             Γöé        Γöé             Γöé fied    Γöé
  2056. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  2057. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2058. Γöé _uclose         Γöé "umalloc.h"  Γöé _uclose         Γöé Closes a  Γöé
  2059. Γöé             Γöé        Γöé             Γöé heap so  Γöé
  2060. Γöé             Γöé        Γöé             Γöé it can no Γöé
  2061. Γöé             Γöé        Γöé             Γöé longer be Γöé
  2062. Γöé             Γöé        Γöé             Γöé used.   Γöé
  2063. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2064. Γöé _ucreate         Γöé "umalloc.h"  Γöé _ucreate         Γöé Creates a Γöé
  2065. Γöé             Γöé        Γöé             Γöé heap of  Γöé
  2066. Γöé             Γöé        Γöé             Γöé memory.  Γöé
  2067. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2068. Γöé _udefault        Γöé "umalloc.h"  Γöé _udefault        Γöé Changes  Γöé
  2069. Γöé             Γöé        Γöé             Γöé the    Γöé
  2070. Γöé             Γöé        Γöé             Γöé memory   Γöé
  2071. Γöé             Γöé        Γöé             Γöé heap used Γöé
  2072. Γöé             Γöé        Γöé             Γöé as the   Γöé
  2073. Γöé             Γöé        Γöé             Γöé default  Γöé
  2074. Γöé             Γöé        Γöé             Γöé heap.   Γöé
  2075. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2076. Γöé _udestroy        Γöé "umalloc.h"  Γöé _udestroy        Γöé Destroys  Γöé
  2077. Γöé             Γöé        Γöé             Γöé a heap.  Γöé
  2078. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2079. Γöé _uopen          Γöé "umalloc.h"  Γöé _uopen          Γöé Opens a  Γöé
  2080. Γöé             Γöé        Γöé             Γöé heap so  Γöé
  2081. Γöé             Γöé        Γöé             Γöé it can be Γöé
  2082. Γöé             Γöé        Γöé             Γöé used.   Γöé
  2083. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2084.  
  2085.  
  2086. ΓòÉΓòÉΓòÉ 2.1.15. Memory Objects ΓòÉΓòÉΓòÉ
  2087.  
  2088. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2089. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2090. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2091. Γöé memchr          Γöé "string.h""  Γöé memchr          Γöé Searches  Γöé
  2092. Γöé             Γöé memory.h"   Γöé             Γöé a buffer  Γöé
  2093. Γöé             Γöé        Γöé             Γöé for the  Γöé
  2094. Γöé             Γöé        Γöé             Γöé first   Γöé
  2095. Γöé             Γöé        Γöé             Γöé occur-   Γöé
  2096. Γöé             Γöé        Γöé             Γöé rence of  Γöé
  2097. Γöé             Γöé        Γöé             Γöé a given  Γöé
  2098. Γöé             Γöé        Γöé             Γöé char-   Γöé
  2099. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  2100. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2101. Γöé memcmp          Γöé "string.h""  Γöé memcmp          Γöé Compares  Γöé
  2102. Γöé             Γöé memory.h"   Γöé             Γöé two    Γöé
  2103. Γöé             Γöé        Γöé             Γöé buffers.  Γöé
  2104. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2105. Γöé memcpy          Γöé "string.h""  Γöé memcpy          Γöé Copies a  Γöé
  2106. Γöé             Γöé memory.h"   Γöé             Γöé buffer.  Γöé
  2107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2108. Γöé memicmp         Γöé "string.h""  Γöé memicmp         Γöé Compares  Γöé
  2109. Γöé             Γöé memory.h"   Γöé             Γöé two    Γöé
  2110. Γöé             Γöé        Γöé             Γöé buffers  Γöé
  2111. Γöé             Γöé        Γöé             Γöé without  Γöé
  2112. Γöé             Γöé        Γöé             Γöé regard to Γöé
  2113. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2114. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2115. Γöé memmove         Γöé "string.h""  Γöé memmove         Γöé Moves a  Γöé
  2116. Γöé             Γöé memory.h"   Γöé             Γöé buffer.  Γöé
  2117. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2118. Γöé memset          Γöé "string.h""  Γöé memset          Γöé Sets a   Γöé
  2119. Γöé             Γöé memory.h"   Γöé             Γöé buffer to Γöé
  2120. Γöé             Γöé        Γöé             Γöé a given  Γöé
  2121. Γöé             Γöé        Γöé             Γöé value.   Γöé
  2122. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2123. Γöé swab           Γöé "stdlib.h"  Γöé swab           Γöé Copies   Γöé
  2124. Γöé             Γöé        Γöé             Γöé bytes   Γöé
  2125. Γöé             Γöé        Γöé             Γöé from a   Γöé
  2126. Γöé             Γöé        Γöé             Γöé specified Γöé
  2127. Γöé             Γöé        Γöé             Γöé source   Γöé
  2128. Γöé             Γöé        Γöé             Γöé and swaps Γöé
  2129. Γöé             Γöé        Γöé             Γöé each pair Γöé
  2130. Γöé             Γöé        Γöé             Γöé of adja-  Γöé
  2131. Γöé             Γöé        Γöé             Γöé cent    Γöé
  2132. Γöé             Γöé        Γöé             Γöé bytes.   Γöé
  2133. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2134.  
  2135.  
  2136. ΓòÉΓòÉΓòÉ 2.1.16. Environment Interaction ΓòÉΓòÉΓòÉ
  2137.  
  2138. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2139. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2140. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2141. Γöé abort          Γöé "stdlib.h""  Γöé abort          Γöé Termi-   Γöé
  2142. Γöé             Γöé process.h"  Γöé             Γöé nates a  Γöé
  2143. Γöé             Γöé        Γöé             Γöé program  Γöé
  2144. Γöé             Γöé        Γöé             Γöé abnor-   Γöé
  2145. Γöé             Γöé        Γöé             Γöé mally.   Γöé
  2146. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2147. Γöé exit           Γöé "stdlib.h""  Γöé exit           Γöé Ends a   Γöé
  2148. Γöé             Γöé process.h"  Γöé             Γöé program  Γöé
  2149. Γöé             Γöé        Γöé             Γöé normally. Γöé
  2150. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2151. Γöé getenv          Γöé "stdlib.h"  Γöé getenv          Γöé Searches  Γöé
  2152. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  2153. Γöé             Γöé        Γöé             Γöé ment var- Γöé
  2154. Γöé             Γöé        Γöé             Γöé iables   Γöé
  2155. Γöé             Γöé        Γöé             Γöé for a   Γöé
  2156. Γöé             Γöé        Γöé             Γöé specified Γöé
  2157. Γöé             Γöé        Γöé             Γöé variable. Γöé
  2158. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2159. Γöé longjmp         Γöé "setjmp.h"  Γöé longjmp         Γöé Restores  Γöé
  2160. Γöé             Γöé        Γöé             Γöé a stack  Γöé
  2161. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  2162. Γöé             Γöé        Γöé             Γöé ment.   Γöé
  2163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2164. Γöé setjmp          Γöé "setjmp.h"  Γöé setjmp          Γöé Saves a  Γöé
  2165. Γöé             Γöé        Γöé             Γöé stack   Γöé
  2166. Γöé             Γöé        Γöé             Γöé environ-  Γöé
  2167. Γöé             Γöé        Γöé             Γöé ment.   Γöé
  2168. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2169. Γöé system          Γöé "stdlib.h""  Γöé system          Γöé Passes a  Γöé
  2170. Γöé             Γöé process.h"  Γöé             Γöé string to Γöé
  2171. Γöé             Γöé        Γöé             Γöé the oper- Γöé
  2172. Γöé             Γöé        Γöé             Γöé ating   Γöé
  2173. Γöé             Γöé        Γöé             Γöé system's  Γöé
  2174. Γöé             Γöé        Γöé             Γöé command  Γöé
  2175. Γöé             Γöé        Γöé             Γöé inter-   Γöé
  2176. Γöé             Γöé        Γöé             Γöé preter.  Γöé
  2177. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2178.  
  2179.  
  2180. ΓòÉΓòÉΓòÉ 2.1.16.1. Setting and Querying Locale ΓòÉΓòÉΓòÉ
  2181.  
  2182. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2183. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2184. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2185. Γöé iconv          Γöé "iconv.h"   Γöé iconv          Γöé Converts  Γöé
  2186. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2187. Γöé             Γöé        Γöé             Γöé ters from Γöé
  2188. Γöé             Γöé        Γöé             Γöé one    Γöé
  2189. Γöé             Γöé        Γöé             Γöé codeset  Γöé
  2190. Γöé             Γöé        Γöé             Γöé to     Γöé
  2191. Γöé             Γöé        Γöé             Γöé another.  Γöé
  2192. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2193. Γöé iconv_close       Γöé "iconv.h"   Γöé iconv_close       Γöé Deletes  Γöé
  2194. Γöé             Γöé        Γöé             Γöé the con-  Γöé
  2195. Γöé             Γöé        Γöé             Γöé version  Γöé
  2196. Γöé             Γöé        Γöé             Γöé descriptorΓöé
  2197. Γöé             Γöé        Γöé             Γöé created  Γöé
  2198. Γöé             Γöé        Γöé             Γöé by     Γöé
  2199. Γöé             Γöé        Γöé             Γöé iconv_openΓöé
  2200. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2201. Γöé iconv_open        Γöé "iconv.h"   Γöé iconv_open        Γöé Creates a Γöé
  2202. Γöé             Γöé        Γöé             Γöé conver-  Γöé
  2203. Γöé             Γöé        Γöé             Γöé sion    Γöé
  2204. Γöé             Γöé        Γöé             Γöé descriptorΓöé
  2205. Γöé             Γöé        Γöé             Γöé for iconv Γöé
  2206. Γöé             Γöé        Γöé             Γöé to use in Γöé
  2207. Γöé             Γöé        Γöé             Γöé con-    Γöé
  2208. Γöé             Γöé        Γöé             Γöé verting  Γöé
  2209. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2210. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2211. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2212. Γöé localeconv        Γöé "locale.h"  Γöé localeconv        Γöé Queries  Γöé
  2213. Γöé             Γöé        Γöé             Γöé the    Γöé
  2214. Γöé             Γöé        Γöé             Γöé numeric  Γöé
  2215. Γöé             Γöé        Γöé             Γöé format-  Γöé
  2216. Γöé             Γöé        Γöé             Γöé ting con- Γöé
  2217. Γöé             Γöé        Γöé             Γöé ventions  Γöé
  2218. Γöé             Γöé        Γöé             Γöé for the  Γöé
  2219. Γöé             Γöé        Γöé             Γöé current  Γöé
  2220. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2221. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2222. Γöé nl_langinfo       Γöé "langinfo.h""Γöé nl_langinfo       Γöé Retrieves Γöé
  2223. Γöé             Γöé nl_types.h"  Γöé             Γöé requested Γöé
  2224. Γöé             Γöé        Γöé             Γöé informa-  Γöé
  2225. Γöé             Γöé        Γöé             Γöé tion for  Γöé
  2226. Γöé             Γöé        Γöé             Γöé the    Γöé
  2227. Γöé             Γöé        Γöé             Γöé current  Γöé
  2228. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2229. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2230. Γöé setlocale        Γöé "locale.h"  Γöé setlocale        Γöé Changes  Γöé
  2231. Γöé             Γöé        Γöé             Γöé or     Γöé
  2232. Γöé             Γöé        Γöé             Γöé queries  Γöé
  2233. Γöé             Γöé        Γöé             Γöé the    Γöé
  2234. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2235. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2236. Γöé wctype          Γöé "wctype.h"  Γöé wctype          Γöé Returns  Γöé
  2237. Γöé             Γöé        Γöé             Γöé the    Γöé
  2238. Γöé             Γöé        Γöé             Γöé handle   Γöé
  2239. Γöé             Γöé        Γöé             Γöé for a   Γöé
  2240. Γöé             Γöé        Γöé             Γöé character Γöé
  2241. Γöé             Γöé        Γöé             Γöé class or  Γöé
  2242. Γöé             Γöé        Γöé             Γöé property. Γöé
  2243. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2244.  
  2245.  
  2246. ΓòÉΓòÉΓòÉ 2.1.16.2. String and Character Collating ΓòÉΓòÉΓòÉ
  2247.  
  2248. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2249. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2250. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2251. Γöé strcoll         Γöé "string.h"  Γöé strcoll         Γöé Compares  Γöé
  2252. Γöé             Γöé        Γöé             Γöé two    Γöé
  2253. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2254. Γöé             Γöé        Γöé             Γöé based on  Γöé
  2255. Γöé             Γöé        Γöé             Γöé the col-  Γöé
  2256. Γöé             Γöé        Γöé             Γöé lating   Γöé
  2257. Γöé             Γöé        Γöé             Γöé elements  Γöé
  2258. Γöé             Γöé        Γöé             Γöé in the   Γöé
  2259. Γöé             Γöé        Γöé             Γöé current  Γöé
  2260. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2261. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2262. Γöé wcscoll         Γöé "wchar.h"   Γöé wcscoll         Γöé Compares  Γöé
  2263. Γöé             Γöé        Γöé             Γöé two wide  Γöé
  2264. Γöé             Γöé        Γöé             Γöé character Γöé
  2265. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2266. Γöé             Γöé        Γöé             Γöé based on  Γöé
  2267. Γöé             Γöé        Γöé             Γöé the col-  Γöé
  2268. Γöé             Γöé        Γöé             Γöé lating   Γöé
  2269. Γöé             Γöé        Γöé             Γöé elements  Γöé
  2270. Γöé             Γöé        Γöé             Γöé for the  Γöé
  2271. Γöé             Γöé        Γöé             Γöé current  Γöé
  2272. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2273. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2274.  
  2275.  
  2276. ΓòÉΓòÉΓòÉ 2.1.17. String Operations ΓòÉΓòÉΓòÉ
  2277.  
  2278. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2279. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2280. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2281. Γöé strcat          Γöé "string.h"  Γöé strcat          Γöé Concat-  Γöé
  2282. Γöé             Γöé        Γöé             Γöé enates   Γöé
  2283. Γöé             Γöé        Γöé             Γöé two    Γöé
  2284. Γöé             Γöé        Γöé             Γöé strings.  Γöé
  2285. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2286. Γöé strchr          Γöé "string.h"  Γöé strchr          Γöé Locates  Γöé
  2287. Γöé             Γöé        Γöé             Γöé the first Γöé
  2288. Γöé             Γöé        Γöé             Γöé occur-   Γöé
  2289. Γöé             Γöé        Γöé             Γöé rence of  Γöé
  2290. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  2291. Γöé             Γöé        Γöé             Γöé fied    Γöé
  2292. Γöé             Γöé        Γöé             Γöé character Γöé
  2293. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2294. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2295. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2296. Γöé strcmp          Γöé "string.h"  Γöé strcmp          Γöé Compares  Γöé
  2297. Γöé             Γöé        Γöé             Γöé the value Γöé
  2298. Γöé             Γöé        Γöé             Γöé of two   Γöé
  2299. Γöé             Γöé        Γöé             Γöé strings.  Γöé
  2300. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2301. Γöé strcmpi         Γöé "string.h"  Γöé strcmpi         Γöé Compares  Γöé
  2302. Γöé             Γöé        Γöé             Γöé two    Γöé
  2303. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2304. Γöé             Γöé        Γöé             Γöé without  Γöé
  2305. Γöé             Γöé        Γöé             Γöé sensi-   Γöé
  2306. Γöé             Γöé        Γöé             Γöé tivity to Γöé
  2307. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2308. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2309. Γöé strcoll         Γöé "string.h"  Γöé strcoll         Γöé Compares  Γöé
  2310. Γöé             Γöé        Γöé             Γöé two    Γöé
  2311. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2312. Γöé             Γöé        Γöé             Γöé based on  Γöé
  2313. Γöé             Γöé        Γöé             Γöé the col-  Γöé
  2314. Γöé             Γöé        Γöé             Γöé lating   Γöé
  2315. Γöé             Γöé        Γöé             Γöé elements  Γöé
  2316. Γöé             Γöé        Γöé             Γöé for the  Γöé
  2317. Γöé             Γöé        Γöé             Γöé current  Γöé
  2318. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2319. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2320. Γöé strcpy          Γöé "string.h"  Γöé strcpy          Γöé Copies   Γöé
  2321. Γöé             Γöé        Γöé             Γöé one    Γöé
  2322. Γöé             Γöé        Γöé             Γöé string   Γöé
  2323. Γöé             Γöé        Γöé             Γöé into    Γöé
  2324. Γöé             Γöé        Γöé             Γöé another.  Γöé
  2325. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2326. Γöé strcspn         Γöé "string.h"  Γöé strcspn         Γöé Finds the Γöé
  2327. Γöé             Γöé        Γöé             Γöé length of Γöé
  2328. Γöé             Γöé        Γöé             Γöé the first Γöé
  2329. Γöé             Γöé        Γöé             Γöé substring Γöé
  2330. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2331. Γöé             Γöé        Γöé             Γöé string of Γöé
  2332. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2333. Γöé             Γöé        Γöé             Γöé ters not  Γöé
  2334. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2335. Γöé             Γöé        Γöé             Γöé second   Γöé
  2336. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2337. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2338. Γöé strdup          Γöé "string.h"  Γöé strdup          Γöé Reserves  Γöé
  2339. Γöé             Γöé        Γöé             Γöé storage  Γöé
  2340. Γöé             Γöé        Γöé             Γöé space for Γöé
  2341. Γöé             Γöé        Γöé             Γöé the copy  Γöé
  2342. Γöé             Γöé        Γöé             Γöé of a    Γöé
  2343. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2344. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2345. Γöé stricmp         Γöé "string.h"  Γöé stricmp         Γöé Compares  Γöé
  2346. Γöé             Γöé        Γöé             Γöé two    Γöé
  2347. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2348. Γöé             Γöé        Γöé             Γöé without  Γöé
  2349. Γöé             Γöé        Γöé             Γöé sensi-   Γöé
  2350. Γöé             Γöé        Γöé             Γöé tivity to Γöé
  2351. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2352. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2353. Γöé strlen          Γöé "string.h"  Γöé strlen          Γöé Calcu-   Γöé
  2354. Γöé             Γöé        Γöé             Γöé lates the Γöé
  2355. Γöé             Γöé        Γöé             Γöé length of Γöé
  2356. Γöé             Γöé        Γöé             Γöé a string. Γöé
  2357. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2358. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2359. Γöé strncat         Γöé "string.h"  Γöé strncat         Γöé Adds a   Γöé
  2360. Γöé             Γöé        Γöé             Γöé specified Γöé
  2361. Γöé             Γöé        Γöé             Γöé length of Γöé
  2362. Γöé             Γöé        Γöé             Γöé one    Γöé
  2363. Γöé             Γöé        Γöé             Γöé string to Γöé
  2364. Γöé             Γöé        Γöé             Γöé another  Γöé
  2365. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2366. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2367. Γöé strncmp         Γöé "string.h"  Γöé strncmp         Γöé Compares  Γöé
  2368. Γöé             Γöé        Γöé             Γöé two    Γöé
  2369. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2370. Γöé             Γöé        Γöé             Γöé up to a  Γöé
  2371. Γöé             Γöé        Γöé             Γöé specified Γöé
  2372. Γöé             Γöé        Γöé             Γöé length.  Γöé
  2373. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2374. Γöé strncpy         Γöé "string.h"  Γöé strncpy         Γöé Copies a  Γöé
  2375. Γöé             Γöé        Γöé             Γöé specified Γöé
  2376. Γöé             Γöé        Γöé             Γöé length of Γöé
  2377. Γöé             Γöé        Γöé             Γöé one    Γöé
  2378. Γöé             Γöé        Γöé             Γöé string   Γöé
  2379. Γöé             Γöé        Γöé             Γöé into    Γöé
  2380. Γöé             Γöé        Γöé             Γöé another.  Γöé
  2381. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2382. Γöé strnicmp         Γöé "string.h"  Γöé strnicmp         Γöé Compares  Γöé
  2383. Γöé             Γöé        Γöé             Γöé two    Γöé
  2384. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2385. Γöé             Γöé        Γöé             Γöé up to a  Γöé
  2386. Γöé             Γöé        Γöé             Γöé specified Γöé
  2387. Γöé             Γöé        Γöé             Γöé length,  Γöé
  2388. Γöé             Γöé        Γöé             Γöé without  Γöé
  2389. Γöé             Γöé        Γöé             Γöé sensi-   Γöé
  2390. Γöé             Γöé        Γöé             Γöé tivity to Γöé
  2391. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2392. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2393. Γöé strnset         Γöé "string.h"  Γöé strnset - strset     Γöé Sets all  Γöé
  2394. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2395. Γöé             Γöé        Γöé             Γöé ters in a Γöé
  2396. Γöé             Γöé        Γöé             Γöé specified Γöé
  2397. Γöé             Γöé        Γöé             Γöé length of Γöé
  2398. Γöé             Γöé        Γöé             Γöé string to Γöé
  2399. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  2400. Γöé             Γöé        Γöé             Γöé fied    Γöé
  2401. Γöé             Γöé        Γöé             Γöé char-   Γöé
  2402. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  2403. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2404. Γöé strpbrk         Γöé "string.h"  Γöé strpbrk         Γöé Locates  Γöé
  2405. Γöé             Γöé        Γöé             Γöé specified Γöé
  2406. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2407. Γöé             Γöé        Γöé             Γöé ters in a Γöé
  2408. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2409. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2410. Γöé strrchr         Γöé "string.h"  Γöé strrchr         Γöé Locates  Γöé
  2411. Γöé             Γöé        Γöé             Γöé the last  Γöé
  2412. Γöé             Γöé        Γöé             Γöé occur-   Γöé
  2413. Γöé             Γöé        Γöé             Γöé rence of  Γöé
  2414. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  2415. Γöé             Γöé        Γöé             Γöé acter   Γöé
  2416. Γöé             Γöé        Γöé             Γöé within a  Γöé
  2417. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2418. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2419. Γöé strrev          Γöé "string.h"  Γöé strrev          Γöé Reverses  Γöé
  2420. Γöé             Γöé        Γöé             Γöé the order Γöé
  2421. Γöé             Γöé        Γöé             Γöé of char-  Γöé
  2422. Γöé             Γöé        Γöé             Γöé acters in Γöé
  2423. Γöé             Γöé        Γöé             Γöé a string. Γöé
  2424. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2425. Γöé strset          Γöé "string.h"  Γöé strnset - strset     Γöé Sets all  Γöé
  2426. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2427. Γöé             Γöé        Γöé             Γöé ters in a Γöé
  2428. Γöé             Γöé        Γöé             Γöé string to Γöé
  2429. Γöé             Γöé        Γöé             Γöé a speci-  Γöé
  2430. Γöé             Γöé        Γöé             Γöé fied    Γöé
  2431. Γöé             Γöé        Γöé             Γöé char-   Γöé
  2432. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  2433. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2434. Γöé strspn          Γöé "string.h"  Γöé strspn          Γöé Locates  Γöé
  2435. Γöé             Γöé        Γöé             Γöé the first Γöé
  2436. Γöé             Γöé        Γöé             Γöé character Γöé
  2437. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2438. Γöé             Γöé        Γöé             Γöé string   Γöé
  2439. Γöé             Γöé        Γöé             Γöé that is  Γöé
  2440. Γöé             Γöé        Γöé             Γöé not part  Γöé
  2441. Γöé             Γöé        Γöé             Γöé of speci- Γöé
  2442. Γöé             Γöé        Γöé             Γöé fied set  Γöé
  2443. Γöé             Γöé        Γöé             Γöé of char-  Γöé
  2444. Γöé             Γöé        Γöé             Γöé acters.  Γöé
  2445. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2446. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2447. Γöé strstr          Γöé "string.h"  Γöé strstr          Γöé Locates  Γöé
  2448. Γöé             Γöé        Γöé             Γöé the first Γöé
  2449. Γöé             Γöé        Γöé             Γöé occur-   Γöé
  2450. Γöé             Γöé        Γöé             Γöé rence of  Γöé
  2451. Γöé             Γöé        Γöé             Γöé a string  Γöé
  2452. Γöé             Γöé        Γöé             Γöé in     Γöé
  2453. Γöé             Γöé        Γöé             Γöé another  Γöé
  2454. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2455. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2456. Γöé strtok          Γöé "string.h"  Γöé strtok          Γöé Locates a Γöé
  2457. Γöé             Γöé        Γöé             Γöé specified Γöé
  2458. Γöé             Γöé        Γöé             Γöé token in  Γöé
  2459. Γöé             Γöé        Γöé             Γöé a string. Γöé
  2460. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2461. Γöé strxfrm         Γöé "string.h"  Γöé strxfrm         Γöé Trans-   Γöé
  2462. Γöé             Γöé        Γöé             Γöé forms   Γöé
  2463. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2464. Γöé             Γöé        Γöé             Γöé according Γöé
  2465. Γöé             Γöé        Γöé             Γöé to     Γöé
  2466. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2467. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2468.  
  2469.  
  2470. ΓòÉΓòÉΓòÉ 2.1.18. Character Testing ΓòÉΓòÉΓòÉ
  2471.  
  2472. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2473. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2474. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2475. Γöé "isalnum"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2476. Γöé             Γöé        Γöé             Γöé alphanu-  Γöé
  2477. Γöé             Γöé        Γöé             Γöé meric   Γöé
  2478. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2479. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2480. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2481. Γöé "isalpha"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2482. Γöé             Γöé        Γöé             Γöé alpha-   Γöé
  2483. Γöé             Γöé        Γöé             Γöé betic   Γöé
  2484. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2485. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2486. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2487. Γöé isascii         Γöé "ctype.h"   Γöé isascii         Γöé Tests if  Γöé
  2488. Γöé             Γöé        Γöé             Γöé an     Γöé
  2489. Γöé             Γöé        Γöé             Γöé integer  Γöé
  2490. Γöé             Γöé        Γöé             Γöé is within Γöé
  2491. Γöé             Γöé        Γöé             Γöé the ASCII Γöé
  2492. Γöé             Γöé        Γöé             Γöé range.   Γöé
  2493. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2494. Γöé "iscntrl"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2495. Γöé             Γöé        Γöé             Γöé control  Γöé
  2496. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2497. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2498. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2499. Γöé _iscsym         Γöé "ctype.h"   Γöé _iscsym - _iscsymf    Γöé Tests if  Γöé
  2500. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  2501. Γöé             Γöé        Γöé             Γöé acter is  Γöé
  2502. Γöé             Γöé        Γöé             Γöé alpha-   Γöé
  2503. Γöé             Γöé        Γöé             Γöé betic or  Γöé
  2504. Γöé             Γöé        Γöé             Γöé an under- Γöé
  2505. Γöé             Γöé        Γöé             Γöé score.   Γöé
  2506. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2507. Γöé _iscsymf         Γöé "ctype.h"   Γöé _iscsym - _iscsymf    Γöé Tests if  Γöé
  2508. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  2509. Γöé             Γöé        Γöé             Γöé acter is  Γöé
  2510. Γöé             Γöé        Γöé             Γöé alpha-   Γöé
  2511. Γöé             Γöé        Γöé             Γöé betic, a  Γöé
  2512. Γöé             Γöé        Γöé             Γöé digit, or Γöé
  2513. Γöé             Γöé        Γöé             Γöé an under- Γöé
  2514. Γöé             Γöé        Γöé             Γöé score.   Γöé
  2515. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2516. Γöé "isdigit"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2517. Γöé             Γöé        Γöé             Γöé decimal  Γöé
  2518. Γöé             Γöé        Γöé             Γöé digits.  Γöé
  2519. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2520. Γöé "isgraph"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2521. Γöé             Γöé        Γöé             Γöé printable Γöé
  2522. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2523. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2524. Γöé             Γöé        Γöé             Γöé excluding Γöé
  2525. Γöé             Γöé        Γöé             Γöé the    Γöé
  2526. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2527. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2528. Γöé "islower"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2529. Γöé             Γöé        Γöé             Γöé lowercase Γöé
  2530. Γöé             Γöé        Γöé             Γöé letters.  Γöé
  2531. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2532. Γöé "isprint"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2533. Γöé             Γöé        Γöé             Γöé printable Γöé
  2534. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2535. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2536. Γöé             Γöé        Γöé             Γöé including Γöé
  2537. Γöé             Γöé        Γöé             Γöé the    Γöé
  2538. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2539. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2540. Γöé "ispunct"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2541. Γöé             Γöé        Γöé             Γöé printable Γöé
  2542. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2543. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2544. Γöé             Γöé        Γöé             Γöé excluding Γöé
  2545. Γöé             Γöé        Γöé             Γöé the    Γöé
  2546. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2547. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2548. Γöé "isspace"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2549. Γöé             Γöé        Γöé             Γöé white-   Γöé
  2550. Γöé             Γöé        Γöé             Γöé space   Γöé
  2551. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2552. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2553. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2554. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2555. Γöé "isupper"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2556. Γöé             Γöé        Γöé             Γöé uppercase Γöé
  2557. Γöé             Γöé        Γöé             Γöé letters.  Γöé
  2558. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2559. Γöé iswalnum         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2560. Γöé             Γöé        Γöé             Γöé alphanu-  Γöé
  2561. Γöé             Γöé        Γöé             Γöé meric   Γöé
  2562. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2563. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2564. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2565. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2566. Γöé iswalpha         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2567. Γöé             Γöé        Γöé             Γöé alpha-   Γöé
  2568. Γöé             Γöé        Γöé             Γöé betic   Γöé
  2569. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2570. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2571. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2572. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2573. Γöé iswctype         Γöé "wctype.h"  Γöé iswctype         Γöé Tests a  Γöé
  2574. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2575. Γöé             Γöé        Γöé             Γöé character Γöé
  2576. Γöé             Γöé        Γöé             Γöé for a   Γöé
  2577. Γöé             Γöé        Γöé             Γöé specified Γöé
  2578. Γöé             Γöé        Γöé             Γöé property. Γöé
  2579. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2580. Γöé iswdigit         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests   Γöé
  2581. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2582. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2583. Γöé             Γöé        Γöé             Γöé ters for  Γöé
  2584. Γöé             Γöé        Γöé             Γöé decimal  Γöé
  2585. Γöé             Γöé        Γöé             Γöé digits.  Γöé
  2586. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2587. Γöé iswgraph         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2588. Γöé             Γöé        Γöé             Γöé printable Γöé
  2589. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2590. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2591. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2592. Γöé             Γöé        Γöé             Γöé excluding Γöé
  2593. Γöé             Γöé        Γöé             Γöé the    Γöé
  2594. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2595. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2596. Γöé iswlower         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests   Γöé
  2597. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2598. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2599. Γöé             Γöé        Γöé             Γöé ters for  Γöé
  2600. Γöé             Γöé        Γöé             Γöé lowercase Γöé
  2601. Γöé             Γöé        Γöé             Γöé letters.  Γöé
  2602. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2603. Γöé iswprint         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2604. Γöé             Γöé        Γöé             Γöé printable Γöé
  2605. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2606. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2607. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2608. Γöé             Γöé        Γöé             Γöé including Γöé
  2609. Γöé             Γöé        Γöé             Γöé the    Γöé
  2610. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2611. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2612. Γöé iswpunct         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2613. Γöé             Γöé        Γöé             Γöé printable Γöé
  2614. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2615. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2616. Γöé             Γöé        Γöé             Γöé ters    Γöé
  2617. Γöé             Γöé        Γöé             Γöé excluding Γöé
  2618. Γöé             Γöé        Γöé             Γöé the    Γöé
  2619. Γöé             Γöé        Γöé             Γöé space.   Γöé
  2620. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2621. Γöé iswspace         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests for Γöé
  2622. Γöé             Γöé        Γöé             Γöé white-   Γöé
  2623. Γöé             Γöé        Γöé             Γöé space   Γöé
  2624. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2625. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2626. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2627. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2628. Γöé iswupper         Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests   Γöé
  2629. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2630. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2631. Γöé             Γöé        Γöé             Γöé ters for  Γöé
  2632. Γöé             Γöé        Γöé             Γöé uppercase Γöé
  2633. Γöé             Γöé        Γöé             Γöé letters.  Γöé
  2634. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2635. Γöé "isxdigit"        Γöé "ctype.h"   Γöé isalnum to isxdigit   Γöé Tests for Γöé
  2636. Γöé             Γöé        Γöé             Γöé hexadecimaΓöé
  2637. Γöé             Γöé        Γöé             Γöé digits.  Γöé
  2638. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2639. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2640. Γöé iswxdigit        Γöé "wctype.h"  Γöé iswalnum to iswxdigit  Γöé Tests   Γöé
  2641. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2642. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2643. Γöé             Γöé        Γöé             Γöé ters for  Γöé
  2644. Γöé             Γöé        Γöé             Γöé hexadecimaΓöé
  2645. Γöé             Γöé        Γöé             Γöé digits.  Γöé
  2646. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2647. Γöé wcwidth         Γöé "wchar.h"   Γöé wcwidth         Γöé Deter-   Γöé
  2648. Γöé             Γöé        Γöé             Γöé mines   Γöé
  2649. Γöé             Γöé        Γöé             Γöé number of Γöé
  2650. Γöé             Γöé        Γöé             Γöé display  Γöé
  2651. Γöé             Γöé        Γöé             Γöé positions Γöé
  2652. Γöé             Γöé        Γöé             Γöé required  Γöé
  2653. Γöé             Γöé        Γöé             Γöé to     Γöé
  2654. Γöé             Γöé        Γöé             Γöé display a Γöé
  2655. Γöé             Γöé        Γöé             Γöé given   Γöé
  2656. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2657. Γöé             Γöé        Γöé             Γöé char-   Γöé
  2658. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  2659. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2660.  
  2661.  
  2662. ΓòÉΓòÉΓòÉ 2.1.19. Character Case Mapping ΓòÉΓòÉΓòÉ
  2663.  
  2664. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2665. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2666. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2667. Γöé strlwr          Γöé "string.h"  Γöé strlwr          Γöé Converts  Γöé
  2668. Γöé             Γöé        Γöé             Γöé any    Γöé
  2669. Γöé             Γöé        Γöé             Γöé uppercase Γöé
  2670. Γöé             Γöé        Γöé             Γöé letters  Γöé
  2671. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2672. Γöé             Γöé        Γöé             Γöé string to Γöé
  2673. Γöé             Γöé        Γöé             Γöé lower-   Γöé
  2674. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2675. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2676. Γöé strupr          Γöé "string.h"  Γöé strupr          Γöé Converts  Γöé
  2677. Γöé             Γöé        Γöé             Γöé any low-  Γöé
  2678. Γöé             Γöé        Γöé             Γöé ercase   Γöé
  2679. Γöé             Γöé        Γöé             Γöé letters  Γöé
  2680. Γöé             Γöé        Γöé             Γöé in a    Γöé
  2681. Γöé             Γöé        Γöé             Γöé string to Γöé
  2682. Γöé             Γöé        Γöé             Γöé upper-   Γöé
  2683. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2684. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2685. Γöé _toascii         Γöé "ctype.h"   Γöé tolower - toupper    Γöé Converts  Γöé
  2686. Γöé             Γöé        Γöé             Γöé a value  Γöé
  2687. Γöé             Γöé        Γöé             Γöé to its   Γöé
  2688. Γöé             Γöé        Γöé             Γöé ASCII   Γöé
  2689. Γöé             Γöé        Γöé             Γöé character Γöé
  2690. Γöé             Γöé        Γöé             Γöé equiv-   Γöé
  2691. Γöé             Γöé        Γöé             Γöé alent.   Γöé
  2692. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2693. Γöé tolower         Γöé "ctype.h"   Γöé tolower - toupper    Γöé Converts  Γöé
  2694. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  2695. Γöé             Γöé        Γöé             Γöé acter to  Γöé
  2696. Γöé             Γöé        Γöé             Γöé lower-   Γöé
  2697. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2698. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2699. Γöé _tolower         Γöé "ctype.h"   Γöé _toascii - _tolower -  Γöé Converts  Γöé
  2700. Γöé             Γöé        Γöé _toupper         Γöé an upper- Γöé
  2701. Γöé             Γöé        Γöé             Γöé case    Γöé
  2702. Γöé             Γöé        Γöé             Γöé ASCII   Γöé
  2703. Γöé             Γöé        Γöé             Γöé character Γöé
  2704. Γöé             Γöé        Γöé             Γöé to lower- Γöé
  2705. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2706. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2707. Γöé toupper         Γöé "ctype.h"   Γöé tolower - toupper    Γöé Converts  Γöé
  2708. Γöé             Γöé        Γöé             Γöé a char-  Γöé
  2709. Γöé             Γöé        Γöé             Γöé acter to  Γöé
  2710. Γöé             Γöé        Γöé             Γöé upper-   Γöé
  2711. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2712. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2713. Γöé _toupper         Γöé "ctype.h"   Γöé _toascii - _tolower -  Γöé Converts  Γöé
  2714. Γöé             Γöé        Γöé _toupper         Γöé a lower-  Γöé
  2715. Γöé             Γöé        Γöé             Γöé case    Γöé
  2716. Γöé             Γöé        Γöé             Γöé ASCII   Γöé
  2717. Γöé             Γöé        Γöé             Γöé character Γöé
  2718. Γöé             Γöé        Γöé             Γöé to upper- Γöé
  2719. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2720. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2721. Γöé towlower         Γöé "wctype.h"  Γöé towlower - towupper   Γöé Converts  Γöé
  2722. Γöé             Γöé        Γöé             Γöé a lower-  Γöé
  2723. Γöé             Γöé        Γöé             Γöé case wide Γöé
  2724. Γöé             Γöé        Γöé             Γöé character Γöé
  2725. Γöé             Γöé        Γöé             Γöé to upper- Γöé
  2726. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2727. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2728. Γöé towupper         Γöé "wctype.h"  Γöé towlower - towupper   Γöé Converts  Γöé
  2729. Γöé             Γöé        Γöé             Γöé a lower-  Γöé
  2730. Γöé             Γöé        Γöé             Γöé case wide Γöé
  2731. Γöé             Γöé        Γöé             Γöé character Γöé
  2732. Γöé             Γöé        Γöé             Γöé to upper- Γöé
  2733. Γöé             Γöé        Γöé             Γöé case.   Γöé
  2734. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2735.  
  2736.  
  2737. ΓòÉΓòÉΓòÉ 2.1.20. Wide Character String Operation Functions ΓòÉΓòÉΓòÉ
  2738.  
  2739. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2740. Γöé Function         Γöé Header File  Γöé Link to Function     Γöé DescriptioΓöé
  2741. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2742. Γöé mblen          Γöé "stdlib.h"  Γöé mblen          Γöé Deter-   Γöé
  2743. Γöé             Γöé        Γöé             Γöé mines   Γöé
  2744. Γöé             Γöé        Γöé             Γöé length of Γöé
  2745. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2746. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2747. Γöé wcscat          Γöé "wchar.h"   Γöé wcscat          Γöé Concat-  Γöé
  2748. Γöé             Γöé        Γöé             Γöé enates   Γöé
  2749. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2750. Γöé             Γöé        Γöé             Γöé strings.  Γöé
  2751. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2752. Γöé wcschr          Γöé "wchar.h"   Γöé wcschr          Γöé Searches  Γöé
  2753. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2754. Γöé             Γöé        Γöé             Γöé string   Γöé
  2755. Γöé             Γöé        Γöé             Γöé for char- Γöé
  2756. Γöé             Γöé        Γöé             Γöé acter.   Γöé
  2757. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2758. Γöé wcscmp          Γöé "wchar.h"   Γöé wcscmp          Γöé Compares  Γöé
  2759. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2760. Γöé             Γöé        Γöé             Γöé strings.  Γöé
  2761. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2762. Γöé wcscoll         Γöé "wchar.h"   Γöé wcscoll         Γöé Compares  Γöé
  2763. Γöé             Γöé        Γöé             Γöé two wide  Γöé
  2764. Γöé             Γöé        Γöé             Γöé character Γöé
  2765. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2766. Γöé             Γöé        Γöé             Γöé based on  Γöé
  2767. Γöé             Γöé        Γöé             Γöé collating Γöé
  2768. Γöé             Γöé        Γöé             Γöé elements  Γöé
  2769. Γöé             Γöé        Γöé             Γöé for the  Γöé
  2770. Γöé             Γöé        Γöé             Γöé current  Γöé
  2771. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2772. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2773. Γöé wcscpy          Γöé "wchar.h"   Γöé wcscpy          Γöé Copies   Γöé
  2774. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2775. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2776. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2777. Γöé wcscspn         Γöé "wchar.h"   Γöé wcscspn         Γöé Searches  Γöé
  2778. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2779. Γöé             Γöé        Γöé             Γöé string   Γöé
  2780. Γöé             Γöé        Γöé             Γöé for char- Γöé
  2781. Γöé             Γöé        Γöé             Γöé acters.  Γöé
  2782. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2783. Γöé wcslen          Γöé "wchar.h"   Γöé wcslen          Γöé Finds   Γöé
  2784. Γöé             Γöé        Γöé             Γöé length of Γöé
  2785. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2786. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2787. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2788. Γöé wcsncat         Γöé "wchar.h"   Γöé wcsncat         Γöé Concat-  Γöé
  2789. Γöé             Γöé        Γöé             Γöé enates   Γöé
  2790. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2791. Γöé             Γöé        Γöé             Γöé string   Γöé
  2792. Γöé             Γöé        Γöé             Γöé segment.  Γöé
  2793. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2794. Γöé wcsncmp         Γöé "wchar.h"   Γöé wcsncmp         Γöé Compares  Γöé
  2795. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2796. Γöé             Γöé        Γöé             Γöé string   Γöé
  2797. Γöé             Γöé        Γöé             Γöé segments. Γöé
  2798. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2799. Γöé wcsncpy         Γöé "wchar.h"   Γöé wcsncpy         Γöé Copies   Γöé
  2800. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2801. Γöé             Γöé        Γöé             Γöé string   Γöé
  2802. Γöé             Γöé        Γöé             Γöé segments. Γöé
  2803. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2804. Γöé wcspbrk         Γöé "wchar.h"   Γöé wcspbrk         Γöé Locates  Γöé
  2805. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2806. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2807. Γöé             Γöé        Γöé             Γöé ters in  Γöé
  2808. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2809. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2810. Γöé wcsspn          Γöé "wchar.h"   Γöé wcsspn          Γöé Finds   Γöé
  2811. Γöé             Γöé        Γöé             Γöé number of Γöé
  2812. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2813. Γöé             Γöé        Γöé             Γöé charac-  Γöé
  2814. Γöé             Γöé        Γöé             Γöé ters.   Γöé
  2815. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2816. Γöé wcsrchr         Γöé "wchar.h"   Γöé wcsrchr         Γöé Locates  Γöé
  2817. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2818. Γöé             Γöé        Γöé             Γöé character Γöé
  2819. Γöé             Γöé        Γöé             Γöé in     Γöé
  2820. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2821. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2822. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2823. Γöé wcsstr          Γöé "wchar.h"   Γöé wcsstr          Γöé Locates  Γöé
  2824. Γöé             Γöé        Γöé             Γöé the first Γöé
  2825. Γöé             Γöé        Γöé             Γöé occur-   Γöé
  2826. Γöé             Γöé        Γöé             Γöé rence of  Γöé
  2827. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  2828. Γöé             Γöé        Γöé             Γöé character Γöé
  2829. Γöé             Γöé        Γöé             Γöé string   Γöé
  2830. Γöé             Γöé        Γöé             Γöé within   Γöé
  2831. Γöé             Γöé        Γöé             Γöé another  Γöé
  2832. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2833. Γöé             Γöé        Γöé             Γöé character Γöé
  2834. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2835. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2836. Γöé wcstok          Γöé "wchar.h"   Γöé wcstok          Γöé Locates a Γöé
  2837. Γöé             Γöé        Γöé             Γöé specified Γöé
  2838. Γöé             Γöé        Γöé             Γöé token in  Γöé
  2839. Γöé             Γöé        Γöé             Γöé a wide   Γöé
  2840. Γöé             Γöé        Γöé             Γöé character Γöé
  2841. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2842. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2843. Γöé wcswcs          Γöé "wchar.h"   Γöé wcswcs          Γöé Locates a Γöé
  2844. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2845. Γöé             Γöé        Γöé             Γöé string in Γöé
  2846. Γöé             Γöé        Γöé             Γöé another  Γöé
  2847. Γöé             Γöé        Γöé             Γöé wchar_t  Γöé
  2848. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2849. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2850. Γöé wcswidth         Γöé "wchar.h"   Γöé wcswidth         Γöé Deter-   Γöé
  2851. Γöé             Γöé        Γöé             Γöé mines the Γöé
  2852. Γöé             Γöé        Γöé             Γöé number of Γöé
  2853. Γöé             Γöé        Γöé             Γöé display  Γöé
  2854. Γöé             Γöé        Γöé             Γöé positions Γöé
  2855. Γöé             Γöé        Γöé             Γöé required  Γöé
  2856. Γöé             Γöé        Γöé             Γöé to     Γöé
  2857. Γöé             Γöé        Γöé             Γöé display a Γöé
  2858. Γöé             Γöé        Γöé             Γöé given   Γöé
  2859. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2860. Γöé             Γöé        Γöé             Γöé character Γöé
  2861. Γöé             Γöé        Γöé             Γöé string.  Γöé
  2862. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2863. Γöé wcsxfrm         Γöé "wchar.h"   Γöé wcsxfrm         Γöé Trans-   Γöé
  2864. Γöé             Γöé        Γöé             Γöé forms   Γöé
  2865. Γöé             Γöé        Γöé             Γöé wide    Γöé
  2866. Γöé             Γöé        Γöé             Γöé character Γöé
  2867. Γöé             Γöé        Γöé             Γöé strings  Γöé
  2868. Γöé             Γöé        Γöé             Γöé according Γöé
  2869. Γöé             Γöé        Γöé             Γöé to the   Γöé
  2870. Γöé             Γöé        Γöé             Γöé current  Γöé
  2871. Γöé             Γöé        Γöé             Γöé locale.  Γöé
  2872. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2873.  
  2874.  
  2875. ΓòÉΓòÉΓòÉ 2.2. Differentiating between Memory Management Functions ΓòÉΓòÉΓòÉ
  2876.  
  2877. The memory management functions defined by ANSI are calloc, malloc, realloc, 
  2878. and free. These regular functions allocate and free memory from the default 
  2879. run-time heap. (The Developer's Toolkit has added another function, _heapmin, 
  2880. to return unused memory to the system.) The Developer's Toolkit also provides 
  2881. different versions of each of these functions as extensions to the ANSI 
  2882. definition. 
  2883.  
  2884. All the versions actually work the same way; they differ only in what heap they 
  2885. allocate from, and in whether they save information to help you debug memory 
  2886. problems. The memory allocated by all of these functions is suitably aligned 
  2887. for storing any type of object. 
  2888.  
  2889. The following table summarizes the different versions of memory management 
  2890. functions, using malloc as an example of how the names of the functions change 
  2891. for each version. They are all described in greater detail after the table. 
  2892.  
  2893. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  2894. Γöé Run-Time Heap          Γöé Regular Version         Γöé
  2895. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2896. Γöé DEFAULT HEAP          Γöé malloc             Γöé
  2897. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  2898. Γöé USER HEAP            Γöé _umalloc            Γöé
  2899. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  2900.  
  2901. To use these extensions, you must set the language level to extended. 
  2902.  
  2903.  
  2904. ΓòÉΓòÉΓòÉ 2.2.1. Heap-Specific Functions ΓòÉΓòÉΓòÉ
  2905.  
  2906. Use the heap-specific versions to allocate and free memory from a user-created 
  2907. heap that you specify.  (You can also explicitly use the run-time heap if you 
  2908. want.)  Their names are prefixed by _u (for "user heaps"), for example, 
  2909. _umalloc, and they are defined in <umalloc.h>. 
  2910.  
  2911. The functions provided are: 
  2912.  
  2913.      _ucalloc 
  2914.      _umalloc 
  2915.      _uheapmin 
  2916.  
  2917.  Notice there is no heap-specific version of realloc or free. Because they both 
  2918.  always check what heap the memory was allocated from, you can always use the 
  2919.  regular versions regardless of what heap the memory came from. 
  2920.  
  2921.  For more information about creating your own heaps and using the heap-specific 
  2922.  memory management functions, see "Managing Memory with Multiple Heaps" in the 
  2923.  VisualAge C++ Programming Guide. 
  2924.  
  2925.  
  2926. ΓòÉΓòÉΓòÉ 2.3. Infinity and NaN Support ΓòÉΓòÉΓòÉ
  2927.  
  2928. The IBM Developer's Toolkit for OS/2 Warp Version 4 compiler supports the use 
  2929. of infinity and NaN (not-a-number) values. Infinity is a value with an 
  2930. associated sign that is mathematically greater in magnitude than any binary 
  2931. floating-point number. A NaN is a value in floating-point computations that is 
  2932. not interpreted as a mathematical value, and that contains a mask state and a 
  2933. sequence of binary digits. 
  2934.  
  2935. The value of infinity can be computed from 1.0 / 0.0. The value of a NaN can be 
  2936. computed from 0.0 / 0.0. 
  2937.  
  2938. Depending on its bit pattern, a NaN can be either quiet (NaNQ) or signaling 
  2939. (NaNS), as defined in the ANSI/IEEE Standard for Binary Floating-Point 
  2940. Arithmetic (754-1982). A NaNQ is masked and never generates exceptions. A NaNS 
  2941. may be masked and may generate an exception, but does not necessarily do so. 
  2942. The Developer's Toolkit for OS/2 Warp Version 4 compiler supports only quiet 
  2943. NaN values; all NaN values discussed below refer to quiet NaNs. 
  2944.  
  2945. NaN and infinity values are defined as macro constants in the <float.h> header 
  2946. file. The macros are:  compact break=fit. 
  2947.  
  2948.  Macro       Description 
  2949.  
  2950.  _INFINITYF  Infinity of type float 
  2951.  
  2952.  _INFINITY   Infinity of type double 
  2953.  
  2954.  _INFINITYL  Infinity of type long double 
  2955.  
  2956.  _INFF       Same as _INFINITYF 
  2957.  
  2958.  _INF        Same as _INFINITY 
  2959.  
  2960.  _INFL       Same as _INFINITYL 
  2961.  
  2962.  _NANF       Quiet NaN of type float 
  2963.  
  2964.  _NAN        Quiet NaN of type double 
  2965.  
  2966.  _NANL       Quiet NaN of type long double. 
  2967.  
  2968.  You can get the corresponding negative values by using the unary minus 
  2969.  operator (for example, -_INF). 
  2970.  
  2971.  Note:  The value of 0.0 can also be positive or negative. For example, 1.0 / 
  2972.         (-0.0) results in -_INF. 
  2973.  
  2974.  Because these macros are actually references to constant variables, you cannot 
  2975.  use them to initialize static variables. For example, the following statements 
  2976.  are not allowed: 
  2977.  
  2978.      static double infval = _INF;
  2979.      static float nanval = 1.0 + _NANF;
  2980.  However, you can initialize static variables to the numeric values of infinity 
  2981.  and NaN: 
  2982.  
  2983.      static double infval = 1.0 / 0.0;
  2984.      static float nanval =  0.0 / 0.0;
  2985.  
  2986.  Note:  Although positive and negative infinities are specific bit patterns, 
  2987.         NaNs are not. A NaN value is not equal to itself or to any other value. 
  2988.         For example, if you assign a NaN value to a variable x, you cannot 
  2989.         check the value of x with the statement if (_NAN == x). Instead, use 
  2990.         the statement if (x != x). 
  2991.  
  2992.  All relational and equality expressions involving NaN values always evaluate 
  2993.  to FALSE or zero (0), with the exception of not equal (!=), which always 
  2994.  evaluates to TRUE or one (1). 
  2995.  
  2996.  For information on the bit mapping and storage mapping of NaN and infinity 
  2997.  values, see the User's Guide. 
  2998.  
  2999.  
  3000. ΓòÉΓòÉΓòÉ 2.3.1. Infinity and NaN in Library Functions ΓòÉΓòÉΓòÉ
  3001.  
  3002. When the language level is set to extended which is the default, infinity and 
  3003. NaN values can be passed as arguments to the scanf and printf families of 
  3004. library functions, and to the string conversion and math functions. At other 
  3005. language levels, these functions work as described in this book. 
  3006.  
  3007. This section describes how the library functions handle the infinity and NaN 
  3008. values. 
  3009.  
  3010.  
  3011. ΓòÉΓòÉΓòÉ 2.3.1.1. scanf Family ΓòÉΓòÉΓòÉ
  3012.  
  3013. The scanf family of functions includes the functions scanf, fscanf, and sscanf. 
  3014. When reading in floating-point numbers, these functions convert the strings 
  3015. INFINITY, INF, and NAN (in uppercase, lowercase, or mixed case) to the 
  3016. corresponding floating-point value. The sign of the value is determined by the 
  3017. format specification. 
  3018.  
  3019. Given a string that consists of NAN, INF, or INFINITY, followed by other 
  3020. characters, the scanf functions read in only the NaN or infinity value, and 
  3021. consider the rest of the string to be a second input field. For example, Nancy 
  3022. would be scanned as two fields, Nan and cy. 
  3023.  
  3024. Note:  In the case of a string that begins with INF, the functions check the 
  3025.        fourth letter. If that letter is not I (in uppercase or lowercase), INF 
  3026.        is read and converted and the rest of the string is left for the next 
  3027.        format specification. If the fourth letter is I, the functions continue 
  3028.        to scan for the full INFINITY string. If the string is other than 
  3029.        INFINITY, the entire string is discarded. 
  3030.  
  3031.  Example:  In the following example, fscanf converts NAN and INFINITY strings 
  3032.  to their numeric values. 
  3033.  
  3034.   #include <stdio.h>
  3035.  
  3036.   int main(void)
  3037.   {
  3038.      int n, count;
  3039.      double d1, d2, d3;
  3040.      FILE *stream;
  3041.  
  3042.      stream = tmpfile();
  3043.  
  3044.      fputs(" INFINITY NAn INF", stream);
  3045.  
  3046.      rewind(stream);
  3047.  
  3048.      n = fscanf(stream, "%lF%lf%lF%n", &d1, &d2, &d3, &count);
  3049.  
  3050.      if (n != EOF)
  3051.      {
  3052.         printf("Number of fields converted = %d\n", n);
  3053.         printf("Number of characters read = %d\n", count);
  3054.         printf("Output = %f %F %F\n", d1, d2, d3);
  3055.      }
  3056.  
  3057.      return 0;
  3058.  
  3059.      /* The expected output is:
  3060.  
  3061.         Number of fields converted = 3
  3062.         Number of characters read = 17
  3063.         Output = infinity NAN INFINITY  */
  3064.  
  3065.   }
  3066.  
  3067.  For more information on the scanf, fscanf, and sscanf functions, see the 
  3068.  entries for each function in Library Functions. 
  3069.  
  3070.  
  3071. ΓòÉΓòÉΓòÉ 2.3.1.2. printf Family ΓòÉΓòÉΓòÉ
  3072.  
  3073. The printf family of functions includes the functions printf, fprintf, sprintf, 
  3074. vfprintf, vprintf, and vsprintf. These functions convert floating-point values 
  3075. of INFINITY and NaN to the strings "INFINITY" or "infinity" and "NAN" or "nan". 
  3076.  
  3077. The case is determined by the format specification, as is the sign (positive or 
  3078. negative). When converting these values, the printf functions ignore the 
  3079. precision width given by the format specification. 
  3080.  
  3081. Example:  In the following example, printf converts the NaN and INFINITY values 
  3082. and prints the corresponding string. 
  3083.  
  3084. #include <stdio.h>
  3085. #include <float.h>
  3086.  
  3087. int main(void)
  3088. {
  3089.    double infval = -(_INF);
  3090.    float nanval = _NANF;
  3091.  
  3092.    printf("-_INF is the same as %-15.30f\n", infval);
  3093.    printf("_NANF is the same as %-15.30F\n", nanval);
  3094.  
  3095.    return 0;
  3096.  
  3097.    /* The expected output is:
  3098.  
  3099.       -_INF is the same as -infinity
  3100.       _NANF is the same as NAN        */
  3101.  
  3102. }
  3103.  
  3104. For more information on the printf, fprintf, sprintf, vfprintf, vprintf, and 
  3105. vsprintf functions, see the entries for each function in Library Functions. 
  3106.  
  3107.  
  3108. ΓòÉΓòÉΓòÉ 2.3.1.3. String Conversion Functions ΓòÉΓòÉΓòÉ
  3109.  
  3110. The string conversion functions that support infinity and NaN representations 
  3111. include the functions: atof, _atold, _ecvt, _fcvt, _gcvt, strtod, strtold, and 
  3112. wcstod. 
  3113.  
  3114. The atof, _atold, strtod, strtold, and wcstod functions accept the strings 
  3115. INFINITY, INF, and NAN (in uppercase, lowercase, or mixed case) as input, and 
  3116. convert these strings to the corresponding macro value defined in <float.h>. 
  3117. The _ecvt, _fcvt, and _gcvt functions convert infinity and NaN values to the 
  3118. strings INFINITY and NAN, respectively. 
  3119.  
  3120. Note:  If a signaling NaN string is passed to a string conversion function, a 
  3121.        quiet NaN value is returned, and no signal is raised. 
  3122.  
  3123.  Example:  The following example uses atof to convert the strings "naN" and 
  3124.  "inf" to the corresponding macro value. 
  3125.  
  3126.   #include <stdlib.h>
  3127.   #include <stdio.h>
  3128.  
  3129.   int main(void)
  3130.   {
  3131.      char *nanstr;
  3132.      char *infstr;
  3133.  
  3134.      nanstr = "naN";
  3135.      printf( "Result of atof = %.10e\n", atof(nanstr) );
  3136.  
  3137.      infstr = "inf";
  3138.      printf( "Result of atof = %.10E\n", atof(infstr) );
  3139.  
  3140.      return 0;
  3141.  
  3142.      /* The expected output is:
  3143.  
  3144.         Result of atof = nan
  3145.         Result of atof = INFINITY  */
  3146.  
  3147.   }
  3148.  
  3149.  For more information on the individual string conversion functions, refer to 
  3150.  the entries for them in Library Functions. 
  3151.  
  3152.  
  3153. ΓòÉΓòÉΓòÉ 2.3.1.4. Math Functions ΓòÉΓòÉΓòÉ
  3154.  
  3155. Most math functions accept infinity, negative infinity, and NaN values as 
  3156. input. In general, a NaN value as input results in a NaN value as output, and 
  3157. infinity values as input usually result in infinity values. If the input value 
  3158. is outside the domain or range of the function, errno is set to EDOM or ERANGE, 
  3159. respectively. 
  3160.  
  3161. The following tables display the results of each math function when NaN or 
  3162. infinity values are input, and the associated errno value if one exists. The 
  3163. first table lists the functions that take only one argument; the second lists 
  3164. those that take two arguments. 
  3165.  
  3166. Note:  In some cases, infinity is always a valid input value for the function 
  3167.        regardless of the language level (for example, atan). These cases do not 
  3168.        appear in these two tables. 
  3169.  
  3170.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3171.   Γöé Function     Γöé Input      Γöé Result      Γöé errno Value   Γöé
  3172.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3173.   Γöé acos       Γöé NaN       Γöé NaN       Γöé         Γöé
  3174.   Γöé asin       Γöé infinity     Γöé 0        Γöé EDOM       Γöé
  3175.   Γöé         Γöé -infinity    Γöé 0        Γöé EDOM       Γöé
  3176.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3177.   Γöé atan       Γöé NaN       Γöé NaN       Γöé         Γöé
  3178.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3179.   Γöé ceil       Γöé NaN       Γöé NaN       Γöé         Γöé
  3180.   Γöé floor      Γöé infinity     Γöé infinity     Γöé         Γöé
  3181.   Γöé         Γöé -infinity    Γöé -infinity    Γöé         Γöé
  3182.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3183.   Γöé cos       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3184.   Γöé tan       Γöé infinity     Γöé NaN       Γöé ERANGE      Γöé
  3185.   Γöé         Γöé -infinity    Γöé NaN       Γöé ERANGE      Γöé
  3186.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3187.   Γöé cosh       Γöé NaN       Γöé NaN       Γöé         Γöé
  3188.   Γöé         Γöé infinity     Γöé infinity     Γöé ERANGE      Γöé
  3189.   Γöé         Γöé -infinity    Γöé infinity     Γöé ERANGE      Γöé
  3190.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3191.   Γöé erf       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3192.   Γöé         Γöé infinity     Γöé 1        Γöé         Γöé
  3193.   Γöé         Γöé -infinity    Γöé -1        Γöé         Γöé
  3194.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3195.   Γöé erfc       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3196.   Γöé         Γöé infinity     Γöé 0        Γöé         Γöé
  3197.   Γöé         Γöé -infinity    Γöé 2        Γöé         Γöé
  3198.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3199.   Γöé exp       Γöé NaN       Γöé NaN       Γöé         Γöé
  3200.   Γöé         Γöé infinity     Γöé infinity     Γöé ERANGE      Γöé
  3201.   Γöé         Γöé -infinity    Γöé 0        Γöé ERANGE      Γöé
  3202.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3203.   Γöé fabs       Γöé NaN       Γöé NaN       Γöé         Γöé
  3204.   Γöé         Γöé infinity     Γöé infinity     Γöé         Γöé
  3205.   Γöé         Γöé -infinity    Γöé infinity     Γöé         Γöé
  3206.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3207.   Γöé frexp      Γöé NaN       Γöé NaN, 0      Γöé EDOM       Γöé
  3208.   Γöé         Γöé infinity     Γöé NaN, 0      Γöé EDOM       Γöé
  3209.   Γöé         Γöé -infinity    Γöé NaN, 0      Γöé EDOM       Γöé
  3210.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3211.   Γöé gamma      Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3212.   Γöé         Γöé infinity     Γöé infinity     Γöé ERANGE      Γöé
  3213.   Γöé         Γöé -infinity    Γöé NaN       Γöé EDOM       Γöé
  3214.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3215.   Γöé log       Γöé NaN       Γöé NaN       Γöé         Γöé
  3216.   Γöé log10      Γöé infinity     Γöé infinity     Γöé         Γöé
  3217.   Γöé         Γöé 0        Γöé -infinity    Γöé ERANGE      Γöé
  3218.   Γöé         Γöé <0        Γöé NaN       Γöé EDOM       Γöé
  3219.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3220.   Γöé modf       Γöé NaN       Γöé NaN, NaN     Γöé EDOM       Γöé
  3221.   Γöé         Γöé infinity     Γöé NaN, infinity  Γöé EDOM       Γöé
  3222.   Γöé         Γöé -infinity    Γöé NaN, -infinity  Γöé EDOM       Γöé
  3223.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3224.   Γöé sin       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3225.   Γöé         Γöé infinity     Γöé NaN       Γöé ERANGE      Γöé
  3226.   Γöé         Γöé -infinity    Γöé NaN       Γöé ERANGE      Γöé
  3227.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3228.   Γöé sinh       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3229.   Γöé         Γöé infinity     Γöé infinity     Γöé ERANGE      Γöé
  3230.   Γöé         Γöé -infinity    Γöé -infinity    Γöé ERANGE      Γöé
  3231.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3232.   Γöé sqrt       Γöé NaN       Γöé NaN       Γöé         Γöé
  3233.   Γöé         Γöé infinity     Γöé infinity     Γöé         Γöé
  3234.   Γöé         Γöé -infinity    Γöé 0        Γöé EDOM       Γöé
  3235.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3236.   Γöé tanh       Γöé NaN       Γöé NaN       Γöé EDOM       Γöé
  3237.   Γöé         Γöé infinity     Γöé 1        Γöé         Γöé
  3238.   Γöé         Γöé -infinity    Γöé -1        Γöé         Γöé
  3239.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3240.  
  3241.  The functions in the following table take two arguments. The results from NaN 
  3242.  and infinity values vary depending on which argument they are passed as. 
  3243.  
  3244.   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3245.   Γöé Function   Γöé Argument 1  Γöé Argument 2  Γöé Result    Γöé errno Value  Γöé
  3246.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3247.   Γöé atan2     Γöé NaN      Γöé any number  Γöé NaN      Γöé EDOM     Γöé
  3248.   Γöé        Γöé any number  Γöé NaN      Γöé NaN      Γöé        Γöé
  3249.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3250.   Γöé fmod     Γöé NaN      Γöé any number  Γöé NaN      Γöé EDOM     Γöé
  3251.   Γöé        Γöé any number  Γöé NaN      Γöé NaN      Γöé EDOM     Γöé
  3252.   Γöé        Γöé ╤æinfinity   Γöé any number  Γöé 0       Γöé EDOM     Γöé
  3253.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3254.   Γöé ldexp     Γöé infinity   Γöé any number  Γöé infinity   Γöé ERANGE    Γöé
  3255.   Γöé        Γöé -infinity   Γöé any number  Γöé -infinity   Γöé ERANGE    Γöé
  3256.   Γöé        Γöé NaN      Γöé any number  Γöé NaN      Γöé EDOM     Γöé
  3257.   Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  3258.   Γöé pow      Γöé ╤æinfinity   Γöé 0       Γöé NaN      Γöé EDOM     Γöé
  3259.   Γöé        Γöé infinity   Γöé -infinity   Γöé NaN      Γöé EDOM     Γöé
  3260.   Γöé        Γöé -infinity   Γöé ╤æinfinity   Γöé NaN      Γöé EDOM     Γöé
  3261.   Γöé        Γöé -infinity   Γöé <-1      Γöé NaN      Γöé EDOM     Γöé
  3262.   Γöé        Γöé -infinity   Γöé <1, >-1    Γöé NaN      Γöé EDOM     Γöé
  3263.   Γöé        Γöé -infinity   Γöé >1      Γöé NaN      Γöé EDOM     Γöé
  3264.   Γöé        Γöé NaN      Γöé any number  Γöé NaN      Γöé EDOM     Γöé
  3265.   Γöé        Γöé any number  Γöé NaN      Γöé NaN      Γöé EDOM     Γöé
  3266.   Γöé        Γöé <=0      Γöé infinity   Γöé NaN      Γöé EDOM     Γöé
  3267.   Γöé        Γöé 1       Γöé ╤æinfinity   Γöé NaN      Γöé EDOM     Γöé
  3268.   Γöé        Γöé ╤æinfinity   Γöé ╤æ1      Γöé 0       Γöé ERANGE    Γöé
  3269.   Γöé        Γöé >0, <1    Γöé infinity   Γöé 0       Γöé ERANGE    Γöé
  3270.   Γöé        Γöé >0, <1    Γöé -infinity   Γöé infinity   Γöé ERANGE    Γöé
  3271.   ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3272.  
  3273.  Note:  If a signaling NaN is passed to a math function, the behavior is 
  3274.         undefined. 
  3275.  
  3276.  
  3277. ΓòÉΓòÉΓòÉ 2.4. Using Low-Level I/O Functions ΓòÉΓòÉΓòÉ
  3278.  
  3279. The Developer's Toolkit compiler supports both stream and low-level I/O. The 
  3280. primary difference between the two types of I/O is that low-level I/O leaves 
  3281. the responsibility of buffering and formatting up to you. 
  3282.  
  3283. In general, you should not mix input or output from low-level I/O with that 
  3284. from stream I/O. The only way to communicate between stream I/O and low-level 
  3285. I/O is by using the fdopen or fileno functions. 
  3286.  
  3287. The low-level I/O functions include: 
  3288.  
  3289. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  3290. Γöé access      Γöé dup2       Γöé fstat      Γöé _setmode     Γöé
  3291. Γöé chmod      Γöé __eof      Γöé isatty      Γöé _sopen      Γöé
  3292. Γöé _chsize     Γöé fdopen      Γöé lseek      Γöé stat       Γöé
  3293. Γöé close      Γöé _filelength   Γöé open       Γöé _tell      Γöé
  3294. Γöé creat      Γöé fileno      Γöé read       Γöé umask      Γöé
  3295. Γöé dup       Γöé         Γöé         Γöé write      Γöé
  3296. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  3297.  
  3298. When you use the low-level I/O functions, you should be aware of the following: 
  3299.  
  3300.      A handle is a value that identifies a file. It is created by the system 
  3301.       and used by low-level I/O functions. For The Developer's Toolkit, the 
  3302.       handle returned by low-level I/O functions like open (called the 
  3303.       C_handle) is the same as that returned by DosOpen (called the 
  3304.       API_handle). As a result, you can get a file handle using the low-level 
  3305.       I/O functions, and then use it with OS/2 APIs. 
  3306.  
  3307.       Portability Note  Other compilers may map the file handle so that the 
  3308.                         C_handle and API_handle are different. If you will be 
  3309.                         compiling your programs with other compilers, do not 
  3310.                         write code that depends on the file handles being the 
  3311.                         same. 
  3312.  
  3313.       You can pass handles between library environments without restriction. If 
  3314.       you acquire a handle other than by using The Developer's Toolkit library 
  3315.       functions open, creat, _sopen, or fileno, you must run _setmode for that 
  3316.       handle before you use it with other The Developer's Toolkit library 
  3317.       functions. 
  3318.  
  3319.      The default open-sharing mode is SH_DENYWR. Use _sopen to obtain other 
  3320.       sharing modes. 
  3321.  
  3322.      Text mode deletes '\r' characters on input and changes '\n' to '\r\n' on 
  3323.       output. 
  3324.  
  3325.      In a multithread environment, you must ensure that two threads do not 
  3326.       attempt to perform low-level I/O operations on the same file at the same 
  3327.       time. You must make sure that one I/O process is completed before another 
  3328.       begins. 
  3329.  
  3330.      If the file mode is text, the low-level I/O functions treat the character 
  3331.       'x1a' in the following ways: 
  3332.  
  3333.         -  If it is detected in a nonseekable file, 'x1a' is treated as 
  3334.            end-of-file. In a seekable file, it is treated as end-of-file only 
  3335.            if it is the last character. 
  3336.         -  If a file is opened as text with either the O_APPEND or O_RDWR flags 
  3337.            and 'x1a' is the last character of the file, the last character of 
  3338.            the file is deleted. 
  3339.  
  3340.  
  3341. ΓòÉΓòÉΓòÉ 3. Library Functions ΓòÉΓòÉΓòÉ
  3342.  
  3343. The Developer's Toolkit for OS/2 Warp Version 4 libraries are divided into two 
  3344. parts: 
  3345.  
  3346.      Standard libraries, which define the SAA features and The Developer's 
  3347.       Toolkit standard extensions to SAA 
  3348.  
  3349.      Subsystem libraries, which are a subset of the standard libraries, and 
  3350.       are used for subsystem development. The functions in these libraries do 
  3351.       not require a run-time environment. 
  3352.  
  3353.  This section lists alphabetically and describes all the functions that The 
  3354.  Developer's Toolkit for OS/2 Warp Version 4 product offers, including the 
  3355.  extensions to the ANSI/ISO C definition. For information on the subsystem 
  3356.  libraries and the functions in them, see the chapter called "Developing 
  3357.  Subsystems" in the VisualAge C++ Programming Guide. 
  3358.  
  3359.  Each function description includes the following subsections: 
  3360.  
  3361.  Syntax 
  3362.        The prototyped declaration of the function and the header file in which 
  3363.        it is found. To include the declaration in your code, include the header 
  3364.        file. 
  3365.  
  3366.  Description 
  3367.        A brief description of what the function does, what parameters it takes, 
  3368.        and how to use the function. 
  3369.  
  3370.  Returns 
  3371.        The value returned from a successful call to the function and the error 
  3372.        return value. 
  3373.  
  3374.  Example Code 
  3375.        A short example of how to use the function. From the online C Library 
  3376.        Reference, you can use the IPF Copy to File choice from the Services 
  3377.        pull-down to copy a function example to a separate file (called TEXT.TMP 
  3378.        by default). You can then compile, link, and run the example, or use the 
  3379.        example code in your own source files. 
  3380.  
  3381.  Related Information 
  3382.        A list of other functions that are similar to or related to the 
  3383.        function, and of other topics that provide additional information that 
  3384.        help you use the function. 
  3385.  
  3386.  
  3387. ΓòÉΓòÉΓòÉ 3.1. abort - Stop a Program ΓòÉΓòÉΓòÉ
  3388.  
  3389. abort - Stop a Program 
  3390.  
  3391.  Syntax 
  3392.  
  3393.                     #include <stdlib.h>
  3394.                     void abort(void);
  3395.  
  3396.  Description 
  3397.  
  3398.           abort causes an abnormal program termination and returns control to 
  3399.           the host environment. It is similar to exit, except that abort does 
  3400.           not flush buffers and close open files before ending the program. 
  3401.           Calls to abort raise the SIGABRT signal. 
  3402.  
  3403.  Returns 
  3404.  
  3405.           There is no return value. 
  3406.  
  3407.  Example Code 
  3408.  
  3409.           This example tests for successful opening of the file MYFILE.MJQ. If 
  3410.           an error occurs, an error message is printed and the program ends 
  3411.           with a call to abort. 
  3412.  
  3413.                     #include <stdio.h>
  3414.                     #include <stdlib.h>
  3415.  
  3416.                     int main(void)
  3417.                     {
  3418.                        FILE *stream;
  3419.  
  3420.                        if (NULL == (stream = fopen("myfile.mjq", "r"))) {
  3421.                           perror("Could not open data file");
  3422.                           abort();
  3423.                        }
  3424.                        return 0;
  3425.  
  3426.                        /****************************************************************************
  3427.                           If myfile.mjq does'nt exist, the output should be:
  3428.  
  3429.                           Could not open data file: The file cannot be found.
  3430.                        ****************************************************************************/
  3431.                     }
  3432.  
  3433.  Related Information 
  3434.  
  3435.               exit 
  3436.               _exit 
  3437.               signal 
  3438.  
  3439.  
  3440. ΓòÉΓòÉΓòÉ 3.2. abs - Calculate Integer Absolute Value ΓòÉΓòÉΓòÉ
  3441.  
  3442. abs - Calculate Integer Absolute Value 
  3443.  
  3444.  Syntax 
  3445.  
  3446.                     #include <stdlib.h>
  3447.                     int abs(int n);
  3448.  
  3449.  Description 
  3450.  
  3451.           abs returns the absolute value of an integer argument n. 
  3452.  
  3453.  Returns 
  3454.  
  3455.           There is no error return value.  The result is undefined when the 
  3456.           absolute value of the argument cannot be represented as an integer. 
  3457.           The value of the minimum allowable integer is defined by -INT_MAX in 
  3458.           the <limits.h> include file. 
  3459.  
  3460.  Example Code 
  3461.  
  3462.           This example calculates the absolute value of an integer x and 
  3463.           assigns it to y. 
  3464.  
  3465.                     #include <stdio.h>
  3466.                     #include <stdlib.h>
  3467.  
  3468.                     int main(void)
  3469.                     {
  3470.                        int x = -4, y;
  3471.  
  3472.                        y = abs(x);                                            /* y = 4            */
  3473.                        printf("abs( %d ) = %d\n", x, y);
  3474.                        return 0;
  3475.  
  3476.                        /****************************************************************************
  3477.                           The output should be:
  3478.  
  3479.                           abs( -4 ) = 4
  3480.                        ****************************************************************************/
  3481.                     }
  3482.  
  3483.  Related Information 
  3484.  
  3485.               fabs 
  3486.               labs 
  3487.  
  3488.  
  3489. ΓòÉΓòÉΓòÉ 3.3. access - Determine Access Mode ΓòÉΓòÉΓòÉ
  3490.  
  3491. access - Determine Access Mode 
  3492.  
  3493.  Syntax 
  3494.  
  3495.                     #include <io.h>
  3496.                     int access(char *pathname, int mode);
  3497.  
  3498.  Description 
  3499.  
  3500.           access determines whether the specified file exists and whether you 
  3501.           can get access to it in the given mode. Possible values for the mode 
  3502.           and their meaning in the access call are: 
  3503.  
  3504.           Value    Meaning 
  3505.            06      Check for permission to read from and write to the file. 
  3506.            04      Check for permission to read from the file. 
  3507.            02      Check for permission to write to the file. 
  3508.            00      Check only for the existence of the file. 
  3509.  
  3510.  Returns 
  3511.  
  3512.           access returns 0 if you can get access to the file in the specified 
  3513.           mode. A return value of -1 shows that the file does not exist or is 
  3514.           inaccessible in the given mode, and the system sets errno to one of 
  3515.           the following values: 
  3516.  
  3517.           Value      Meaning 
  3518.  
  3519.           EACCESS    Access is denied; the permission setting of the file does 
  3520.                      not allow you to get access to the file in the specified 
  3521.                      mode. 
  3522.  
  3523.           ENOENT     The system cannot find the file or the path that you 
  3524.                      specified, or the file name was incorrect. 
  3525.  
  3526.           EINVAL     The mode specified was not valid. 
  3527.  
  3528.           EOS2ERR    The call to the operating system was not successful. 
  3529.  
  3530.  Example Code 
  3531.  
  3532.           This example checks for the existence of the file SAMPLE.DAT. If the 
  3533.           file does not exist, it is created. 
  3534.  
  3535.                     #include <io.h>
  3536.                     #include <stdio.h>
  3537.                     #include <stdlib.h>
  3538.  
  3539.                     int main(void)
  3540.                     {
  3541.                        if (-1 == access("sample.dat", 00)) {
  3542.                           printf("File sample.dat does not exist.\n");
  3543.                           printf("Creating sample.dat.\n");
  3544.                           system("echo Sample Program > sample.dat");
  3545.                           if (0 == access("sample.dat", 00))
  3546.                              printf("File sample.dat created.\n");
  3547.                        }
  3548.                        else
  3549.                           printf("File sample.dat exists.\n");
  3550.                        return 0;
  3551.  
  3552.                        /****************************************************************************
  3553.                           The output should be:
  3554.  
  3555.                           File sample.dat does not exist.
  3556.                           Creating sample.dat.
  3557.                           File sample.dat created.
  3558.                        ****************************************************************************/
  3559.                     }
  3560.  
  3561.  Related Information 
  3562.  
  3563.               chmod 
  3564.               _sopen 
  3565.               umask 
  3566.  
  3567.  
  3568. ΓòÉΓòÉΓòÉ 3.4. acos - Calculate Arccosine ΓòÉΓòÉΓòÉ
  3569.  
  3570. acos - Calculate Arccosine 
  3571.  
  3572.  Syntax 
  3573.  
  3574.                     #include <math.h>
  3575.                     double acos(double x);
  3576.  
  3577.  Description 
  3578.  
  3579.           acos calculates the arccosine of x, expressed in radians, in the 
  3580.           range 0 to the value of pi. 
  3581.  
  3582.  Returns 
  3583.  
  3584.           acos returns the arccosine of x. The value of x must be between -1 
  3585.           and 1 inclusive. If x is less than -1 or greater than 1, acos sets 
  3586.           errno to EDOM and returns 0. 
  3587.  
  3588.  Example Code 
  3589.  
  3590.           This example prompts for a value for x. It prints an error message if 
  3591.           x is greater than 1 or less than -1; otherwise, it assigns the 
  3592.           arccosine of x to y. 
  3593.  
  3594.                     #include <stdio.h>
  3595.                     #include <stdlib.h>
  3596.                     #include <math.h>
  3597.  
  3598.                     #define  MAX           1.0
  3599.                     #define  MIN          -1.0
  3600.  
  3601.                     int main(void)
  3602.                     {
  3603.                        double x,y;
  3604.  
  3605.                        printf("Enter x\n");
  3606.                        scanf("%lf", &x);
  3607.  
  3608.                        /* Output error if not in range */
  3609.                        if (x > MAX)
  3610.                           printf("Error: %lf too large for acos\n", x);
  3611.                        else
  3612.                           if (x < MIN)
  3613.                              printf("Error: %lf too small for acos\n", x);
  3614.                           else {
  3615.                              y = acos(x);
  3616.                              printf("acos( %lf ) = %lf\n", x, y);
  3617.                           }
  3618.                        return 0;
  3619.  
  3620.                        /****************************************************************************
  3621.                           For the following input: 0.4
  3622.  
  3623.                           The output should be:
  3624.  
  3625.                           Enter x
  3626.                           acos( 0.400000 ) = 1.159279
  3627.                        ****************************************************************************/
  3628.                     }
  3629.  
  3630.  Related Information 
  3631.  
  3632.               asin 
  3633.               atan - atan2 
  3634.               cos 
  3635.               cosh 
  3636.               sin 
  3637.               sinh 
  3638.               tan 
  3639.               tanh 
  3640.  
  3641.  
  3642. ΓòÉΓòÉΓòÉ 3.5. asctime - Convert Time to Character String ΓòÉΓòÉΓòÉ
  3643.  
  3644. asctime - Convert Time to Character String 
  3645.  
  3646.  Syntax 
  3647.  
  3648.                     #include <time.h>
  3649.                     char *asctime(const struct tm *time);
  3650.  
  3651.  Description 
  3652.  
  3653.           The asctime function converts time, stored as a structure pointed to 
  3654.           by time, to a character string. You can obtain the time value from a 
  3655.           call to gmtime or localtime; either returns a pointer to a tm 
  3656.           structure defined in <time.h>. See gmtime for a description of the tm 
  3657.           structure fields. 
  3658.  
  3659.           The string result that asctime produces contains exactly 26 
  3660.           characters and has the format: 
  3661.  
  3662.                        "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n"
  3663.           See printf for a description of format specifications. The following 
  3664.           are examples of the string returned: 
  3665.  
  3666.                        Sat Jul 14 02:03:55 1995\n\0
  3667.           or 
  3668.  
  3669.                        Sat Jul 14  2:03:55 1995\n\0
  3670.  
  3671.           The asctime function uses a 24-hour-clock format.  The days are 
  3672.           abbreviated to: Sun, Mon, Tue, Wed, Thu, Fri, and Sat.  The months 
  3673.           are abbreviated to: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, 
  3674.           Nov, and Dec. All fields have constant width. Dates with only one 
  3675.           digit are preceded either with a zero or a blank space. The new-line 
  3676.           character (\n) and the null character (\0) occupy the last two 
  3677.           positions of the string. 
  3678.  
  3679.           The time and date functions begin at 00:00:00 Universal Time, January 
  3680.           1, 1970. 
  3681.  
  3682.  Returns 
  3683.  
  3684.           The asctime function returns a pointer to the resulting character 
  3685.           string.  There is no error return value. 
  3686.  
  3687.           Note:  asctime, ctime, and other time functions may use a common, 
  3688.                  statically allocated buffer to hold the return string. Each 
  3689.                  call to one of these functions may destroy the result of the 
  3690.                  previous call. 
  3691.  
  3692.  Example Code 
  3693.  
  3694.           This example polls the system clock and prints a message giving the 
  3695.           current time. 
  3696.  
  3697.                     #include <time.h>
  3698.                     #include <stdio.h>
  3699.  
  3700.                     int main(void)
  3701.                     {
  3702.                        struct tm *newtime;
  3703.                        time_t ltime;
  3704.  
  3705.                        /* Get the time in seconds */
  3706.                        time(<ime);
  3707.  
  3708.                        /* Convert it to the structure tm */
  3709.                        newtime = localtime(<ime);
  3710.  
  3711.                        /* Print the local time as a string */
  3712.                        printf("The current date and time are %s", asctime(newtime));
  3713.                        return 0;
  3714.  
  3715.                        /****************************************************************************
  3716.                           The output should be similar to :
  3717.  
  3718.                           The current date and time are Fri Jun 28 13:51 1995
  3719.                        ****************************************************************************/
  3720.                     }
  3721.  
  3722.  Related Information 
  3723.  
  3724.               ctime 
  3725.               gmtime 
  3726.               localtime 
  3727.               mktime 
  3728.               strftime 
  3729.               time 
  3730.               printf 
  3731.  
  3732.  
  3733. ΓòÉΓòÉΓòÉ 3.6. asin - Calculate Arcsine ΓòÉΓòÉΓòÉ
  3734.  
  3735. asin - Calculate Arcsine 
  3736.  
  3737.  Syntax 
  3738.  
  3739.                     #include <math.h>
  3740.                     double asin(double x);
  3741.  
  3742.  Description 
  3743.  
  3744.           asin calculates the arcsine of x, in the range -pi/2 to pi/2 radians. 
  3745.  
  3746.  Returns 
  3747.  
  3748.           asin returns the arcsine of x. The value of x must be between -1 and 
  3749.           1. If x is less than -1 or greater than 1, asin sets errno to EDOM, 
  3750.           and returns a value of 0. 
  3751.  
  3752.  Example Code 
  3753.  
  3754.           This example prompts for a value for x. It prints an error message if 
  3755.           x is greater than 1 or less than -1; otherwise, it assigns the 
  3756.           arcsine of x to y. 
  3757.  
  3758.                     #include <stdio.h>
  3759.                     #include <stdlib.h>
  3760.                     #include <math.h>
  3761.  
  3762.                     #define  MAX           1.0
  3763.                     #define  MIN          -1.0
  3764.  
  3765.                     int main(void)
  3766.                     {
  3767.                        double x,y;
  3768.  
  3769.                        printf("Enter x\n");
  3770.                        scanf("%lf", &x);
  3771.  
  3772.                        /* Output error if not in range                                            */
  3773.                        if (x > MAX)
  3774.                           printf("Error: %lf too large for asin\n", x);
  3775.                        else
  3776.                           if (x < MIN)
  3777.                              printf("Error: %lf too small for asin\n", x);
  3778.                           else {
  3779.                              y = asin(x);
  3780.                              printf("asin( %lf ) = %lf\n", x, y);
  3781.                           }
  3782.                        return 0;
  3783.  
  3784.                        /****************************************************************************
  3785.                           For the following input: 0.2
  3786.  
  3787.                           The output should be:
  3788.  
  3789.                           Enter x
  3790.                           asin( 0.200000 ) = 0.201358
  3791.                        ****************************************************************************/
  3792.                     }
  3793.  
  3794.  Related Information 
  3795.  
  3796.               acos 
  3797.               atan - atan2 
  3798.               cos 
  3799.               cosh 
  3800.               sin 
  3801.               sinh 
  3802.               tan 
  3803.               tanh 
  3804.  
  3805.  
  3806. ΓòÉΓòÉΓòÉ 3.7. assert - Verify Condition ΓòÉΓòÉΓòÉ
  3807.  
  3808. assert - Verify Condition 
  3809.  
  3810.  Syntax 
  3811.  
  3812.                     #include <assert.h>
  3813.                     void assert(int expression);
  3814.  
  3815.  Description 
  3816.  
  3817.           assert prints a diagnostic message to stderr and aborts the program 
  3818.           if expression is false (zero). The diagnostic message has the format: 
  3819.  
  3820.                     Assertion failed: expression, file filename, line line-number.
  3821.  
  3822.           assert takes no action if the expression is true (nonzero). 
  3823.  
  3824.           Use assert to identify program logic errors.  Choose an expression 
  3825.           that holds true only if the program is operating as you intend. 
  3826.           After you have debugged the program, you can use the special no-debug 
  3827.           identifier NDEBUG to remove the assert calls from the program.  If 
  3828.           you define NDEBUG to any value with a #define directive, the C 
  3829.           preprocessor expands all assert invocations to void expressions. If 
  3830.           you use NDEBUG, you must define it before you include <assert.h> in 
  3831.           the program. 
  3832.  
  3833.  Returns 
  3834.  
  3835.           There is no return value. 
  3836.  
  3837.           Note:  assert is implemented as a macro. Do not use the #undef 
  3838.                  directive with assert. 
  3839.  
  3840.  Example Code 
  3841.  
  3842.           In this example, assert tests string for a null string and an empty 
  3843.           string, and verifies that length is positive before processing these 
  3844.           arguments. 
  3845.  
  3846.                     #include <stdio.h>
  3847.                     #include <assert.h>
  3848.  
  3849.                     void analyze(char *string,int length)
  3850.                     {
  3851.                        assert(string != NULL);                                /* cannot be NULL   */
  3852.                        assert(*string != '\0');                               /* cannot be empty  */
  3853.                        assert(length > 0);                                    /* must be positive */
  3854.                        return;
  3855.                     }
  3856.  
  3857.                     int main(void)
  3858.                     {
  3859.                        char *string = "ABC";
  3860.                        int length = 3;
  3861.  
  3862.                        analyze(string, length);
  3863.                        printf("The string %s is not null or empty, and has length %d \n", string,
  3864.                           length);
  3865.                        return 0;
  3866.  
  3867.                        /****************************************************************************
  3868.                           The output should be:
  3869.  
  3870.                           The string ABC is not null or empty, and has length 3
  3871.                        ****************************************************************************/
  3872.                     }
  3873.  
  3874.  Related Information 
  3875.  
  3876.               abort 
  3877.               #define in the Language Reference 
  3878.               #undef in the Language Reference 
  3879.  
  3880.  
  3881. ΓòÉΓòÉΓòÉ 3.8. atan - atan2 - Calculate Arctangent ΓòÉΓòÉΓòÉ
  3882.  
  3883. atan - atan2 - Calculate Arctangent 
  3884.  
  3885.  Syntax 
  3886.  
  3887.                     #include <math.h>
  3888.                     double atan(double x);
  3889.                     double atan2(double y, double x);
  3890.  
  3891.  Description 
  3892.  
  3893.           atan and atan2 calculate the arctangent of x and y/x, respectively. 
  3894.  
  3895.  Returns 
  3896.  
  3897.           atan returns a value in the range -pi/2 to pi/2 radians. atan2 
  3898.           returns a value in the range -pi to pi radians. If both arguments of 
  3899.           atan2 are zero, the function sets errno to EDOM, and returns a value 
  3900.           of 0. 
  3901.  
  3902.  Example Code 
  3903.  
  3904.           This example calculates arctangents using the atan and atan2 
  3905.           functions. 
  3906.  
  3907.                     #include <math.h>
  3908.  
  3909.                     int main(void)
  3910.                     {
  3911.                        double a,b,c,d;
  3912.  
  3913.                        c = 0.45;
  3914.                        d = 0.23;
  3915.                        a = atan(c);
  3916.                        b = atan2(c, d);
  3917.                        printf("atan( %lf ) = %lf\n", c, a);
  3918.                        printf("atan2( %lf, %lf ) = %lf\n", c, d, b);
  3919.                        return 0;
  3920.  
  3921.                        /****************************************************************************
  3922.                           The output should be:
  3923.  
  3924.                           atan( 0.450000 ) = 0.422854
  3925.                           atan2( 0.450000, 0.230000 ) = 1.098299
  3926.                        ****************************************************************************/
  3927.                     }
  3928.  
  3929.  Related Information 
  3930.  
  3931.               acos 
  3932.               asin 
  3933.               cos 
  3934.               cosh 
  3935.               sin 
  3936.               sinh 
  3937.               tan 
  3938.               tanh 
  3939.  
  3940.  
  3941. ΓòÉΓòÉΓòÉ 3.9. atexit - Record Program Termination Function ΓòÉΓòÉΓòÉ
  3942.  
  3943. atexit - Record Program Termination Function 
  3944.  
  3945.  Syntax 
  3946.  
  3947.                     #include <stdlib.h>
  3948.                     int atexit(void (*func)(void));
  3949.  
  3950.  Description 
  3951.  
  3952.           atexit records a function, pointed to by func, that the system calls 
  3953.           at normal program termination.  For portability, you should use 
  3954.           atexit to register up to 32 functions only. The functions are 
  3955.           executed in a LIFO (last-in-first-out) order. 
  3956.  
  3957.  Returns 
  3958.  
  3959.           atexit returns 0 if it is successful, and nonzero if it fails. 
  3960.  
  3961.  Example Code 
  3962.  
  3963.           This example uses atexit to call the function goodbye at program 
  3964.           termination. 
  3965.  
  3966.                     #include <stdlib.h>
  3967.                     #include <stdio.h>
  3968.  
  3969.                     void goodbye(void)
  3970.                     {
  3971.  
  3972.                        /* This function is called at normal program termination                   */
  3973.  
  3974.                        printf("The function goodbye was called at program termination\n");
  3975.                     }
  3976.  
  3977.                     int main(void)
  3978.                     {
  3979.                        int rc;
  3980.  
  3981.                        rc = atexit(goodbye);
  3982.                        if (rc != 0)
  3983.                           perror("Error in atexit");
  3984.                        return 0;
  3985.  
  3986.                        /****************************************************************************
  3987.                           The output should be:
  3988.  
  3989.                           The function goodbye was called at program termination
  3990.                        ****************************************************************************/
  3991.                     }
  3992.  
  3993.  Related Information 
  3994.  
  3995.               exit 
  3996.               _exit 
  3997.               _onexit 
  3998.               signal 
  3999.  
  4000.  
  4001. ΓòÉΓòÉΓòÉ 3.10. atof - Convert Character String to Float ΓòÉΓòÉΓòÉ
  4002.  
  4003. atof - Convert Character String to Float 
  4004.  
  4005.  Syntax 
  4006.  
  4007.                     #include <stdlib.h>
  4008.                     double atof(const char *string);
  4009.  
  4010.  Description 
  4011.  
  4012.           atof converts a character string to a double-precision floating-point 
  4013.           value. 
  4014.  
  4015.           The input string is a sequence of characters that can be interpreted 
  4016.           as a numerical value of the specified return type.  The function 
  4017.           stops reading the input string at the first character that it cannot 
  4018.           recognize as part of a number;  this character can be the null 
  4019.           character that ends the string. 
  4020.  
  4021.           atof expects a string in the following form: 
  4022.  
  4023.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4024.                     Γöé                                        Γöé
  4025.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ>          Γöé
  4026.                     Γöé   ΓööΓöÇwhitespaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇdigitsΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöñ           Γöé
  4027.                     Γöé           ΓööΓöÇΓö┤ΓöÇΓöÿ  Γöé     ΓööΓöÇ.ΓöÇΓöÿ  ΓööΓöÇdigitsΓöÇΓöÿ Γöé           Γöé
  4028.                     Γöé               ΓööΓöÇ.ΓöÇΓöÇdigitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ           Γöé
  4029.                     Γöé                                        Γöé
  4030.                     Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                        Γöé
  4031.                     Γöé   ΓööΓöÇΓö¼ΓöÇeΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÿ                          Γöé
  4032.                     Γöé    ΓööΓöÇEΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ                               Γöé
  4033.                     Γöé       ΓööΓöÇΓö┤ΓöÇΓöÿ                               Γöé
  4034.                     Γöé                                        Γöé
  4035.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4036.  
  4037.           The actual decimal point character (radix character) is determined by 
  4038.           the LC_NUMERIC category of the current locale. 
  4039.  
  4040.           The white space consists of the same characters for which the isspace 
  4041.           function is true, such as spaces and tabs. atof ignores leading 
  4042.           white-space characters. 
  4043.  
  4044.           For atof, digits is one or more decimal digits;  if no digits appear 
  4045.           before the decimal point, at least one digit must appear after the 
  4046.           decimal point.  The decimal digits can precede an exponent, 
  4047.           introduced by the letter e or E.  The exponent is a decimal integer, 
  4048.           which may be signed. 
  4049.  
  4050.           atof will not fail if a character other than a digit follows an E or 
  4051.           if e is read in as an exponent. For example, 100elf will be converted 
  4052.           to the floating-point value 100.0. The accuracy is up to 17 
  4053.           significant character digits. The string can also be "infinity", 
  4054.           "inf", or "nan". These strings are case-insensitive, and can be 
  4055.           preceded by a unary minus (-). They are converted to infinity and NaN 
  4056.           values. 
  4057.  
  4058.  Returns 
  4059.  
  4060.           atof returns a double value produced by interpreting the input 
  4061.           characters as a number. The return value is 0 if the function cannot 
  4062.           convert the input to a value of that type. The return value is 
  4063.           undefined in case of overflow. 
  4064.  
  4065.  Example Code 
  4066.  
  4067.           This example shows how to convert numbers stored as strings to 
  4068.           numerical values using the atof function. 
  4069.  
  4070.                     #include <stdio.h>
  4071.                     #include <stdlib.h>
  4072.  
  4073.                     int main(void)
  4074.                     {
  4075.                        double x;
  4076.                        char *s;
  4077.  
  4078.                        s = " -2309.12E-15";
  4079.                        x = atof(s);                                           /* x = -2309.12E-15 */
  4080.                        printf("atof( %s ) = %G\n", s, x);
  4081.                        return 0;
  4082.  
  4083.                        /****************************************************************************
  4084.                           The output should be:
  4085.  
  4086.                           atof(  -2309.12E-15 ) = -2.30912E-12
  4087.                        ****************************************************************************/
  4088.                     }
  4089.  
  4090.  Related Information 
  4091.  
  4092.               atoi 
  4093.               atol 
  4094.               _atold 
  4095.               strtod 
  4096.               strtol 
  4097.               strtold 
  4098.               strtoul 
  4099.               Infinity and NaN Support 
  4100.  
  4101.  
  4102. ΓòÉΓòÉΓòÉ 3.11. atoi - Convert Character String to Integer ΓòÉΓòÉΓòÉ
  4103.  
  4104. atoi - Convert Character String to Integer 
  4105.  
  4106.  Syntax 
  4107.  
  4108.                     #include <stdlib.h>
  4109.                     int atoi(const char *string);
  4110.  
  4111.  Description 
  4112.  
  4113.           atoi converts a character string to an integer value. 
  4114.  
  4115.           The input string is a sequence of characters that can be interpreted 
  4116.           as a numerical value of the specified return type.  The function 
  4117.           stops reading the input string at the first character that it cannot 
  4118.           recognize as part of a number;  this character can be the null 
  4119.           character that ends the string. 
  4120.  
  4121.           atoi does not recognize decimal points nor exponents. The string 
  4122.           argument for this function has the form: 
  4123.  
  4124.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4125.                     Γöé                                        Γöé
  4126.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÇ><                     Γöé
  4127.                     Γöé   ΓööΓöÇwhitespaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ                           Γöé
  4128.                     Γöé           ΓööΓöÇΓö┤ΓöÇΓöÿ                           Γöé
  4129.                     Γöé                                        Γöé
  4130.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4131.  
  4132.           where whitespace consists of the same characters for which the 
  4133.           isspace function is true, such as spaces and tabs. atoi ignores 
  4134.           leading white-space characters. digits is one or more decimal digits. 
  4135.  
  4136.  Returns 
  4137.  
  4138.           atoi returns an int value produced by interpreting the input 
  4139.           characters as a number.  The return value is 0 if the function cannot 
  4140.           convert the input to a value of that type.  The return value is 
  4141.           undefined in the case of an overflow. 
  4142.  
  4143.  Example Code 
  4144.  
  4145.           This example shows how to convert numbers stored as strings to 
  4146.           numerical values using the atoi function. 
  4147.  
  4148.                     #include <stdio.h>
  4149.                     #include <stdlib.h>
  4150.  
  4151.                     int main(void)
  4152.                     {
  4153.                        int i;
  4154.                        char *s;
  4155.  
  4156.                        s = " -9885";
  4157.                        i = atoi(s);                                           /* i = -9885        */
  4158.                        printf("atoi( %s ) = %d\n", s, i);
  4159.                        return 0;
  4160.  
  4161.                        /****************************************************************************
  4162.                           The output should be:
  4163.  
  4164.                           atoi(  -9885 ) = -9885
  4165.                        ****************************************************************************/
  4166.                     }
  4167.  
  4168.  Related Information 
  4169.  
  4170.               atof 
  4171.               atol 
  4172.               _atold 
  4173.               strtod 
  4174.               strtol 
  4175.               strtold 
  4176.  
  4177.  
  4178. ΓòÉΓòÉΓòÉ 3.12. atol - Convert Character String to Long Integer ΓòÉΓòÉΓòÉ
  4179.  
  4180. atol - Convert Character String to Long Integer 
  4181.  
  4182.  Syntax 
  4183.  
  4184.                     #include <stdlib.h>
  4185.                     long int atol(const char *string);
  4186.  
  4187.  Description 
  4188.  
  4189.           atol converts a character string to a long value. 
  4190.  
  4191.           The input string is a sequence of characters that can be interpreted 
  4192.           as a numerical value of the specified return type.  The function 
  4193.           stops reading the input string at the first character that it cannot 
  4194.           recognize as part of a number; this character can be the null 
  4195.           character that ends the string. 
  4196.  
  4197.           atol does not recognize decimal points nor exponents.  The string 
  4198.           argument for this function has the form: 
  4199.  
  4200.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4201.                     Γöé                                        Γöé
  4202.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÇ><                     Γöé
  4203.                     Γöé   ΓööΓöÇwhitespaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ                           Γöé
  4204.                     Γöé           ΓööΓöÇΓö┤ΓöÇΓöÿ                           Γöé
  4205.                     Γöé                                        Γöé
  4206.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4207.  
  4208.           where whitespace consists of the same characters for which the 
  4209.           isspace function is true, such as spaces and tabs. atol ignores 
  4210.           leading white-space characters. digits is one or more decimal digits. 
  4211.  
  4212.  Returns 
  4213.  
  4214.           atol returns a long value produced by interpreting the input 
  4215.           characters as a number.  The return value is 0L if the function 
  4216.           cannot convert the input to a value of that type.  The return value 
  4217.           is undefined in case of overflow. 
  4218.  
  4219.  Example Code 
  4220.  
  4221.           This example shows how to convert numbers stored as strings to 
  4222.           numerical values using the atol function. 
  4223.  
  4224.                     #include <stdio.h>
  4225.                     #include <stdlib.h>
  4226.  
  4227.                     int main(void)
  4228.                     {
  4229.                        long l;
  4230.                        char *s;
  4231.  
  4232.                        s = "98854 dollars";
  4233.                        l = atol(s);                                           /* l = 98854        */
  4234.                        printf("atol( %s ) = %d\n", s, l);
  4235.                        return 0;
  4236.  
  4237.                        /****************************************************************************
  4238.                           The output should be similar to :
  4239.  
  4240.                           atol( 98854 dollars ) = 98854
  4241.                        ****************************************************************************/
  4242.                     }
  4243.  
  4244.  Related Information 
  4245.  
  4246.               atof 
  4247.               atoi 
  4248.               _atold 
  4249.               strtod 
  4250.               strtol 
  4251.               strtold 
  4252.  
  4253.  
  4254. ΓòÉΓòÉΓòÉ 3.13. _atold - Convert Character String to Long Double ΓòÉΓòÉΓòÉ
  4255.  
  4256. _atold - Convert Character String to Long Double 
  4257.  
  4258.  Syntax 
  4259.  
  4260.                     #include <stdlib.h>    /* also defined in <math.h> */
  4261.                     long double _atold(const char *nptr);
  4262.  
  4263.  Description 
  4264.  
  4265.           _atold converts a character string pointed to by nptr to a long 
  4266.           double value. The function continues until it reads a character it 
  4267.           does not recognize as part of a number. This character can be the 
  4268.           ending null character. Except for its behavior on error, _atold is 
  4269.           equivalent to: 
  4270.  
  4271.                     strtold(nptr, (char **)NULL)
  4272.  
  4273.           The string pointed to by nptr must have the following format: 
  4274.  
  4275.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  4276.                     Γöé                                        Γöé
  4277.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ>       Γöé
  4278.                     Γöé   ΓööΓöÇwhitespaceΓöÇΓöÿ  ΓööΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇdigitsΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÿ        Γöé
  4279.                     Γöé            Γö£ΓöÇ + ΓöÇΓöñ  Γöé     ΓööΓöÇ.ΓöÇΓöÿ  ΓööΓöÇdigitsΓöÇΓöÿ Γöé         Γöé
  4280.                     Γöé            ΓööΓöÇ Γö┤ ΓöÇΓöÿ  ΓööΓöÇ.ΓöÇΓöÇdigitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ         Γöé
  4281.                     Γöé                                        Γöé
  4282.                     Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                      Γöé
  4283.                     Γöé   ΓööΓöÇΓö¼ΓöÇ e ΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÿ                        Γöé
  4284.                     Γöé    ΓööΓöÇ E ΓöÇΓöÿ  Γö£ΓöÇ + ΓöÇΓöñ                             Γöé
  4285.                     Γöé        ΓööΓöÇ Γö┤ ΓöÇΓöÿ                             Γöé
  4286.                     Γöé                                        Γöé
  4287.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  4288.  
  4289.           digits is one or more decimal digits.  If no digits appear before the 
  4290.           decimal point, at least one digit must follow the decimal point. The 
  4291.           decimal point character (radix character) is determined by the 
  4292.           LC_NUMERIC category of the current locale. You can place an exponent 
  4293.           expressed as a decimal integer after the digits. The exponent can be 
  4294.           signed. 
  4295.  
  4296.           The value of nptr can also be one of the strings infinity, inf, or 
  4297.           nan. These strings are case-insensitive, and can be preceded by a 
  4298.           unary minus (-). They are converted to infinity and NaN values. For 
  4299.           more information on NaN and infinity values, see Infinity and NaN 
  4300.           Support. 
  4301.  
  4302.           _atold ignores any white-space characters, as defined by the isspace 
  4303.           function. 
  4304.  
  4305.  Returns 
  4306.  
  4307.           _atold returns the converted long double value. In the case of an 
  4308.           underflow, it returns 0. In the case of a positive overflow, _atold 
  4309.           returns positive _LHUGE_VAL. It returns negative _LHUGE_VAL for a 
  4310.           negative overflow. 
  4311.  
  4312.  Example Code 
  4313.  
  4314.           This example uses _atold to convert two strings, " 
  4315.           -001234.5678e10end of string" and "NaNQ", to their corresponding long 
  4316.           double values. 
  4317.  
  4318.                     #include <stdlib.h>
  4319.                     #include <stdio.h>
  4320.  
  4321.                     int main(void)
  4322.                     {
  4323.                        char *string;
  4324.  
  4325.                        string = "  -001234.5678e10end of string";
  4326.                        printf("_atold = %.10Le\n", _atold(string));
  4327.                        string = "NaNQ";
  4328.                        printf("_atold = %.10Le\n", _atold(string));
  4329.                        return 0;
  4330.  
  4331.                        /****************************************************************************
  4332.                           The output should be:
  4333.  
  4334.                           _atold = -1.2345678000e+13
  4335.                           _atold = nan
  4336.                        ****************************************************************************/
  4337.  
  4338.                     }
  4339.  
  4340.  Related Information 
  4341.  
  4342.               atof 
  4343.               atoi 
  4344.               atol 
  4345.               strtod 
  4346.               strtol 
  4347.               strtold 
  4348.  
  4349.  
  4350. ΓòÉΓòÉΓòÉ 3.14. _beginthread - Create New Thread ΓòÉΓòÉΓòÉ
  4351.  
  4352. _beginthread - Create New Thread 
  4353.  
  4354.  Syntax 
  4355.  
  4356.                     #include <stdlib.h>   /* also in <process.h> */
  4357.                     int _beginthread(void (*start_address) (void *),
  4358.                                          (void *)stack,
  4359.                                          unsigned stack_size,
  4360.                                          void *arglist);
  4361.  
  4362.  Description 
  4363.  
  4364.           _beginthread creates a new thread. It takes the following arguments: 
  4365.  
  4366.           start_address  This parameter is the address of the function that the 
  4367.                          newly created thread will execute. When the thread 
  4368.                          returns from that function, it is terminated 
  4369.                          automatically. You can also explicitly terminate the 
  4370.                          thread by calling _endthread. 
  4371.  
  4372.           stack          This parameter is ignored, but is retained to ease 
  4373.                          migration of C/2 programs. The C/2 compiler requires 
  4374.                          the second parameter to be the address of the bottom 
  4375.                          of the stack that the new thread will use. Because the 
  4376.                          OS/2 operating system automatically takes care of 
  4377.                          stack allocation, the parameter is not needed. 
  4378.  
  4379.           stack_size     The size of the stack, in bytes, that is to be 
  4380.                          allocated for the new thread. The stack size should be 
  4381.                          a nonzero multiple of 4K and a minimum of 8K. Memory 
  4382.                          is used when needed, one page at a time. 
  4383.  
  4384.           arglist        A parameter to be passed to the newly created thread. 
  4385.                          It is the size of a pointer, and is usually the 
  4386.                          address of a data item to be passed to the new thread, 
  4387.                          such as a char string. It provides _beginthread with a 
  4388.                          value to pass to the child thread. NULL can be used as 
  4389.                          a placeholder. 
  4390.  
  4391.           An alternative to this function is the OS/2 DosCreateThread function. 
  4392.           If you use DosCreateThread, you must also use a #pragma handler 
  4393.           statement for the thread function to ensure proper C exception 
  4394.           handling. You should also call the _fpreset function at the start of 
  4395.           the thread to preset the 387 control status word correctly. Using 
  4396.           DosCreateThread requires that you use _endthread to terminate the 
  4397.           thread. 
  4398.  
  4399.  Returns 
  4400.  
  4401.           If successful, _beginthread returns the thread ID number of the new 
  4402.           thread. It returns -1 to indicate an error. 
  4403.  
  4404.  Example Code 
  4405.  
  4406.           This example uses _beginthread to start a new thread bonjour, which 
  4407.           prints Bonjour! five times and then implicitly ends itself. The 
  4408.           program then prints a statement indicating the thread identifier 
  4409.           number for bonjour. 
  4410.  
  4411.                     #define  INCL_DOS
  4412.                     #include <os2.h>
  4413.                     #include <stdio.h>
  4414.                     #include <stdlib.h>
  4415.  
  4416.                     static int wait = 1;
  4417.  
  4418.                     void bonjour(void *arg)
  4419.                     {
  4420.                        int i = 0;
  4421.  
  4422.                        while (wait)              /* wait until the thread id has been printed     */
  4423.                           DosSleep(0l);
  4424.                        while (i++ < 5)
  4425.                           printf("Bonjour!\n");
  4426.                     }
  4427.  
  4428.                     int main(void)
  4429.                     {
  4430.                        int tid;
  4431.  
  4432.                        tid = _beginthread(bonjour, NULL, 8192, NULL);
  4433.                        if (-1 == tid) {
  4434.                           printf("Unable to start thread.\n");
  4435.                           return EXIT_FAILURE;
  4436.                        }
  4437.                        else {
  4438.                           printf("Thread started with thread identifier number %d.\n", tid);
  4439.                           wait = 0;
  4440.                        }
  4441.                        DosWaitThread((PTID)&tid, DCWW_WAIT);  /* wait for thread bonjour to       */
  4442.                                                               /* end before ending main thread    */
  4443.  
  4444.                        return 0;
  4445.  
  4446.                        /****************************************************************************
  4447.                           The output should be similar to :
  4448.  
  4449.                            Thread started with thread identifier number 2.
  4450.                            Bonjour!
  4451.                            Bonjour!
  4452.                            Bonjour!
  4453.                            Bonjour!
  4454.                            Bonjour!
  4455.                        ****************************************************************************/
  4456.                     }
  4457.  
  4458.  Related Information 
  4459.  
  4460.               _endthread 
  4461.               _threadstore 
  4462.  
  4463.  
  4464. ΓòÉΓòÉΓòÉ 3.15. Bessel Functions - Solve Differential Equations ΓòÉΓòÉΓòÉ
  4465.  
  4466. Bessel Functions - Solve Differential Equations 
  4467.  
  4468.  Syntax 
  4469.  
  4470.                     #include <math.h>
  4471.                     double _j0(double x);
  4472.                     double _j1(double x);
  4473.                     double _jn(int n, double x);
  4474.                     double _y0(double x);
  4475.                     double _y1(double x);
  4476.                     double _yn(int n, double x);
  4477.  
  4478.  Description 
  4479.  
  4480.           Bessel functions solve certain types of differential equations.  The 
  4481.           _j0, _j1, and _jn functions are Bessel functions of the first kind 
  4482.           for orders 0, 1, and n, respectively. 
  4483.  
  4484.           The _y0, _y1, and _yn functions are Bessel functions of the second 
  4485.           kind for orders 0, 1, and n, respectively. The argument x must be 
  4486.           positive. The argument n should be greater than or equal to zero. If 
  4487.           n is less than zero, it will be a negative exponent. 
  4488.  
  4489.  Returns 
  4490.  
  4491.           For _j0, _j1, _y0, or _y1, if the absolute value of x is too large, 
  4492.           the function sets errno to ERANGE, and returns 0. For _y0, _y1, or 
  4493.           _yn, if x is negative, the function sets errno to EDOM and returns 
  4494.           the value -HUGE_VAL. For _y0, _y1, or _yn, if x causes an overflow, 
  4495.           the function sets errno to ERANGE and returns the value -HUGE_VAL. 
  4496.  
  4497.  Example Code 
  4498.  
  4499.           This example computes y to be the order 0 Bessel function of the 
  4500.           first kind for x, and z to be the order 3 Bessel function of the 
  4501.           second kind for x. 
  4502.  
  4503.                     #include <stdio.h>
  4504.                     #include <math.h>
  4505.  
  4506.                     int main(void)
  4507.                     {
  4508.                        double x,y,z;
  4509.  
  4510.                        x = 4.27;
  4511.                        y = j0(x);      /* y = -0.3660 is the order 0 bessel                       */
  4512.                                        /* function of the first kind for x                        */
  4513.  
  4514.                        printf("j0( 4.27 ) = %5.4f\n", y);
  4515.                        z = yn(3, x);   /* z = -0.0875 is the order 3 bessel                       */
  4516.                                        /* function of the second kind for x                       */
  4517.  
  4518.                        printf("yn( 3,4.27 ) = %5.4f\n", z);
  4519.                        return 0;
  4520.  
  4521.                        /****************************************************************************
  4522.                           The output should be:
  4523.  
  4524.                           j0( 4.27 ) = -0.3660
  4525.                           yn( 3,4.27 ) = -0.0875
  4526.                        ****************************************************************************/
  4527.                     }
  4528.  
  4529.  Related Information 
  4530.  
  4531.               erf - erfc 
  4532.               gamma 
  4533.  
  4534.  
  4535. ΓòÉΓòÉΓòÉ 3.16. bsearch - Search Arrays ΓòÉΓòÉΓòÉ
  4536.  
  4537. bsearch - Search Arrays 
  4538.  
  4539.  Syntax 
  4540.  
  4541.                     #include <stdlib.h>  /* also in <search.h> */
  4542.                     void *bsearch(const void *key, const void *base,
  4543.                                   size_t num, size_t size,
  4544.                                   int (*compare)(const void *key, const void *element));
  4545.  
  4546.  Description 
  4547.  
  4548.           bsearch performs a binary search of an array of num elements, each of 
  4549.           size bytes. The array must be sorted in ascending order by the 
  4550.           function pointed to by compare.  The base is a pointer to the base of 
  4551.           the array to search, and key is the value being sought. 
  4552.  
  4553.           The compare argument is a pointer to a function you must supply that 
  4554.           takes a pointer to the key argument and to an array element, in that 
  4555.           order. bsearch calls this function one or more times during the 
  4556.           search. The function must compare the key and the element and return 
  4557.           one of the following values:  compact break=fit. 
  4558.  
  4559.           Value             Meaning 
  4560.  
  4561.           Less than 0       key less than element 
  4562.  
  4563.           0                 key identical to element 
  4564.  
  4565.           Greater than 0    key greater than element 
  4566.  
  4567.  Returns 
  4568.  
  4569.           bsearch returns a pointer to key in the array to which base points. 
  4570.           If two keys are equal, the element that key will point to is 
  4571.           unspecified. If bsearch cannot find the key, it returns NULL. 
  4572.  
  4573.  Example Code 
  4574.  
  4575.           This example performs a binary search on the argv array of pointers 
  4576.           to the program parameters and finds the position of the argument 
  4577.           PATH. It first removes the program name from argv, and then sorts the 
  4578.           array alphabetically before calling bsearch. The functions compare1 
  4579.           and compare2 compare the values pointed to by arg1 and arg2 and 
  4580.           return the result to bsearch. 
  4581.  
  4582.                     #include <stdlib.h>
  4583.                     #include <stdio.h>
  4584.                     #include <string.h>
  4585.  
  4586.                     int compare1(const void *arg1,const void *arg2)
  4587.                     {
  4588.                        return (strcmp(*(char **)arg1, *(char **)arg2));
  4589.                     }
  4590.  
  4591.                     int compare2(const void *arg1,const void *arg2)
  4592.                     {
  4593.                        return (strcmp((char *)arg1, *(char **)arg2));
  4594.                     }
  4595.  
  4596.                     int main(int argc,char *argv[])
  4597.                     {
  4598.                        char **result;
  4599.                        char *key = "PATH";
  4600.                        int i;
  4601.                        argv++;
  4602.                        argc--;
  4603.  
  4604.                        qsort((char *)argv, argc, sizeof(char *), compare1);
  4605.                        result = (char **)bsearch(key, argv, argc, sizeof(char *), compare2);
  4606.                        if (result != NULL) {
  4607.                           printf("result = <%s>\n", *result);
  4608.                        }
  4609.                        else
  4610.                           printf("result is null\n");
  4611.                        return 0;
  4612.  
  4613.                        /****************************************************************************
  4614.                           If the program name is progname and you enter:
  4615.  
  4616.                           progname where is PATH in this phrase?
  4617.  
  4618.                           The output should be:
  4619.  
  4620.                           result = <PATH>
  4621.                        ****************************************************************************/
  4622.                     }
  4623.  
  4624.  Related Information 
  4625.  
  4626.               lfind - lsearch 
  4627.               qsort 
  4628.  
  4629.  
  4630. ΓòÉΓòÉΓòÉ 3.17. calloc - Reserve and Initialize Storage ΓòÉΓòÉΓòÉ
  4631.  
  4632. calloc - Reserve and Initialize Storage 
  4633.  
  4634.  Syntax 
  4635.  
  4636.                     #include <stdlib.h>  /* also in <malloc.h> */
  4637.                     void *calloc(size_t num, size_t size);
  4638.  
  4639.  Description 
  4640.  
  4641.           calloc reserves storage space for an array of num elements, each of 
  4642.           length size bytes. calloc then gives all the bits of each element an 
  4643.           initial value of 0. 
  4644.  
  4645.           Heap-specific versions of this function (_ucalloc) are also 
  4646.           available. calloc always allocates memory from the default heap. You 
  4647.           can also use the debug version of calloc, _debug_calloc, to debug 
  4648.           memory problems. 
  4649.  
  4650.  Returns 
  4651.  
  4652.           calloc returns a pointer to the reserved space. The storage space to 
  4653.           which the return value points is suitably aligned for storage of any 
  4654.           type of object.  To get a pointer to a type, use a type cast on the 
  4655.           return value.  The return value is NULL if there is not enough 
  4656.           storage, or if num or size is 0. 
  4657.  
  4658.  Example Code 
  4659.  
  4660.           This example prompts for the number of array entries required and 
  4661.           then reserves enough space in storage for the entries. If calloc is 
  4662.           successful, the example prints out each entry;  otherwise, it prints 
  4663.           out an error. 
  4664.  
  4665.                     #include <stdio.h>
  4666.                     #include <stdlib.h>
  4667.  
  4668.                     int main(void)
  4669.                     {
  4670.                        long *array;                             /* start of the array             */
  4671.                        long *index;                             /* index variable                 */
  4672.                        int i;                                   /* index variable                 */
  4673.                        int num;                                 /* number of entries of the array */
  4674.  
  4675.                        printf("Enter the size of the array\n");
  4676.                        scanf("%i", &num);
  4677.  
  4678.                        /* allocate num entries                                                    */
  4679.  
  4680.                        if ((index = array = calloc(num, sizeof(long))) != NULL) {
  4681.                           for (i = 0; i < num; ++i)             /* put values in array            */
  4682.                              *index++ = i;                      /* using pointer notation         */
  4683.                           for (i = 0; i < num; ++i)             /* print the array out            */
  4684.                              printf("array[ %i ] = %i\n", i, array[i]);
  4685.                        }
  4686.                        else {                                                 /* out of storage   */
  4687.                           perror("Out of storage");
  4688.                           abort();
  4689.                        }
  4690.                        return 0;
  4691.  
  4692.                        /****************************************************************************
  4693.                           The output should be similar to :
  4694.  
  4695.                           Enter the size of the array
  4696.                           3
  4697.                           array[ 0 ] = 0
  4698.                           array[ 1 ] = 1
  4699.                           array[ 2 ] = 2
  4700.                        ****************************************************************************/
  4701.                     }
  4702.  
  4703.  Related Information 
  4704.  
  4705.               free 
  4706.               malloc 
  4707.               realloc 
  4708.               _ucalloc 
  4709.               "Managing Memory" in the VisualAge C++ Programming Guide 
  4710.  
  4711.  
  4712. ΓòÉΓòÉΓòÉ 3.18. catclose - Closes a Specified Message Catalog ΓòÉΓòÉΓòÉ
  4713.  
  4714. catclose - Closes a Specified Message Catalog 
  4715.  
  4716.  Syntax 
  4717.  
  4718.                     #include <nl_types.h>
  4719.  
  4720.                     int catclose(nl_catd catd);
  4721.  
  4722.  Description 
  4723.  
  4724.           The catclose function is used to close the catalog message file 
  4725.           specified by the parameter catd that was previously opened by 
  4726.           catopen. 
  4727.  
  4728.  Returns 
  4729.  
  4730.               Successful return is 0. 
  4731.               Unsuccessful return is -1. 
  4732.               ERRNO is set. 
  4733.  
  4734.  Example Code 
  4735.  
  4736.           This example opens and closes a catalog message file. 
  4737.  
  4738.                     #include <stdio.h>
  4739.                     #include <nl_types.h>
  4740.  
  4741.                     void load_cat(char *tcat)
  4742.                     {
  4743.                       nl_catd catd;
  4744.  
  4745.                       if ((catd = catopen(tcat, 0)) == CATD_ERR)
  4746.                       {
  4747.                          printf("Unable to load specified catalog. \n");
  4748.                          exit (1);
  4749.                       }
  4750.  
  4751.                       if (catclose(catd) == -1)
  4752.                          printf("Error when trying to close catalog file");
  4753.  
  4754.                     }
  4755.  
  4756.  Related Information 
  4757.  
  4758.               catopen 
  4759.               catgets 
  4760.  
  4761.  
  4762. ΓòÉΓòÉΓòÉ 3.19. catgets - Retrieves a Message from a Catalog ΓòÉΓòÉΓòÉ
  4763.  
  4764. catgets - Retrieves a Message from a Catalog 
  4765.  
  4766.  Syntax 
  4767.  
  4768.                     #include <nl_types.h>
  4769.  
  4770.                     char *catgets(nl_catd catd, int set_id, int msg_id, const char *s);
  4771.  
  4772.  Description 
  4773.  
  4774.           The catgets subroutine retrieves a message from a catalog and 
  4775.           constructs a message based on the set_id + msg_id + message. If the 
  4776.           catgets subroutine finds the specified message, it loads it into an 
  4777.           internal character string  buffer,  ends the  message  string with a 
  4778.           null character, and returns a pointer to the buffer. 
  4779.  
  4780.           The returned pointer is used to reference the buffer and display the 
  4781.           message. However, the buffer cannot be referenced after the catalog 
  4782.           is closed. 
  4783.  
  4784.           The parameters are: 
  4785.  
  4786.           catd      Specifies the open catalog to use for message retrieval. 
  4787.  
  4788.           set_id    Specifies the set ID of the message. 
  4789.  
  4790.           msg_id    Specifies the message ID of the message. The set_id and 
  4791.                     msg_id parameters specify a particular message in the 
  4792.                     catalog to retrieve. 
  4793.  
  4794.           s         Specifies the default character-string buffer to use if the 
  4795.                     message is not retrieved from the catalog. 
  4796.  
  4797.  Returns 
  4798.  
  4799.           If the catgets subroutine is unsuccessful for any reason, it returns 
  4800.           the user-supplied  default  message string specified by the s 
  4801.           parameter. 
  4802.  
  4803.  Example Code 
  4804.  
  4805.           This example opens a message file with the name contained in tcat and 
  4806.           prints out the message associated with set number in setno and the 
  4807.           message number in msgno. 
  4808.  
  4809.                     #include <stdio.h>
  4810.                     #include <nl_types.h>
  4811.  
  4812.                     char *catg(char *tcat, int setno, int msgno, char *def)
  4813.                     {
  4814.                         nl_catd catd;                       /* Catalog descriptor. */
  4815.  
  4816.                         if ((catd = catopen(tcat, 0)) == CATD_ERR)
  4817.                         {
  4818.                            printf("Unable to load specified catalog. \n");
  4819.                            exit (1);
  4820.                         }
  4821.  
  4822.                         printf("ERROR MESSAGE : %s\n",
  4823.                                catgets(catd, setno, msgno, def));
  4824.  
  4825.                         if (catclose(catd) == -1)
  4826.                            perror("Error when trying to close catalog file");
  4827.  
  4828.                     }
  4829.  
  4830.  Related Information 
  4831.  
  4832.               catopen 
  4833.               catclose 
  4834.  
  4835.  
  4836. ΓòÉΓòÉΓòÉ 3.20. catopen - Opens a Specified Message Catalog ΓòÉΓòÉΓòÉ
  4837.  
  4838. catopen - Opens a Specified Message Catalog 
  4839.  
  4840.  Syntax 
  4841.  
  4842.                     #include <nl_types.h>
  4843.  
  4844.                     nl_catd catopen(const char *name, int oflag);
  4845.  
  4846.  Description 
  4847.  
  4848.           The catopen subroutine opens a specified message catalog and returns 
  4849.           a catalog descriptor used to retrieve messages from the catalog. The 
  4850.           contents of the catalog descriptor are complete when the catgets 
  4851.           function accesses the message catalog. The nl_catd data type is used 
  4852.           for catalog descriptors. This data type is defined in the nl_types.h 
  4853.           file. 
  4854.  
  4855.           If the catalog file name referred to by the CatalogName parameter 
  4856.           contains a drive letter or a \, it is assumed to be an absolute 
  4857.           pathname. That is, the catalog looked for following that path. If the 
  4858.           catalog file name is not an absolute path name, the user environment 
  4859.           determines which directory paths to search. The NLSPATH environment 
  4860.           variable defines the directory search path. 
  4861.  
  4862.           Single-letter keywords for the NLSPATH are used as special variables 
  4863.           as follows: 
  4864.  
  4865.           %N   The value of the name parameter that is passed to catopen. 
  4866.  
  4867.           %L   The value of the category LC_MESSAGES. 
  4868.  
  4869.           %l   The language element of the category LC_MESSAGES. 
  4870.  
  4871.           %t   The territory element of the category LC_MESSAGES. 
  4872.  
  4873.           %c   The codeset element of the category LC_MESSAGES. 
  4874.  
  4875.           %%   A single '%' character. 
  4876.  
  4877.           The value of the LC_MESSAGES category can be set by specifying values 
  4878.           for the LANG, LC_ALL, or LC_MESSAGES environment variable. The value 
  4879.           of the LC_MESSAGES category indicates which locale specific directory 
  4880.           to search for message catalogs. For example, if the catopen 
  4881.           subroutine specifies a catalog with the name mycmd, and the 
  4882.           environment variables are set as follows: 
  4883.  
  4884.                     NLSPATH=..\%N;\%N;\system\nls\%L\%N;\system\nls\%N
  4885.                     LANG=Fr_FR.IBM-850
  4886.  
  4887.           then the application searches for the catalog in the following order: 
  4888.  
  4889.               ..\mycmd 
  4890.               .\mycmd 
  4891.               \system\nls\Fr_FR.IBM-850\mycmd 
  4892.               \system\nls\mycmd 
  4893.  
  4894.           If you omit the %N variable in a directory specification within the 
  4895.           NLSPATH environment variable, the application assumes that the path 
  4896.           defines a directory and searches for the catalog in that directory 
  4897.           before searching the next specified path. 
  4898.  
  4899.           If the NLSPATH environment variable is not defined, the default path 
  4900.           of . (current directory) is used. 
  4901.  
  4902.           The parameters are: 
  4903.  
  4904.           name Specifies the catalog file to open. 
  4905.  
  4906.           oflag If the value of the oflag argument is 0, the LANG environment 
  4907.                variable is used to locate the catalog without regard to the 
  4908.                LC_MESSAGES category. If the oflag argument is NL_CAT_LOCALE, 
  4909.                the LC_MESSAGES category is used to locate the message catalog. 
  4910.  
  4911.  Returns 
  4912.  
  4913.           The catopen subroutine returns a catalog descriptor. 
  4914.  
  4915.           If the catopen subroutine returns a value of CATD_ERR ( (nl_catd) 
  4916.           -1), an error has occurred during creation of the nl_catd structure. 
  4917.  
  4918.  Example Code 
  4919.  
  4920.                     #include <stdio.h>
  4921.                     #include <nl_types.h>
  4922.  
  4923.                     void load_cat(char *tcat)
  4924.                     {
  4925.                       nl_catd catd;                         /* Catalog descriptor. */
  4926.  
  4927.                       if ((catd = catopen(tcat, 0)) == CATD_ERR)
  4928.                       {
  4929.                          printf("Unable to load specified catalog. \n");
  4930.                          exit(1);
  4931.                       }
  4932.  
  4933.                       if (catclose(catd) == -1)
  4934.                          printf("Error when trying to close catalog file\n");
  4935.  
  4936.                     }
  4937.  
  4938.  Related Information 
  4939.  
  4940.               setlocale 
  4941.               catgets 
  4942.               catclose 
  4943.  
  4944.  
  4945. ΓòÉΓòÉΓòÉ 3.21. ceil - Find Integer >= Argument ΓòÉΓòÉΓòÉ
  4946.  
  4947. ceil - Find Integer >= Argument 
  4948.  
  4949.  Syntax 
  4950.  
  4951.                     #include <math.h>
  4952.                     double ceil(double x);
  4953.  
  4954.  Description 
  4955.  
  4956.           ceil computes the smallest integer that is greater than or equal to 
  4957.           x. 
  4958.  
  4959.  Returns 
  4960.  
  4961.           ceil returns the integer as a double value. 
  4962.  
  4963.  Example Code 
  4964.  
  4965.           This example sets y to the smallest integer greater than 1.05, and 
  4966.           then to the smallest integer greater than -1.05.  The results are 2.0 
  4967.           and -1.0, respectively. 
  4968.  
  4969.                     #include <stdio.h>
  4970.                     #include <math.h>
  4971.  
  4972.                     int main(void)
  4973.                     {
  4974.                        double y,z;
  4975.  
  4976.                        y = ceil(1.05);                                        /* y = 2.0          */
  4977.                        printf("ceil( 1.05 ) = %5.f\n", y);
  4978.                        z = ceil(-1.05);                                       /* z = -1.0         */
  4979.                        printf("ceil( -1.05 ) = %5.f\n", z);
  4980.                        return 0;
  4981.  
  4982.                        /****************************************************************************
  4983.                           The output should be:
  4984.  
  4985.                           ceil( 1.05 ) =     2
  4986.                           ceil( -1.05 ) =    -1
  4987.                        ****************************************************************************/
  4988.                     }
  4989.  
  4990.  Related Information 
  4991.  
  4992.               floor 
  4993.               fmod 
  4994.  
  4995.  
  4996. ΓòÉΓòÉΓòÉ 3.22. _cgets - Read String of Characters from Keyboard ΓòÉΓòÉΓòÉ
  4997.  
  4998. _cgets - Read String of Characters from Keyboard 
  4999.  
  5000.  Syntax 
  5001.  
  5002.                     #include <conio.h>
  5003.                     char *_cgets(char *str);
  5004.  
  5005.  Description 
  5006.  
  5007.           _cgets reads a string of characters directly from the keyboard and 
  5008.           stores the string and its length in the location pointed to by str. 
  5009.  
  5010.           _cgets continues to read characters until it meets a carriage return 
  5011.           followed by a line feed (CR-LF) or until it reads the specified 
  5012.           number of characters. It stores the string starting at str[2]. If 
  5013.           _cgets reads a CR-LF combination, it replaces this combination with a 
  5014.           null character ('\0') before storing the string. _cgets then stores 
  5015.           the actual length of the string in the second array element, str[1]. 
  5016.  
  5017.           The str variable must be a pointer to a character array. The first 
  5018.           element of the array, str[0], must contain the maximum length, in 
  5019.           characters, of the string to be read.  The array must have enough 
  5020.           elements to hold the string, a final null character, and 2 additional 
  5021.           bytes. 
  5022.  
  5023.  Returns 
  5024.  
  5025.           If successful, _cgets returns a pointer to the actual start of the 
  5026.           string, str[2]. Otherwise, _cgets returns NULL. 
  5027.  
  5028.  Example Code 
  5029.  
  5030.           This example creates a buffer and initializes the first byte to the 
  5031.           size of the buffer. The program then accepts an input string using 
  5032.           _cgets and displays the size and text of that string. 
  5033.  
  5034.                     #include <conio.h>
  5035.                     #include <stdio.h>
  5036.  
  5037.                     void nothing(void)
  5038.                     {
  5039.                     }
  5040.  
  5041.                     int main(void)
  5042.                     {
  5043.                        char buffer[82] =  { 84,0 };
  5044.                        char *buffer2;
  5045.                        int i;
  5046.  
  5047.                        _cputs("\nPress any key to continue.");
  5048.                        printf("\n");
  5049.                        while (0 == _kbhit()) {
  5050.                           nothing();
  5051.                        }
  5052.                        _getch();
  5053.                        _cputs("\nEnter a line of text:");
  5054.                        printf("\n");
  5055.                        buffer2 = _cgets(buffer);
  5056.                        printf("\nText entered was: %s", buffer2);
  5057.                        return 0;
  5058.  
  5059.                        /****************************************************************************
  5060.                           The output should be similar to:
  5061.  
  5062.                           Press any key to continue.
  5063.  
  5064.                           Enter a line of text:
  5065.                           This is a simple test.
  5066.                           Text entered was: This is a simple test.
  5067.  
  5068.                        ****************************************************************************/
  5069.                     }
  5070.  
  5071.  Related Information 
  5072.  
  5073.               _cputs 
  5074.               fgets 
  5075.               gets 
  5076.               _getch - _getche 
  5077.  
  5078.  
  5079. ΓòÉΓòÉΓòÉ 3.23. chdir - Change Current Working Directory ΓòÉΓòÉΓòÉ
  5080.  
  5081. chdir - Change Current Working Directory 
  5082.  
  5083.  Syntax 
  5084.  
  5085.                     #include <direct.h>
  5086.                     int chdir(char *pathname);
  5087.  
  5088.  Description 
  5089.  
  5090.           chdir causes the current working directory to change to the directory 
  5091.           specified by pathname. The pathname must refer to an existing 
  5092.           directory. 
  5093.  
  5094.           Note:  This function can change the current working directory on any 
  5095.                  drive.  It cannot change the default drive.  For example, if 
  5096.                  A:\BIN is the current working directory and A: is the default 
  5097.                  drive, the following changes only the current working 
  5098.                  directory on drive C:. 
  5099.  
  5100.                        chdir ("c:\\emp");
  5101.  
  5102.           A: is still the default drive. 
  5103.  
  5104.           An alternative to this function is the DosSetCurrentDir call. 
  5105.  
  5106.  Returns 
  5107.  
  5108.           chdir returns a value of 0 if the working directory was successfully 
  5109.           changed. A return value of -1 indicates an error; chdir sets errno to 
  5110.           ENOENT, showing that chdir cannot find the specified path name.  No 
  5111.           error occurs if pathname specifies the current working directory. 
  5112.  
  5113.  Example Code 
  5114.  
  5115.           This example changes the current working directory to the root 
  5116.           directory, and then to the \red\green\blue directory. 
  5117.  
  5118.                     #include <direct.h>
  5119.                     #include <stdio.h>
  5120.  
  5121.                     int main(void)
  5122.                     {
  5123.                        printf("Changing to the root directory.\n");
  5124.                        if (chdir("\\"))
  5125.                           perror(NULL);
  5126.                        else
  5127.                           printf("Changed to the root directory.\n\n");
  5128.                        printf("Changing to directory '\\red\\green\\blue'.\n");
  5129.                        if (chdir("\\red\\green\\blue"))
  5130.                           perror(NULL);
  5131.                        else
  5132.                           printf("Changed to directory '\\red\\green\\blue'.\n");
  5133.                        return 0;
  5134.  
  5135.                        /****************************************************************************
  5136.                           If directory \red\green\blue exists, the output should be:
  5137.  
  5138.                           Changing to the root directory.
  5139.                           Changed to the root directory.
  5140.  
  5141.                           Changing to directory '\red\green\blue'.
  5142.                           Changed to directory '\red\green\blue'.
  5143.                        ****************************************************************************/
  5144.                     }
  5145.  
  5146.  Related Information 
  5147.  
  5148.               _chdrive 
  5149.               _getcwd 
  5150.               _getdcwd 
  5151.               _getdrive 
  5152.               system 
  5153.               mkdir 
  5154.               rmdir 
  5155.               system 
  5156.  
  5157.  
  5158. ΓòÉΓòÉΓòÉ 3.24. _chdrive - Change Current Working Drive ΓòÉΓòÉΓòÉ
  5159.  
  5160. _chdrive - Change Current Working Drive 
  5161.  
  5162.  Syntax 
  5163.  
  5164.                     #include <direct.h>
  5165.                     int _chdrive(int drive);
  5166.  
  5167.  Description 
  5168.  
  5169.           _chdrive changes the current working drive to the drive specified. 
  5170.           The drive variable is an integer value representing the number of the 
  5171.           new working drive (A: is 1, B: is 2, and so on). 
  5172.  
  5173.           To change the default drive, include <os2.h>, define INCL_DOSFILEMGR, 
  5174.           and use DosSetDefaultDisk to pass the appropriate command to the 
  5175.           operating system. You can also use DosQueryCurrentDisk to query the 
  5176.           disk. For more information, refer to the Control Program Guide and 
  5177.           Reference. 
  5178.  
  5179.  Returns 
  5180.  
  5181.           _chdrive returns 0 if it is successful in changing the working drive. 
  5182.           A return value of -1 indicates an error; _chdrive sets errno to 
  5183.           EOS2ERR. 
  5184.  
  5185.  Example Code 
  5186.  
  5187.           This example uses _chdrive to change the current working drive to C:. 
  5188.  
  5189.                     #include <direct.h>
  5190.                     #include <stdio.h>
  5191.  
  5192.                     int main(void)
  5193.                     {
  5194.                        if (_chdrive(3))
  5195.                           printf("Cannot change current working drive to 'C' drive.\n");
  5196.                        else {
  5197.                           printf("Current working drive changed to ");
  5198.                           printf("'%c' drive.\n", ('A'+_getdrive()-1));
  5199.                        }
  5200.                        return 0;
  5201.  
  5202.                        /****************************************************************************
  5203.                           The output should be similar to :
  5204.  
  5205.                           Current working drive changed to 'C' drive.
  5206.                        ****************************************************************************/
  5207.                     }
  5208.  
  5209.  Related Information 
  5210.  
  5211.               chdir 
  5212.               _getcwd 
  5213.               _getdcwd 
  5214.               _getdrive 
  5215.               mkdir 
  5216.               rmdir 
  5217.  
  5218.  
  5219. ΓòÉΓòÉΓòÉ 3.25. chmod - Change File Permission Setting ΓòÉΓòÉΓòÉ
  5220.  
  5221. chmod - Change File Permission Setting 
  5222.  
  5223.  Syntax 
  5224.  
  5225.                     #include <io.h>
  5226.                     #include <sys\stat.h>
  5227.                     int chmod(char *pathname, int pmode);
  5228.  
  5229.  Description 
  5230.  
  5231.           chmod changes the permission setting of the file specified by 
  5232.           pathname. The permission setting controls access to the file for 
  5233.           reading or writing. You can use chmod only if the file is closed. 
  5234.  
  5235.           The pmode expression contains one or both of the constants S_IWRITE 
  5236.           and S_IREAD, defined in <sys\stat.h>. The meanings of the values of 
  5237.           pmode are: 
  5238.  
  5239.           Value                 Meaning 
  5240.           S_IREAD               Reading permitted 
  5241.           S_IWRITE              Writing permitted 
  5242.           S_IREAD | S_IWRITE    Reading and writing permitted. 
  5243.  
  5244.           If you do not give permission to write to the file, chmod makes the 
  5245.           file read-only. With the OS/2 operating system, all files are 
  5246.           readable; you cannot give write-only permission. Thus, the modes 
  5247.           S_IWRITE and S_IREAD | S_IWRITE set the same permission. 
  5248.  
  5249.           Specifying a pmode of S_IREAD is similar to making a file read-only 
  5250.           with the ATTRIB system command. 
  5251.  
  5252.  Returns 
  5253.  
  5254.           chmod returns the value 0 if it successfully changes the permission 
  5255.           setting.  A return value of -1 shows an error; chmod sets errno to 
  5256.           one of the following values: 
  5257.  
  5258.           Value      Meaning 
  5259.  
  5260.           ENOENT     The system cannot find the file or the path that you 
  5261.                      specified, or the file name was incorrect. 
  5262.  
  5263.           EOS2ERR    The call to the operating system was not successful. 
  5264.  
  5265.           EINVAL     The mode specified was not valid. 
  5266.  
  5267.  Example Code 
  5268.  
  5269.           This example opens the file chmod.dat for writing after checking the 
  5270.           file to see if writing is permissible. It then writes from the buffer 
  5271.           to the opened file. This program takes file names passed as arguments 
  5272.           and sets each to read-only. 
  5273.  
  5274.                     #include <sys\stat.h>
  5275.                     #include <io.h>
  5276.                     #include <stdio.h>
  5277.                     #include <stdlib.h>
  5278.  
  5279.                     int main(void)
  5280.                     {
  5281.                        if (-1 == access("chmod.dat", 00))        /* Check if file exists.         */
  5282.                           {
  5283.                           printf("\nCreating chmod.dat.\n");
  5284.                           system("echo Sample Program > chmod.dat");
  5285.                           printf("chmod chmod.dat to be readonly.\n");
  5286.                           if (-1 == chmod("chmod.dat", S_IREAD))
  5287.                              perror("Chmod failed");
  5288.                           if (-1 == access("chmod.dat", 02))
  5289.                              printf("File chmod.dat is now readonly.\n\n");
  5290.                           printf("Run this program again to erase chmod.dat.\n\n");
  5291.                        }
  5292.                        else {
  5293.                           printf("\nFile chmod.dat exist.\n");
  5294.                           printf("chmod chmod.dat to become writable.\n");
  5295.                           if (-1 == chmod("chmod.dat", S_IWRITE))
  5296.                              perror("Chmod failed");
  5297.                           system("erase  chmod.dat");
  5298.                           printf("File chmod.dat removed.\n\n");
  5299.                        }
  5300.                        return 0;
  5301.  
  5302.                        /****************************************************************************
  5303.                           If chmod.dat does not exist, the output should be :
  5304.  
  5305.                            Creating chmod.dat.
  5306.                            chmod chmod.dat to be readonly.
  5307.                            File chmod.dat is now readonly.
  5308.  
  5309.                            Run this program again to erase chmod.dat.
  5310.                        ****************************************************************************/
  5311.                     }
  5312.  
  5313.  Related Information 
  5314.  
  5315.               access 
  5316.               _sopen 
  5317.               umask 
  5318.  
  5319.  
  5320. ΓòÉΓòÉΓòÉ 3.26. _chsize - Alter Length of File ΓòÉΓòÉΓòÉ
  5321.  
  5322. _chsize - Alter Length of File 
  5323.  
  5324.  Syntax 
  5325.  
  5326.                     #include <io.h>
  5327.                     int _chsize(int handle, long size);
  5328.  
  5329.  Description 
  5330.  
  5331.           _chsize lengthens or cuts off the file associated with handle to the 
  5332.           length specified by size. You must open the file in a mode that 
  5333.           permits writing. _chsize adds null characters (\0) when it lengthens 
  5334.           the file. When _chsize cuts off the file, it erases all data from the 
  5335.           end of the shortened file to the end of the original file. 
  5336.  
  5337.  Returns 
  5338.  
  5339.           _chsize returns the value 0 if it successfully changes the file size. 
  5340.           A return value of -1 shows an error; _chsize sets errno to one of the 
  5341.           following values: 
  5342.  
  5343.           Value      Meaning 
  5344.  
  5345.           EACCESS    The specified file is locked against access. 
  5346.  
  5347.           EBADF      The file handle is not valid, or the file is not open for 
  5348.                      writing. 
  5349.  
  5350.           ENOSPC     There is no space left on the device. 
  5351.  
  5352.           EOS2ERR    The call to the operating system was not successful. 
  5353.  
  5354.  Example Code 
  5355.  
  5356.           This example opens a file named sample.dat and returns the current 
  5357.           length of that file. It then alters the size of sample.dat and 
  5358.           returns the new length of that file. 
  5359.  
  5360.                     #include <io.h>
  5361.                     #include <stdio.h>
  5362.                     #include <stdlib.h>
  5363.                     #include <fcntl.h>
  5364.  
  5365.                     int main(void)
  5366.                     {
  5367.                        long length;
  5368.                        int fh;
  5369.  
  5370.                        printf("\nCreating sample.dat.\n");
  5371.                        system("echo Sample Program > sample.dat");
  5372.                        if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
  5373.                           printf("Unable to open sample.dat.\n");
  5374.                           return EXIT_FAILURE;
  5375.                        }
  5376.                        if (-1 == (length = filelength(fh))) {
  5377.                           printf("Unable to determine length of sample.dat.\n");
  5378.                           return EXIT_FAILURE;
  5379.                        }
  5380.                        printf("Current length of sample.dat is %d.\n", length);
  5381.                        printf("Changing the length of sample.dat to 20.\n");
  5382.                        if (-1 == (_chsize(fh, 20))) {
  5383.                           perror("chsize failed");
  5384.                           return EXIT_FAILURE;
  5385.                        }
  5386.                        if (-1 == (length = _filelength(fh))) {
  5387.                           printf("Unable to determine length of sample.dat.\n");
  5388.                           return EXIT_FAILURE;
  5389.                        }
  5390.                        printf("New length of sample.dat is %d.\n", length);
  5391.                        close(fh);
  5392.                        return 0;
  5393.  
  5394.                        /****************************************************************************
  5395.                           The output should be similar to :
  5396.  
  5397.                            Creating sample.dat.
  5398.                            Current length of sample.dat is 17.
  5399.                            Changing the length of sample.dat to 20.
  5400.                            New length of sample.dat is 20.
  5401.                        ****************************************************************************/
  5402.                     }
  5403.  
  5404.  Related Information 
  5405.  
  5406.               _filelength 
  5407.               lseek 
  5408.  
  5409.  
  5410. ΓòÉΓòÉΓòÉ 3.27. clearerr - Reset Error Indicators ΓòÉΓòÉΓòÉ
  5411.  
  5412. clearerr - Reset Error Indicators 
  5413.  
  5414.  Syntax 
  5415.  
  5416.                     #include <stdio.h>
  5417.                     void clearerr (FILE *stream);
  5418.  
  5419.  Description 
  5420.  
  5421.           The clearerr function resets the error indicator and end-of-file 
  5422.           indicator for the specified stream. Once set, the indicators for a 
  5423.           specified stream remain set until your program calls clearerr or 
  5424.           rewind. fseek also clears the end-of-file indicator. 
  5425.  
  5426.  Returns 
  5427.  
  5428.           There is no return value. 
  5429.  
  5430.  Example Code 
  5431.  
  5432.           This example reads a data stream and then checks that a read error 
  5433.           has not occurred. 
  5434.  
  5435.                     #include <stdio.h>
  5436.                     #include <stdlib.h>
  5437.  
  5438.                     FILE *stream;
  5439.                     int c;
  5440.  
  5441.                     int main(void)
  5442.                     {
  5443.                        if (NULL != (stream = fopen("file.dat", "r"))) {
  5444.                           if (EOF == (c = getc(stream))) {
  5445.                              if (feof(stream)) {
  5446.                                 perror("Read error");
  5447.                                 clearerr(stream);
  5448.                              }
  5449.                           }
  5450.                        }
  5451.                        return 0;
  5452.  
  5453.                        /****************************************************************************
  5454.                           If file.dat is an empty file, the output should be:
  5455.  
  5456.                           Read error: Attempted to read past end-of-file.
  5457.  
  5458.                        ****************************************************************************/
  5459.                     }
  5460.  
  5461.  Related Information 
  5462.  
  5463.               feof 
  5464.               ferror 
  5465.               perror 
  5466.               rewind 
  5467.               strerror 
  5468.               _strerror 
  5469.  
  5470.  
  5471. ΓòÉΓòÉΓòÉ 3.28. clock  - Determine Processor Time ΓòÉΓòÉΓòÉ
  5472.  
  5473. clock  - Determine Processor Time 
  5474.  
  5475.  Syntax 
  5476.  
  5477.                     #include <time.h>
  5478.                     clock_t clock(void);
  5479.  
  5480.  Description 
  5481.  
  5482.           clock returns an approximation of the processor time used by the 
  5483.           program since the beginning of an implementation-defined time-period 
  5484.           that is related to the program invocation. To obtain the time in 
  5485.           seconds, divide the value returned by clock by the value of the macro 
  5486.           CLOCKS_PER_SEC. 
  5487.  
  5488.  Returns 
  5489.  
  5490.           If the value of the processor time is not available or cannot be 
  5491.           represented, clock returns the value (clock_t)-1. 
  5492.  
  5493.           To measure the time spent in a program, call clock at the start of 
  5494.           the program, and subtract its return value from the value returned by 
  5495.           subsequent calls to clock. 
  5496.  
  5497.  Example Code 
  5498.  
  5499.           This example prints the time elapsed since the program was invoked. 
  5500.  
  5501.                     #include <time.h>
  5502.                     #include <stdio.h>
  5503.  
  5504.                     double time1,time2,timedif;               /* use doubles to show small values */
  5505.                     int i;
  5506.  
  5507.                     int main(void)
  5508.                     {
  5509.                        time1 = (double)clock();               /* get initial time in seconds      */
  5510.                        time1 = time1/CLOCKS_PER_SEC;
  5511.  
  5512.                        /* use some CPU time                                                       */
  5513.  
  5514.                        for (i = 0; i < 5000000; i++) {
  5515.                           int j;
  5516.  
  5517.                           j = i;
  5518.                        }
  5519.                        time2 = (double)clock();                /* call clock a second time        */
  5520.                        time2 = time2/CLOCKS_PER_SEC;
  5521.                        timedif = time2-time1;
  5522.                        printf("The elapsed time is %f seconds\n", timedif);
  5523.                        return 0;
  5524.  
  5525.                        /****************************************************************************
  5526.                           The output should be similar to:
  5527.  
  5528.                           The elapsed time is 0.969000 seconds
  5529.                        ****************************************************************************/
  5530.                     }
  5531.  
  5532.  Related Information 
  5533.  
  5534.               difftime 
  5535.               time 
  5536.  
  5537.  
  5538. ΓòÉΓòÉΓòÉ 3.29. close - Close File Associated with Handle ΓòÉΓòÉΓòÉ
  5539.  
  5540. close - Close File Associated with Handle 
  5541.  
  5542.  Syntax 
  5543.  
  5544.                     #include <io.h>
  5545.                     int close(int handle);
  5546.  
  5547.  Description 
  5548.  
  5549.           close closes the file associated with the handle. Use close if you 
  5550.           opened the handle with open. If you opened the handle with fopen, use 
  5551.           fclose to close it. 
  5552.  
  5553.  Returns 
  5554.  
  5555.           close returns 0 if it successfully closes the file. A return value of 
  5556.           -1 shows an error, and close sets errno to EBADF, showing an 
  5557.           incorrect file handle argument. 
  5558.  
  5559.  Example Code 
  5560.  
  5561.           This example opens the file edclose.dat and then closes it using the 
  5562.           close function. 
  5563.  
  5564.                     #include <io.h>
  5565.                     #include <stdio.h>
  5566.                     #include <fcntl.h>
  5567.                     #include <sys\stat.h>
  5568.                     #include <stdlib.h>
  5569.  
  5570.                     int main(void)
  5571.                     {
  5572.                        int fh;
  5573.  
  5574.                        printf("\nCreating edclose.dat.\n");
  5575.                        if (-1 == (fh = open("edclose.dat", O_RDWR|O_CREAT|O_TRUNC, S_IREAD|S_IWRITE)
  5576.                           )) {
  5577.                           perror("Unable to open edclose.dat");
  5578.                           return EXIT_FAILURE;
  5579.                        }
  5580.                        printf("File was successfully opened.\n");
  5581.                        if (-1 == close(fh)) {
  5582.                           perror("Unable to close edclose.dat");
  5583.                           return EXIT_FAILURE;
  5584.                        }
  5585.                        printf("File was successfully closed.\n");
  5586.                        return 0;
  5587.  
  5588.                        /****************************************************************************
  5589.                           The output should be:
  5590.  
  5591.                           Creating edclose.dat.
  5592.                           File was successfully opened.
  5593.                           File was successfully closed.
  5594.                        ****************************************************************************/
  5595.                     }
  5596.  
  5597.  Related Information 
  5598.  
  5599.               fclose 
  5600.               creat 
  5601.               open 
  5602.               _sopen 
  5603.  
  5604.  
  5605. ΓòÉΓòÉΓòÉ 3.30. cos - Calculate Cosine ΓòÉΓòÉΓòÉ
  5606.  
  5607. cos - Calculate Cosine 
  5608.  
  5609.  Syntax 
  5610.  
  5611.                     #include <math.h>
  5612.                     double cos(double x);
  5613.  
  5614.  Description 
  5615.  
  5616.           cos calculates the cosine of x. The value x is expressed in radians. 
  5617.           If x is too large, a partial loss of significance in the result may 
  5618.           occur. 
  5619.  
  5620.  Returns 
  5621.  
  5622.           cos returns the cosine of x. 
  5623.  
  5624.  Example Code 
  5625.  
  5626.           This example calculates y to be the cosine of x. 
  5627.  
  5628.                     #include <math.h>
  5629.  
  5630.                     int main(void)
  5631.                     {
  5632.                        double x,y;
  5633.  
  5634.                        x = 7.2;
  5635.                        y = cos(x);
  5636.                        printf("cos( %lf ) = %lf\n", x, y);
  5637.                        return 0;
  5638.  
  5639.                        /****************************************************************************
  5640.                           The output should be:
  5641.  
  5642.                           cos( 7.200000 ) = 0.608351
  5643.                        ****************************************************************************/
  5644.                     }
  5645.  
  5646.  Related Information 
  5647.  
  5648.               acos 
  5649.               cosh 
  5650.               sin 
  5651.               sinh 
  5652.               tan 
  5653.               tanh 
  5654.  
  5655.  
  5656. ΓòÉΓòÉΓòÉ 3.31. cosh - Calculate Hyperbolic Cosine ΓòÉΓòÉΓòÉ
  5657.  
  5658. cosh - Calculate Hyperbolic Cosine 
  5659.  
  5660.  Syntax 
  5661.  
  5662.                     #include <math.h>
  5663.                     double cosh(double x);
  5664.  
  5665.  Description 
  5666.  
  5667.           cosh calculates the hyperbolic cosine of x. The value x is expressed 
  5668.           in radians. 
  5669.  
  5670.  Returns 
  5671.  
  5672.           cosh returns the hyperbolic cosine of x. If the result is too large, 
  5673.           cosh returns the value HUGE_VAL and sets errno to ERANGE. 
  5674.  
  5675.  Example Code 
  5676.  
  5677.           This example calculates y to be the hyperbolic cosine of x. 
  5678.  
  5679.                     #include <math.h>
  5680.  
  5681.                     int main(void)
  5682.                     {
  5683.                        double x,y;
  5684.  
  5685.                        x = 7.2;
  5686.                        y = cosh(x);
  5687.                        printf("cosh( %lf ) = %lf\n", x, y);
  5688.                        return 0;
  5689.  
  5690.                        /****************************************************************************
  5691.                          The output should be:
  5692.  
  5693.                          cosh( 7.200000 ) = 669.715755
  5694.                        ****************************************************************************/
  5695.                     }
  5696.  
  5697.  Related Information 
  5698.  
  5699.               acos 
  5700.               cos 
  5701.               sin 
  5702.               sinh 
  5703.               tan 
  5704.               tanh 
  5705.  
  5706.  
  5707. ΓòÉΓòÉΓòÉ 3.32. _cprintf - Print Characters to Screen ΓòÉΓòÉΓòÉ
  5708.  
  5709. _cprintf - Print Characters to Screen 
  5710.  
  5711.  Syntax 
  5712.  
  5713.                     #include <conio.h>
  5714.                     int _cprintf(char *format-string, argument-list);
  5715.  
  5716.  Description 
  5717.  
  5718.           _cprintf formats and sends a series of characters and values directly 
  5719.           to the screen, using the _putch function to send each character. 
  5720.  
  5721.           The format-string has the same form and function as the format-string 
  5722.           parameter for printf. Format specifications in the format-string 
  5723.           determine the output format for any argument-list that follows. See 
  5724.           printf for a description of the format-string. 
  5725.  
  5726.           Note:  Unlike the fprintf and printf functions, _cprintf does not 
  5727.                  translate line feed characters into output of a carriage 
  5728.                  return followed by a line feed. 
  5729.  
  5730.  Returns 
  5731.  
  5732.           _cprintf returns the number of characters printed. 
  5733.  
  5734.  Example Code 
  5735.  
  5736.           The following program uses _cprintf to write strings to the screen. 
  5737.  
  5738.                     #include <conio.h>
  5739.  
  5740.                     int main(void)
  5741.                     {
  5742.                        char buffer[24];
  5743.  
  5744.                        _cprintf("\nPlease enter a filename:\n");
  5745.                        _cscanf("%23s", buffer);
  5746.                        _cprintf("\nThe file name you entered was %23s.", buffer);
  5747.                        return 0;
  5748.  
  5749.                        /****************************************************************************
  5750.                           The output should be similar to :
  5751.  
  5752.                            Please enter a filename:
  5753.                                                   file.dat
  5754.                            The filename you entered was                file.dat.
  5755.                        ****************************************************************************/
  5756.                     }
  5757.  
  5758.  Related Information 
  5759.  
  5760.               _cscanf 
  5761.               fprintf 
  5762.               printf 
  5763.               _putch 
  5764.               sprintf 
  5765.  
  5766.  
  5767. ΓòÉΓòÉΓòÉ 3.33. _cputs - Write String to Screen ΓòÉΓòÉΓòÉ
  5768.  
  5769. _cputs - Write String to Screen 
  5770.  
  5771.  Syntax 
  5772.  
  5773.                     #include <conio.h>
  5774.                     int _cputs(char *str);
  5775.  
  5776.  Description 
  5777.  
  5778.           _cputs writes the string that str points to directly to the screen. 
  5779.           The string str must end with a null character (\0). The _cputs 
  5780.           function does not automatically add a carriage return followed by a 
  5781.           line feed to the string. 
  5782.  
  5783.  Returns 
  5784.  
  5785.           If successful, _cputs returns 0. Otherwise, it returns a nonzero 
  5786.           value. 
  5787.  
  5788.  Example Code 
  5789.  
  5790.           This example outputs a prompt to the screen. 
  5791.  
  5792.                     #include <conio.h>
  5793.  
  5794.                     int main(void)
  5795.                     {
  5796.                        char *buffer = "Insert data disk in drive a: \r\n";
  5797.  
  5798.                        _cputs(buffer);
  5799.                        return 0;
  5800.  
  5801.                        /****************************************************************************
  5802.                           The output should be:
  5803.  
  5804.                           Insert data disk in drive a:
  5805.                        ****************************************************************************/
  5806.                     }
  5807.  
  5808.  Related Information 
  5809.  
  5810.               _cgets 
  5811.               fputs 
  5812.               _putch 
  5813.               puts 
  5814.  
  5815.  
  5816. ΓòÉΓòÉΓòÉ 3.34. creat - Create New File ΓòÉΓòÉΓòÉ
  5817.  
  5818. creat - Create New File 
  5819.  
  5820.  Syntax 
  5821.  
  5822.                     #include <io.h>
  5823.                     #include <sys\stat.h>
  5824.                     int creat(char *pathname, int pmode);
  5825.  
  5826.  Description 
  5827.  
  5828.           creat either creates a new file or opens and truncates an existing 
  5829.           file. If the file specified by pathname does not exist, creat creates 
  5830.           a new file with the given permission setting and opens it for writing 
  5831.           in text mode. If the file already exists, and the read-only attribute 
  5832.           and sharing permissions allow writing, creat truncates the file to 
  5833.           length 0. This action destroys the previous contents of the file and 
  5834.           opens it for writing in text mode. creat always opens a file in text 
  5835.           mode for reading and writing. 
  5836.  
  5837.           The permission setting pmode applies to newly created files only. The 
  5838.           new file receives the specified permission setting after you close it 
  5839.           for the first time. The pmode integer expression contains one or both 
  5840.           of the constants S_IWRITE and S_IREAD, defined in <sys\stat.h>. The 
  5841.           values of the pmode argument and their meanings are:  compact 
  5842.           break=fit. 
  5843.  
  5844.           Value                Meaning 
  5845.  
  5846.           S_IREAD              Reading permitted 
  5847.  
  5848.           S_IWRITE             Writing permitted 
  5849.  
  5850.           S_IREAD | S_IWRITE   Reading and writing permitted. 
  5851.  
  5852.           If you do not give permission to write to the file, it is a read-only 
  5853.           file. On the OS/2 operating system, you cannot give write-only 
  5854.           permission. Thus, the modes S_IWRITE and S_IREAD | S_IWRITE have the 
  5855.           same results. The creat function applies the current file permission 
  5856.           mask to pmode before setting the permissions. (See umask for more 
  5857.           information about file permission masks.) 
  5858.  
  5859.           When writing new code, you should use open rather than creat. 
  5860.  
  5861.           Specifying a pmode of S_IREAD is similar to making a file read-only 
  5862.           with the ATTRIB system command. 
  5863.  
  5864.  Returns 
  5865.  
  5866.           creat returns a handle for the created file if the call is 
  5867.           successful. A return value of -1 shows an error, and creat sets errno 
  5868.           to one of the following values: 
  5869.  
  5870.           Value      Meaning 
  5871.  
  5872.           EACCESS    File sharing violated. 
  5873.  
  5874.           EINVAL     The mode specified was not valid. 
  5875.  
  5876.           EMFILE     No more file handles are available. 
  5877.  
  5878.           ENOENT     The path name was not found, or the file name was 
  5879.                      incorrect. 
  5880.  
  5881.           EOS2ERR    The call to the operating system was not successful. 
  5882.  
  5883.  Example Code 
  5884.  
  5885.           This example creates the file sample.dat so it can be read from and 
  5886.           written to. 
  5887.  
  5888.                     #include <sys\stat.h>
  5889.                     #include <io.h>
  5890.                     #include <stdio.h>
  5891.                     #include <stdlib.h>
  5892.  
  5893.                     int main(void)
  5894.                     {
  5895.                        int fh;
  5896.  
  5897.                        fh = creat("sample.dat", S_IREAD|S_IWRITE);
  5898.                        if (-1 == fh) {
  5899.                           perror("Error in creating sample.dat");
  5900.                           return EXIT_FAILURE;
  5901.                        }
  5902.                        else
  5903.                           printf("Successfully created sample.dat.\n");
  5904.                        close(fh);
  5905.                        return 0;
  5906.  
  5907.                        /****************************************************************************
  5908.                           The output should:
  5909.  
  5910.                            Successfully created sample.dat.
  5911.                        ****************************************************************************/
  5912.                     }
  5913.  
  5914.  Related Information 
  5915.  
  5916.               chmod 
  5917.               close 
  5918.               open 
  5919.               fdopen 
  5920.               _sopen 
  5921.               umask 
  5922.  
  5923.  
  5924. ΓòÉΓòÉΓòÉ 3.35. _CRT_init - Initialize DLL Run-Time Environment ΓòÉΓòÉΓòÉ
  5925.  
  5926. _CRT_init - Initialize DLL Run-Time Environment 
  5927.  
  5928.  Syntax 
  5929.  
  5930.                     int _CRT_init(void);
  5931.                     /* no header file - defined in the run time startup code */
  5932.  
  5933.  Description 
  5934.  
  5935.           _CRT_init initializes The Developer's Toolkit run-time environment 
  5936.           for a DLL. 
  5937.  
  5938.           By default, all DLLs call The Developer's Toolkit _DLL_InitTerm 
  5939.           function, which in turn calls _CRT_init for you. However, if you are 
  5940.           writing your own _DLL_InitTerm function (for example, to perform 
  5941.           actions other than run time initialization and termination), you must 
  5942.           call _CRT_init from your version of _DLL_InitTerm before you can call 
  5943.           any other run-time functions. 
  5944.  
  5945.           If your DLL contains C++ code, you must also call __ctordtorInit 
  5946.           after _CRT_init to ensure that static constructors and destructors 
  5947.           are initialized properly.  __ctordtorInit is defined in the run-time 
  5948.           startup code as: 
  5949.  
  5950.                        void __ctordtorInit(void);
  5951.  
  5952.           Note:  If you are providing your own version of the _matherr function 
  5953.                  to be used in your DLL, you must also call the 
  5954.                  _exception_dllinit function after the run-time environment is 
  5955.                  initialized. Calling this function ensures that the proper 
  5956.                  _matherr function will be called during exception handling. 
  5957.                  _exception_dllinit is defined in the run-time startup code as: 
  5958.  
  5959.                                      void _exception_dllinit( int (*)(struct exception *) );
  5960.  
  5961.           The parameter required is the address of your _matherr function. 
  5962.  
  5963.  Returns 
  5964.  
  5965.           If the run-time environment is successfully initialized, _CRT_init 
  5966.           returns 0. A return code of -1 indicates an error. If an error 
  5967.           occurs, an error message is written to file handle 2, which is the 
  5968.           usual destination of stderr. 
  5969.  
  5970.  Example Code 
  5971.  
  5972.           The following example shows the _DLL_InitTerm function from The 
  5973.           Developer's Toolkit sample program for building DLLs, which calls 
  5974.           _CRT_init to initialize the library environment. 
  5975.  
  5976.                     #define  INCL_DOSMODULEMGR
  5977.                     #define  INCL_DOSPROCESS
  5978.                     #include <os2.h>
  5979.                     #include <stdlib.h>
  5980.                     #include <stdio.h>
  5981.                     #include <string.h>
  5982.  
  5983.                     /* _CRT_init is the C run-time environment initialization function.         */
  5984.                     /* It will return 0 to indicate success and -1 to indicate failure.         */
  5985.  
  5986.                     int _CRT_init(void);
  5987.                     #ifdef   STATIC_LINK
  5988.  
  5989.                     /* _CRT_term is the C run-time environment termination function.            */
  5990.                     /* It only needs to be called when the C run-time functions are statically  */
  5991.                     /* linked.                                                                  */
  5992.  
  5993.                     void _CRT_term(void);
  5994.                     #else
  5995.  
  5996.                     /* A clean up routine registered with DosExitList must be used if run-time  */
  5997.                     /* calls are required and the run time is dynamically linked.  This will    */
  5998.                     /* guarantee that this clean up routine is run before the library DLL is    */
  5999.                     /* terminated.                                                              */
  6000.  
  6001.                     static void cleanup(ULONG ulReason);
  6002.                     #endif
  6003.                     size_t nSize;
  6004.                     int *pArray;
  6005.  
  6006.                     /* _DLL_InitTerm is the function that gets called by the operating system   */
  6007.                     /* loader when it loads and frees this DLL for each process that accesses   */
  6008.                     /* this DLL.  However, it only gets called the first time the DLL is loaded */
  6009.                     /* and the last time it is freed for a particular process.  The system      */
  6010.                     /* linkage convention MUST be used because the operating system loader is   */
  6011.                     /* calling this function.                                                   */
  6012.  
  6013.                     unsigned long _DLL_InitTerm(unsigned long hModule, unsigned long
  6014.                                                         ulFlag)
  6015.                     {
  6016.                        size_t i;
  6017.                        APIRET rc;
  6018.                        char namebuf[CCHMAXPATH];
  6019.  
  6020.                        /* If ulFlag is zero then the DLL is being loaded so initialization should*/
  6021.                        /* be performed.  If ulFlag is 1 then the DLL is being freed so          */
  6022.                        /* termination should be performed.                                      */
  6023.  
  6024.                        switch (ulFlag) {
  6025.                           case 0 :
  6026.  
  6027.                              /*******************************************************************/
  6028.                              /* The C run-time environment initialization function must be      */
  6029.                              /* called before any calls to C run-time functions that are not    */
  6030.                              /* inlined.                                                        */
  6031.                              /*******************************************************************/
  6032.  
  6033.                              if (_CRT_init() == -1)
  6034.                                 return 0UL;
  6035.  
  6036.                     #ifndef  STATIC_LINK
  6037.  
  6038.                            /********************************************************************/
  6039.                            /* A DosExitList routine must be used to clean up if run-time calls */
  6040.                            /* are required and the run time is dynamically linked.             */
  6041.                            /********************************************************************/
  6042.  
  6043.                                 if (rc = DosExitList(0x0000FF00|EXLST_ADD, cleanup))
  6044.                                 printf("DosExitList returned %lu\n", rc);
  6045.                     #endif
  6046.                              if (rc = DosQueryModuleName(hModule, CCHMAXPATH, namebuf))
  6047.                                 printf("DosQueryModuleName returned %lu\n", rc);
  6048.                              else
  6049.                                 printf("The name of this DLL is %s\n", namebuf);
  6050.                              srand(17);
  6051.                              nSize = (rand()%128)+32;
  6052.                              printf("The array size for this process is %u\n", nSize);
  6053.                              if ((pArray = malloc(nSize *sizeof(int))) == NULL) {
  6054.                                 printf("Could not allocate space for unsorted array.\n");
  6055.                                 return 0UL;
  6056.                              }
  6057.                              for (i = 0; i < nSize; ++i)
  6058.                                 pArray[i] = rand();
  6059.                              break;
  6060.                           case 1 :
  6061.                     #ifdef   STATIC_LINK
  6062.                              printf("The array will now be freed.\n");
  6063.                              free(pArray);
  6064.                              _CRT_term();
  6065.                     #endif
  6066.                              break;
  6067.                           default  :
  6068.                              printf("ulFlag = %lu\n", ulFlag);
  6069.                              return 0UL;
  6070.                        }
  6071.  
  6072.                        /* A non-zero value must be returned to indicate success.                */
  6073.  
  6074.                        return 1UL;
  6075.                     }
  6076.                     #ifndef  STATIC_LINK
  6077.                     static void cleanup(ULONG ulReason)
  6078.                     {
  6079.                        if (!ulReason) {
  6080.                           printf("The array will now be freed.\n");
  6081.                           free(pArray);
  6082.                        }
  6083.                        DosExitList(EXLST_EXIT, cleanup);
  6084.                        return ;
  6085.                     }
  6086.                     #endif
  6087.  
  6088.  Related Information 
  6089.  
  6090.               "Building Dynamic Link Libraries" in the VisualAge C++ 
  6091.                Programming Guide 
  6092.               _CRT_term 
  6093.               _DLL_InitTerm 
  6094.               _rmem_init 
  6095.               _rmem_term 
  6096.  
  6097.  
  6098. ΓòÉΓòÉΓòÉ 3.36. _CRT_term - Terminate DLL Run-Time Environment ΓòÉΓòÉΓòÉ
  6099.  
  6100. _CRT_term - Terminate DLL Run-Time Environment 
  6101.  
  6102.  Syntax 
  6103.  
  6104.                     void _CRT_term(void);
  6105.                     /* no header file - defined in run-time startup code */
  6106.  
  6107.  Description 
  6108.  
  6109.           _CRT_term terminates The Developer's Toolkit run-time environment. It 
  6110.           is only needed for DLLs where the C run-time functions are statically 
  6111.           linked. 
  6112.  
  6113.           By default, all DLLs call The Developer's Toolkit _DLL_InitTerm 
  6114.           function, which in turn calls _CRT_term for you. However, if you are 
  6115.           writing your own _DLL_InitTerm function (for example, to perform 
  6116.           actions other than run time initialization and termination), and your 
  6117.           DLL statically links to the C run-time libraries, you need to call 
  6118.           _CRT_term from your _DLL_InitTerm function. 
  6119.  
  6120.           If your DLL contains C++ code, you must also call __ctordtorTerm 
  6121.           before you call _CRT_term to ensure that static constructors and 
  6122.           destructors are terminated correctly. __ctordtorTerm is defined in 
  6123.           the run-time startup code as: 
  6124.  
  6125.                        void __ctordtorTerm(void);
  6126.  
  6127.           Once you have called _CRT_term, you cannot call any other library 
  6128.           functions. 
  6129.  
  6130.           If your DLL is dynamically linked, you cannot call library functions 
  6131.           in the termination section of your _DLL_InitTerm function. If your 
  6132.           termination routine requires calling library functions, you must 
  6133.           register the termination routine with DosExitList. Note that all 
  6134.           DosExitList routines are called before DLL termination routines. 
  6135.  
  6136.  Returns 
  6137.  
  6138.           There is no return value for _CRT_term. 
  6139.  
  6140.  Example Code 
  6141.  
  6142.           The following example shows the _DLL_InitTerm function from The 
  6143.           Developer's Toolkit sample program for building DLLs, which calls 
  6144.           _CRT_term to terminate the library environment. 
  6145.  
  6146.                     #define  INCL_DOSMODULEMGR
  6147.                     #define  INCL_DOSPROCESS
  6148.                     #include <os2.h>
  6149.                     #include <stdlib.h>
  6150.                     #include <stdio.h>
  6151.                     #include <string.h>
  6152.  
  6153.                     /* _CRT_init is the C run-time environment initialization function.         */
  6154.                     /* It will return 0 to indicate success and -1 to indicate failure.         */
  6155.  
  6156.                     int _CRT_init(void);
  6157.                     #ifdef   STATIC_LINK
  6158.  
  6159.                     /* _CRT_term is the C run-time environment termination function.            */
  6160.                     /* It only needs to be called when the C run-time functions are statically  */
  6161.                     /* linked.                                                                  */
  6162.  
  6163.                     void _CRT_term(void);
  6164.                     #else
  6165.  
  6166.                     /* A clean up routine registered with DosExitList must be used if run-time  */
  6167.                     /* calls are required and the run time is dynamically linked.  This will    */
  6168.                     /* guarantee that this clean up routine is run before the library DLL is    */
  6169.                     /* terminated.                                                              */
  6170.  
  6171.                     static void cleanup(ULONG ulReason);
  6172.                     #endif
  6173.                     size_t nSize;
  6174.                     int *pArray;
  6175.  
  6176.                     /* _DLL_InitTerm is the function that gets called by the operating system   */
  6177.                     /* loader when it loads and frees this DLL for each process that accesses   */
  6178.                     /* this DLL.  However, it only gets called the first time the DLL is loaded */
  6179.                     /* and the last time it is freed for a particular process.  The system      */
  6180.                     /* linkage convention MUST be used because the operating system loader is   */
  6181.                     /* calling this function.                                                   */
  6182.  
  6183.                     unsigned long _DLL_InitTerm(unsigned long hModule, unsigned long
  6184.                                                         ulFlag)
  6185.                     {
  6186.                        size_t i;
  6187.                        APIRET rc;
  6188.                        char namebuf[CCHMAXPATH];
  6189.  
  6190.                        /* If ulFlag is zero then the DLL is being loaded so initialization should*/
  6191.                        /* be performed.  If ulFlag is 1 then the DLL is being freed so          */
  6192.                        /* termination should be performed.                                      */
  6193.  
  6194.                        switch (ulFlag) {
  6195.                           case 0 :
  6196.  
  6197.                              /*******************************************************************/
  6198.                              /* The C run-time environment initialization function must be      */
  6199.                              /* called before any calls to C run-time functions that are not    */
  6200.                              /* inlined.                                                        */
  6201.                              /*******************************************************************/
  6202.  
  6203.                              if (_CRT_init() == -1)
  6204.                                 return 0UL;
  6205.  
  6206.                     #ifndef  STATIC_LINK
  6207.                              /********************************************************************/
  6208.                              /* A DosExitList routine must be used to clean up if run-time calls */
  6209.                              /* are required and the run time is dynamically linked.             */
  6210.                              /********************************************************************/
  6211.  
  6212.                                 if (rc = DosExitList(0x0000FF00|EXLST_ADD, cleanup))
  6213.                                 printf("DosExitList returned %lu\n", rc);
  6214.                     #endif
  6215.                              if (rc = DosQueryModuleName(hModule, CCHMAXPATH, namebuf))
  6216.                                 printf("DosQueryModuleName returned %lu\n", rc);
  6217.                              else
  6218.                                 printf("The name of this DLL is %s\n", namebuf);
  6219.                              srand(17);
  6220.                              nSize = (rand()%128)+32;
  6221.                              printf("The array size for this process is %u\n", nSize);
  6222.                              if ((pArray = malloc(nSize *sizeof(int))) == NULL) {
  6223.                                 printf("Could not allocate space for unsorted array.\n");
  6224.                                 return 0UL;
  6225.                              }
  6226.                              for (i = 0; i < nSize; ++i)
  6227.                                 pArray[i] = rand();
  6228.                              break;
  6229.                           case 1 :
  6230.                     #ifdef   STATIC_LINK
  6231.                              printf("The array will now be freed.\n");
  6232.                              free(pArray);
  6233.                              _CRT_term();
  6234.                     #endif
  6235.                              break;
  6236.                           default  :
  6237.                              printf("ulFlag = %lu\n", ulFlag);
  6238.                              return 0UL;
  6239.                        }
  6240.  
  6241.                        /* A non-zero value must be returned to indicate success.                */
  6242.  
  6243.                        return 1UL;
  6244.                     }
  6245.                     #ifndef  STATIC_LINK
  6246.                     static void cleanup(ULONG ulReason)
  6247.                     {
  6248.                        if (!ulReason) {
  6249.                           printf("The array will now be freed.\n");
  6250.                           free(pArray);
  6251.                        }
  6252.                        DosExitList(EXLST_EXIT, cleanup);
  6253.                        return ;
  6254.                     }
  6255.                     #endif
  6256.  
  6257.  Related Information 
  6258.  
  6259.               "Building Dynamic Link Libraries" in the VisualAge C++ 
  6260.                Programming Guide 
  6261.               _CRT_init 
  6262.               _DLL_InitTerm 
  6263.               _rmem_init 
  6264.               _rmem_term 
  6265.  
  6266.  
  6267. ΓòÉΓòÉΓòÉ 3.37. _cscanf - Read Data from Keyboard ΓòÉΓòÉΓòÉ
  6268.  
  6269. _cscanf - Read Data from Keyboard 
  6270.  
  6271.  Syntax 
  6272.  
  6273.                     #include <conio.h>
  6274.                     int _cscanf(char *format-string, argument-list);
  6275.  
  6276.  Description 
  6277.  
  6278.           _cscanf reads data directly from the keyboard to the locations given 
  6279.           by argument-list, if any are specified. The _cscanf function uses the 
  6280.           _getche function to read characters. Each argument must be a pointer 
  6281.           to a variable with a type that corresponds to a type specifier in the 
  6282.           format-string. 
  6283.  
  6284.           The format-string controls the interpretation of the input fields and 
  6285.           has the same form and function as the format-string argument for the 
  6286.           scanf function. See scanf for a description of the format-string. 
  6287.  
  6288.           Note:  Although _cscanf normally echoes the input character, it does 
  6289.                  not do so if the last action was a call to _ungetch. 
  6290.  
  6291.  Returns 
  6292.  
  6293.           _cscanf returns the number of fields that were successfully converted 
  6294.           and assigned. The return value does not include fields that were read 
  6295.           but not assigned. 
  6296.  
  6297.           The return value is EOF for an attempt to read at the end of the 
  6298.           file. A return value of 0 means that no fields were assigned. 
  6299.  
  6300.  Example Code 
  6301.  
  6302.           This example uses _cscanf to read strings from the screen. 
  6303.  
  6304.                     #include <conio.h>
  6305.  
  6306.                     int main(void)
  6307.                     {
  6308.                        char buffer[24];
  6309.  
  6310.                        _cprintf("\nPlease enter a filename:\n");
  6311.                        _cscanf("%23s", buffer);
  6312.                        _cprintf("\nThe file name you entered was %23s.", buffer);
  6313.                        return 0;
  6314.  
  6315.                        /****************************************************************************
  6316.                           The output should be similar to :
  6317.  
  6318.                           Please enter a filename:
  6319.                                                   file.dat
  6320.                           The filename you entered was                file.dat.
  6321.                        ****************************************************************************/
  6322.                     }
  6323.  
  6324.  Related Information 
  6325.  
  6326.               fscanf 
  6327.               _getch - _getche 
  6328.               scanf 
  6329.               sscanf 
  6330.               _ungetch 
  6331.  
  6332.  
  6333. ΓòÉΓòÉΓòÉ 3.38. ctime - Convert Time to Character String ΓòÉΓòÉΓòÉ
  6334.  
  6335. ctime - Convert Time to Character String 
  6336.  
  6337.  Syntax 
  6338.  
  6339.                     #include <time.h>
  6340.                     char *ctime(const time_t *time);
  6341.  
  6342.  Description 
  6343.  
  6344.           ctime converts the time value pointed to by time to local time in the 
  6345.           form of a character string.  A time value is usually obtained by a 
  6346.           call to the time function. 
  6347.  
  6348.           The string result produced by ctime contains exactly 26 characters 
  6349.           and has the format: 
  6350.  
  6351.                        "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n"
  6352.           For example: 
  6353.  
  6354.                        Mon Jul 16 02:03:55 1987\n\0
  6355.  
  6356.           ctime uses a 24-hour clock format.  The days are abbreviated to: Sun, 
  6357.           Mon, Tue, Wed, Thu, Fri, and Sat. The months are abbreviated to: Jan, 
  6358.           Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, and Dec. All fields 
  6359.           have a constant width. Dates with only one digit are preceded with a 
  6360.           blank space. The new-line character (\n) and the null character (\0) 
  6361.           occupy the last two positions of the string. 
  6362.  
  6363.           The time and date functions begin at 00:00:00 Universal Time, January 
  6364.           1, 1970. 
  6365.  
  6366.  Returns 
  6367.  
  6368.           ctime returns a pointer to the character string result.  There is no 
  6369.           error return value. A call to ctime is equivalent to: 
  6370.  
  6371.                        asctime(localtime(&anytime))
  6372.  
  6373.           Note:  The asctime, ctime, and other time functions may use a common, 
  6374.                  statically allocated buffer for holding the return string. 
  6375.                  Each call to one of these functions may destroy the result of 
  6376.                  the previous call. 
  6377.  
  6378.  Example Code 
  6379.  
  6380.           This example polls the system clock using ctime. It then prints a 
  6381.           message giving the current date and time. 
  6382.  
  6383.                     #include <time.h>
  6384.                     #include <stdio.h>
  6385.  
  6386.                     int main(void)
  6387.                     {
  6388.                        time_t ltime;
  6389.  
  6390.                        time(<ime);
  6391.                        printf("The time is %s", ctime(<ime));
  6392.                        return 0;
  6393.  
  6394.                        /****************************************************************************
  6395.                           The output should be similar to :
  6396.  
  6397.                           The time is Thu Dec 15 18:10:23 1994
  6398.                        ****************************************************************************/
  6399.                     }
  6400.  
  6401.  Related Information 
  6402.  
  6403.               asctime 
  6404.               gmtime 
  6405.               localtime 
  6406.               mktime 
  6407.               strftime 
  6408.               time 
  6409.  
  6410.  
  6411. ΓòÉΓòÉΓòÉ 3.39. _cwait - Wait for Child Process ΓòÉΓòÉΓòÉ
  6412.  
  6413. _cwait - Wait for Child Process 
  6414.  
  6415.  Syntax 
  6416.  
  6417.                     #include <process.h>
  6418.                     int _cwait(int *stat_loc, int process_id, int action_code);
  6419.  
  6420.  Description 
  6421.  
  6422.           _cwait delays the completion of a parent process until the child 
  6423.           process specified by process_id ends. 
  6424.  
  6425.           The process_id is the value returned by the _spawn function that 
  6426.           started the child process. If the specified child process ends before 
  6427.           _cwait is called, _cwait returns to the calling process immediately 
  6428.           with a value of -1. If the value of process_id is 0, the parent 
  6429.           process waits until all of its child processes end. 
  6430.  
  6431.           If the variable pointed to by stat_loc is NULL, _cwait does not use 
  6432.           it. If it is not NULL, _cwait places information about the return 
  6433.           status and the return code of the child process in the location 
  6434.           pointed to by stat_loc. 
  6435.  
  6436.           If the child process ended normally with a call to the OS/2 DosExit 
  6437.           function, the lowest-order byte of the variable pointed to by 
  6438.           stat_loc is 0.  The next highest-order byte contains the lowest-order 
  6439.           byte of the argument passed to DosExit by the child process. The 
  6440.           value of this byte depends on how the child process caused the system 
  6441.           to call DosExit. If the child called exit, _exit, or return from 
  6442.           main, or used a DosExit coded into the program, the byte contains the 
  6443.           lowest-order byte of the argument the child passed to exit, _exit, or 
  6444.           return. The value of the byte is undefined if the child caused a 
  6445.           DosExit call simply by reaching the end of main. 
  6446.  
  6447.           If the child process ended abnormally (without a call to DosExit), 
  6448.           the lowest-order byte of the variable pointed to by stat_loc contains 
  6449.           the return code from the OS/2 DosWaitChild function, and the next 
  6450.           higher-order byte is 0. See the OS/2 online reference for details 
  6451.           about the DosWaitChild return codes. 
  6452.  
  6453.           The action_code specifies when the parent process is to start running 
  6454.           again.  Values for action_code include: 
  6455.  
  6456.           Action Code         Meaning 
  6457.  
  6458.           WAIT_CHILD          The parent process waits until the specified 
  6459.                               child process ends. 
  6460.  
  6461.           WAIT_GRANDCHILD     The parent process waits until the child process 
  6462.                               and all of the child processes of that process 
  6463.                               end. 
  6464.           The action code values are defined in <process.h>. 
  6465.  
  6466.           An alternative to this function is the DosWaitChild call. 
  6467.  
  6468.  Returns 
  6469.  
  6470.           At the normal end of the child process, _cwait returns the process 
  6471.           identifier of the child to the parent process. If a child process 
  6472.           ends abnormally, _cwait returns -1 to the parent process and sets 
  6473.           errno to EINTR. In the case of an error, _cwait returns immediately 
  6474.           with a value of -1 and sets errno to one of the following values: 
  6475.  
  6476.           Value   Meaning 
  6477.           EINVAL  Incorrect action code. 
  6478.           ECHILD  No child process exists, or the process identifier is 
  6479.                   incorrect. 
  6480.  
  6481.  Example Code 
  6482.  
  6483.           This example creates a new process called child.exe.  The parent 
  6484.           calls _cwait and waits for the child to end.  The parent then 
  6485.           displays the child's return information in hexadecimal. 
  6486.  
  6487.                     #include <stdio.h>
  6488.                     #include <process.h>
  6489.                     #include <errno.h>
  6490.  
  6491.                     int stat_child;
  6492.  
  6493.                     int main(void)
  6494.                     {
  6495.                        int i,result;
  6496.  
  6497.                        /* spawn a child and 'cwait' for it to finish                              */
  6498.  
  6499.                        if ((result = _spawnl(P_NOWAIT, "child", "child", "1", NULL)) != -1) {
  6500.                           if ((i = _cwait(&stat_child, result, WAIT_CHILD)) != result)
  6501.                              printf("Error ...expected pid from child");
  6502.                           else {
  6503.                              if (0 == errno) {
  6504.                                 printf("Child process ended successfully and ...\n");
  6505.                                 printf("program returned to the Parent process.\n");
  6506.                              }
  6507.                              else
  6508.                                 printf("Child process had an error\n");
  6509.                           }
  6510.                        }
  6511.                        else
  6512.                           printf("Error ...could not spawn a child process\n");
  6513.                        return 0;
  6514.  
  6515.                        /****************************************************************************
  6516.  
  6517.                           If the source code for child.exe is:
  6518.  
  6519.                           #include <stdio.h>
  6520.  
  6521.                           int main(void) {
  6522.  
  6523.                              puts("This line was written by child.exe");
  6524.                              return 0;
  6525.                           }
  6526.  
  6527.                           The output should be similar to :
  6528.  
  6529.                           This line was written by child.exe
  6530.                           Child process ended successfully and ...
  6531.                           program returned to the Parent process.
  6532.                        ****************************************************************************/
  6533.                     }
  6534.  
  6535.  Related Information 
  6536.  
  6537.               exit 
  6538.               _exit 
  6539.               _spawnl - _spawnvpe 
  6540.               wait 
  6541.               return 
  6542.  
  6543.  
  6544. ΓòÉΓòÉΓòÉ 3.40. difftime - Compute Time Difference ΓòÉΓòÉΓòÉ
  6545.  
  6546. difftime - Compute Time Difference 
  6547.  
  6548.  Syntax 
  6549.  
  6550.                     #include <time.h>
  6551.                     double difftime(time_t time2, time_t time1);
  6552.  
  6553.  Description 
  6554.  
  6555.           difftime computes the difference in seconds between time2 and time1. 
  6556.  
  6557.  Returns 
  6558.  
  6559.           The difftime function returns the elapsed time in seconds from time1 
  6560.           to time2 as a double precision number.  Type time_t is defined in 
  6561.           <time.h>. 
  6562.  
  6563.  Example Code 
  6564.  
  6565.           This example shows a timing application using difftime. The example 
  6566.           calculates how long, on average, it takes to find the prime numbers 
  6567.           from 2 to 10000. 
  6568.  
  6569.                     #include <time.h>
  6570.                     #include <stdio.h>
  6571.  
  6572.                     #define  RUNS          1000
  6573.                     #define  SIZE          10000
  6574.  
  6575.                     int mark[SIZE];
  6576.  
  6577.                     int main(void)
  6578.                     {
  6579.                        time_t start,finish;
  6580.                        int i,loop,n,num;
  6581.  
  6582.                        time(&start);
  6583.  
  6584.                        /*  This loop finds the prime numbers between 2 and SIZE                   */
  6585.  
  6586.                        for (loop = 0; loop < RUNS; ++loop) {
  6587.                           for (n = 0; n < SIZE; ++n)
  6588.                              mark[n] = 0;
  6589.  
  6590.                           /*  This loops marks all the composite numbers with -1                  */
  6591.  
  6592.                           for (num = 0, n = 2; n < SIZE; ++n)
  6593.                              if (!mark[n]) {
  6594.                                 for (i = 2*n; i < SIZE; i += n)
  6595.                                    mark[i] = -1;
  6596.                                 ++num;
  6597.                              }
  6598.                        }
  6599.                        time(&finish);
  6600.                        printf("Program takes an average of %f seconds to find %d primes.\n",
  6601.                           difftime(finish, start)/RUNS, num);
  6602.                        return 0;
  6603.  
  6604.                        /****************************************************************************
  6605.                           The output should be similar to :
  6606.  
  6607.                           Program takes an average of 0.106000 seconds to find 1229 primes.
  6608.                        ****************************************************************************/
  6609.                     }
  6610.  
  6611.  Related Information 
  6612.  
  6613.               asctime 
  6614.               ctime 
  6615.               gmtime 
  6616.               localtime 
  6617.               mktime 
  6618.               strftime 
  6619.               time 
  6620.  
  6621.  
  6622. ΓòÉΓòÉΓòÉ 3.41. div - Calculate Quotient and Remainder ΓòÉΓòÉΓòÉ
  6623.  
  6624. div - Calculate Quotient and Remainder 
  6625.  
  6626.  Syntax 
  6627.  
  6628.                     #include <stdlib.h>
  6629.                     div_t div(int numerator, int denominator);
  6630.  
  6631.  Description 
  6632.  
  6633.           div calculates the quotient and remainder of the division of 
  6634.           numerator by denominator. 
  6635.  
  6636.  Returns 
  6637.  
  6638.           div returns a structure of type div_t, containing both the quotient 
  6639.           int quot and the remainder int rem.  If the return value cannot be 
  6640.           represented, its value is undefined. If denominator is 0, an 
  6641.           exception will be raised. 
  6642.  
  6643.  Example Code 
  6644.  
  6645.           This example uses div to calculate the quotients and remainders for a 
  6646.           set of two dividends and two divisors. 
  6647.  
  6648.                     #include <stdlib.h>
  6649.                     #include <stdio.h>
  6650.  
  6651.                     int main(void)
  6652.                     {
  6653.                        int num[2] =  { 45,-45 };
  6654.                        int den[2] =  { 7,-7 };
  6655.                        div_t ans;              /* div_t is a struct type containing two ints:
  6656.                                                   'quot' stores quotient; 'rem' stores remainder */
  6657.                        short i,j;
  6658.  
  6659.                        printf("Results of division:\n");
  6660.                        for (i = 0; i < 2; i++)
  6661.                           for (j = 0; j < 2; j++) {
  6662.                              ans = div(num[i], den[j]);
  6663.                              printf("Dividend: %6ld  Divisor: %6ld", num[i], den[j]);
  6664.                              printf("  Quotient: %6ld  Remainder: %6ld\n", ans.quot, ans.rem);
  6665.                           }
  6666.                        return 0;
  6667.  
  6668.                        /****************************************************************************
  6669.                           The output should be:
  6670.  
  6671.                           Results of division:
  6672.                           Dividend:  45  Divisor:   7  Quotient:   6  Remainder:   3
  6673.                           Dividend:  45  Divisor:  -7  Quotient:  -6  Remainder:   3
  6674.                           Dividend: -45  Divisor:   7  Quotient:  -6  Remainder:  -3
  6675.                           Dividend: -45  Divisor:  -7  Quotient:   6  Remainder:  -3
  6676.                        ****************************************************************************/
  6677.                     }
  6678.  
  6679.  Related Information 
  6680.  
  6681.               ldiv 
  6682.  
  6683.  
  6684. ΓòÉΓòÉΓòÉ 3.42. _DLL_InitTerm - Initialize and Terminate DLL Environment ΓòÉΓòÉΓòÉ
  6685.  
  6686. _DLL_InitTerm - Initialize and Terminate DLL Environment 
  6687.  
  6688.  Syntax 
  6689.  
  6690.                     unsigned long _DLL_InitTerm(unsigned long modhandle,
  6691.                                                         unsigned long flag);
  6692.                     /* no header file - defined in run-time startup code */
  6693.  
  6694.  Description 
  6695.  
  6696.           _DLL_InitTerm is the initialization and termination entry point for a 
  6697.           DLL. When each new process gains access to the DLL, _DLL_InitTerm 
  6698.           initializes the necessary environment for the DLL, including storage, 
  6699.           semaphores, and variables. When each process frees its access to the 
  6700.           DLL, _DLL_InitTerm terminates the DLL environment created for that 
  6701.           process. 
  6702.  
  6703.           The default _DLL_InitTerm function performs the actions required to 
  6704.           initialize and terminate the run-time environment, or for subsystem 
  6705.           DLLs, to initialize and terminate memory functions. It is called 
  6706.           automatically when you link to the DLL. If your DLL requires 
  6707.           initialization or termination actions in addition to the actions 
  6708.           performed in the default function, you will need to create your own 
  6709.           _DLL_InitTerm function. 
  6710.  
  6711.           If the value of the flag parameter is 0, the DLL environment is 
  6712.           initialized. If the value of the flag parameter is 1, the DLL 
  6713.           environment is ended. 
  6714.  
  6715.           The modhandle parameter is the module handle assigned by the 
  6716.           operating system for this DLL. You can use the module handle as a 
  6717.           parameter to various OS/2 function calls. For example, you can call 
  6718.           DosQueryModuleName with the module handle to return the 
  6719.           fully-qualified path name of the DLL, which tells you where the DLL 
  6720.           was loaded from. 
  6721.  
  6722.           For more information on creating your own _DLL_InitTerm function, see 
  6723.           the chapter "Building Dynamic Link Libraries in the VisualAge C++ 
  6724.           Programming Guide. 
  6725.  
  6726.           Note:  A _DLL_InitTerm function for a subsystem DLL has the same 
  6727.                  prototype, but the content of the function is different 
  6728.                  because there is no run-time environment to initialize or 
  6729.                  terminate. For more information on building subsystem DLLs, 
  6730.                  see the section "Building a Subsystem DLL" in the VisualAge 
  6731.                  C++ Programming Guide. 
  6732.  
  6733.  Returns 
  6734.  
  6735.           The return code from _DLL_InitTerm tells the loader if the 
  6736.           initialization or termination was performed successfully. If the call 
  6737.           was successful, _DLL_InitTerm returns a nonzero value. A return code 
  6738.           of 0 indicates that the function failed. If a failure is indicated, 
  6739.           the loader will not load the program that is accessing the DLL. 
  6740.  
  6741.  Example Code 
  6742.  
  6743.           The following example shows the _DLL_InitTerm function sample program 
  6744.           for building DLLs. 
  6745.  
  6746.                     #define  INCL_DOSMODULEMGR
  6747.                     #define  INCL_DOSPROCESS
  6748.                     #include <os2.h>
  6749.                     #include <stdlib.h>
  6750.                     #include <stdio.h>
  6751.                     #include <string.h>
  6752.  
  6753.                     /* _CRT_init is the C run-time environment initialization function.         */
  6754.                     /* It will return 0 to indicate success and -1 to indicate failure.         */
  6755.  
  6756.                     int _CRT_init(void);
  6757.                     #ifdef   STATIC_LINK
  6758.  
  6759.                     /* _CRT_term is the C run-time environment termination function.            */
  6760.                     /* It only needs to be called when the C run-time functions are statically  */
  6761.                     /* linked.                                                                  */
  6762.  
  6763.                     void _CRT_term(void);
  6764.                     #else
  6765.  
  6766.                     /* A clean up routine registered with DosExitList must be used if run-time  */
  6767.                     /* calls are required and the run time is dynamically linked.  This will    */
  6768.                     /* guarantee that this clean up routine is run before the library DLL is    */
  6769.                     /* terminated.                                                              */
  6770.  
  6771.                     static void cleanup(ULONG ulReason);
  6772.                     #endif
  6773.                     size_t nSize;
  6774.                     int *pArray;
  6775.  
  6776.                     /* _DLL_InitTerm is the function that gets called by the operating system   */
  6777.                     /* loader when it loads and frees this DLL for each process that accesses   */
  6778.                     /* this DLL.  However, it only gets called the first time the DLL is loaded */
  6779.                     /* and the last time it is freed for a particular process.  The system      */
  6780.                     /* linkage convention MUST be used because the operating system loader is   */
  6781.                     /* calling this function.                                                   */
  6782.  
  6783.                     unsigned long _DLL_InitTerm(unsigned long hModule, unsigned long
  6784.                                                         ulFlag)
  6785.                     {
  6786.                        size_t i;
  6787.                        APIRET rc;
  6788.                        char namebuf[CCHMAXPATH];
  6789.                        /* If ulFlag is zero then the DLL is being loaded so initialization should*/
  6790.                        /* be performed.  If ulFlag is 1 then the DLL is being freed so          */
  6791.                        /* termination should be performed.                                      */
  6792.  
  6793.                        switch (ulFlag) {
  6794.                           case 0 :
  6795.  
  6796.                              /*******************************************************************/
  6797.                              /* The C run-time environment initialization function must be      */
  6798.                              /* called before any calls to C run-time functions that are not    */
  6799.                              /* inlined.                                                        */
  6800.                              /*******************************************************************/
  6801.  
  6802.                              if (_CRT_init() == -1)
  6803.                                 return 0UL;
  6804.                     #ifndef  STATIC_LINK
  6805.  
  6806.                              /********************************************************************/
  6807.                              /* A DosExitList routine must be used to clean up if run-time calls */
  6808.                              /* are required and the run time is dynamically linked.              */
  6809.                              /********************************************************************/
  6810.  
  6811.                                 if (rc = DosExitList(0x0000FF00|EXLST_ADD, cleanup))
  6812.                                 printf("DosExitList returned %lu\n", rc);
  6813.                     #endif
  6814.                              if (rc = DosQueryModuleName(hModule, CCHMAXPATH, namebuf))
  6815.                                 printf("DosQueryModuleName returned %lu\n", rc);
  6816.                              else
  6817.                                 printf("The name of this DLL is %s\n", namebuf);
  6818.                              srand(17);
  6819.                              nSize = (rand()%128)+32;
  6820.                              printf("The array size for this process is %u\n", nSize);
  6821.                              if ((pArray = malloc(nSize *sizeof(int))) == NULL) {
  6822.                                 printf("Could not allocate space for unsorted array.\n");
  6823.                                 return 0UL;
  6824.                              }
  6825.                              for (i = 0; i < nSize; ++i)
  6826.                                 pArray[i] = rand();
  6827.                              break;
  6828.                           case 1 :
  6829.                     #ifdef   STATIC_LINK
  6830.                              printf("The array will now be freed.\n");
  6831.                              free(pArray);
  6832.                              _CRT_term();
  6833.                     #endif
  6834.                              break;
  6835.                           default  :
  6836.                              printf("ulFlag = %lu\n", ulFlag);
  6837.                              return 0UL;
  6838.                        }
  6839.                        /* A non-zero value must be returned to indicate success.                */
  6840.  
  6841.                        return 1UL;
  6842.                     }
  6843.                     #ifndef  STATIC_LINK
  6844.                     static void cleanup(ULONG ulReason)
  6845.                     {
  6846.                        if (!ulReason) {
  6847.                           printf("The array will now be freed.\n");
  6848.                           free(pArray);
  6849.                        }
  6850.                        DosExitList(EXLST_EXIT, cleanup);
  6851.                        return ;
  6852.                     }
  6853.                     #endif
  6854.  
  6855.           The following example shows the _DLL_InitTerm function sample for 
  6856.           building subsystem DLLs. 
  6857.  
  6858.                     /* _DLL_InitTerm() - called by the loader for DLL
  6859.                     initialization/termination  */
  6860.                     /* This function must return a non-zero value if successful and a zero value  */
  6861.                     /* if unsuccessful.                                                           */
  6862.  
  6863.                     unsigned long _DLL_InitTerm( unsigned long hModule, unsigned long ulFlag )
  6864.                        {
  6865.                        APIRET rc;
  6866.  
  6867.                        /* If ulFlag is zero then initialization is required:                      */
  6868.                        /*    If the shared memory pointer is NULL then the DLL is being loaded    */
  6869.                        /*    for the first time so acquire the named shared storage for the       */
  6870.                        /*    process control structures.  A linked list of process control        */
  6871.                        /*    structures will be maintained.  Each time a new process loads this   */
  6872.                        /*    DLL, a new process control structure is created and it is inserted   */
  6873.                        /*    at the end of the list by calling DLLREGISTER.                       */
  6874.                        /*                                                                         */
  6875.                        /* If ulFlag is 1 then termination is required:                            */
  6876.                        /*    Call DLLDEREGISTER which will remove the process control structure   */
  6877.                        /*    and free the shared memory block from its virtual address space.     */
  6878.  
  6879.                        switch( ulFlag )
  6880.                           {
  6881.                           case 0:
  6882.                              if ( !ulProcessCount )
  6883.                                 {
  6884.                                 /* Create the shared mutex semaphore.                             */
  6885.  
  6886.                                 if ( ( rc = DosCreateMutexSem( SHARED_SEMAPHORE_NAME,
  6887.                                                                &hmtxSharedSem,
  6888.                                                                0,
  6889.                                                                FALSE ) ) != NO_ERROR )
  6890.                                    {
  6891.                                    printf( "DosCreateMutexSem rc = %lu\n", rc );
  6892.                                    return 0;
  6893.                                    }
  6894.                                 }
  6895.                              /* Register the current process.                                     */
  6896.  
  6897.                              if ( DLLREGISTER( ) )
  6898.                                 return 0;
  6899.                              break;
  6900.  
  6901.                           case 1:
  6902.                              /* De-register the current process.                                  */
  6903.  
  6904.                              if ( DLLDEREGISTER( ) )
  6905.                                 return 0;
  6906.                              break;
  6907.  
  6908.                           default:
  6909.                              return 0;
  6910.                           }
  6911.  
  6912.                        /* Indicate success.  Non-zero means success!!!             */
  6913.  
  6914.                        return 1;
  6915.                        }
  6916.  
  6917.  Related Information 
  6918.  
  6919.               "Building a Dynamic Link Library" in the VisualAge C++ 
  6920.                Programming Guide 
  6921.               "Building a Subsystem DLL" in the VisualAge C++ Programming 
  6922.                Guide 
  6923.               _CRT_init 
  6924.               _CRT_term 
  6925.               _rmem_init 
  6926.               _rmem_term 
  6927.  
  6928.  
  6929. ΓòÉΓòÉΓòÉ 3.43. dup - Associate Second Handle with Open File ΓòÉΓòÉΓòÉ
  6930.  
  6931. dup - Associate Second Handle with Open File 
  6932.  
  6933.  Syntax 
  6934.  
  6935.                     #include <io.h>
  6936.                     int dup(int handle);
  6937.  
  6938.  Description 
  6939.  
  6940.           dup associates a second file handle with a currently open file. You 
  6941.           can carry out operations on the file using either file handle because 
  6942.           all handles associated with a given file use the same file pointer. 
  6943.           Creation of a new handle does not affect the type of access allowed 
  6944.           for the file. 
  6945.  
  6946.           For example, given: 
  6947.  
  6948.                        handle2 = dup(handle1)
  6949.  
  6950.           handle2 will have the same file access mode (text or binary) as 
  6951.           handle1. In addition, if handle1 was originally opened with the 
  6952.           O_APPEND flag (described in open), handle2 will also have that 
  6953.           attribute. 
  6954.  
  6955.           Warning: Both handles share a single file pointer. If you reposition 
  6956.           a file using handle1, the position in the file returned by handle2 
  6957.           will also change. 
  6958.  
  6959.           If you duplicate a file handle for an open stream, the resulting file 
  6960.           handle has the same restrictions as the original file handle. 
  6961.  
  6962.  Returns 
  6963.  
  6964.           dup returns the next available file handle for the given file. It 
  6965.           returns -1 if an error occurs and sets errno to one of the following 
  6966.           values: 
  6967.  
  6968.           Value      Meaning 
  6969.           EBADF      The file handle is not valid. 
  6970.           EMFILE     No more file handles are available. 
  6971.           EOS2ERR    The call to the operating system was not successful. 
  6972.  
  6973.  Example Code 
  6974.  
  6975.           This example makes a second file handle, fh3, refer to the same file 
  6976.           as the file handle fh1 using dup. The file handle fh2 is then 
  6977.           associated with the file edopen.da2, and finally fh2 is forced to 
  6978.           associate with edopen.da1 dup2. 
  6979.  
  6980.                     #include <io.h>
  6981.                     #include <stdio.h>
  6982.                     #include <stdlib.h>
  6983.                     #include <fcntl.h>
  6984.                     #include <sys\stat.h>
  6985.  
  6986.                     int main(void)
  6987.                     {
  6988.                        int fh1,fh2,fh3;
  6989.  
  6990.                        if (-1 == (fh1 = open("edopen.da1", O_CREAT|O_TRUNC|O_RDWR, S_IREAD|S_IWRITE)
  6991.                           )) {
  6992.                           perror("Unable to open edopen.da1");
  6993.                           return EXIT_FAILURE;
  6994.                        }
  6995.                        if (-1 == (fh3 = dup(fh1))) {     /* fh3 refers to the sample file as fh1  */
  6996.                           perror("Unable to dup");
  6997.                           close(fh1);
  6998.                           return EXIT_FAILURE;
  6999.                        }
  7000.                        else
  7001.                           printf("Successfully performed dup handle.\n");
  7002.                        if (-1 == (fh2 = open("edopen.da2", O_CREAT|O_TRUNC|O_RDWR, S_IREAD|S_IWRITE)
  7003.                           )) {
  7004.                           perror("Unable to open edopen.da2");
  7005.                           close(fh1);
  7006.                           close(fh3);
  7007.                           return EXIT_FAILURE;
  7008.                        }
  7009.                        if (-1 == dup2(fh1, fh2)) {  /* Force fh2 to the refer to the same file     */
  7010.                                                     /* as fh1.                                    */
  7011.                           perror("Unable to dup2");
  7012.                        }
  7013.                        else
  7014.                           printf("Successfully performed dup2 handle.\n");
  7015.                        close(fh1);
  7016.                        close(fh2);
  7017.                        close(fh3);
  7018.                        return 0;
  7019.  
  7020.                        /****************************************************************************
  7021.                           The output should be:
  7022.  
  7023.                            Successfully performed dup handle.
  7024.                            Successfully performed dup2 handle.
  7025.                        ****************************************************************************/
  7026.                     }
  7027.  
  7028.  Related Information 
  7029.  
  7030.               close 
  7031.               creat 
  7032.               dup2 
  7033.               open 
  7034.               _sopen 
  7035.  
  7036.  
  7037. ΓòÉΓòÉΓòÉ 3.44. dup2 - Associate Second Handle with Open File ΓòÉΓòÉΓòÉ
  7038.  
  7039. dup2 - Associate Second Handle with Open File 
  7040.  
  7041.  Syntax 
  7042.  
  7043.                     #include <io.h>
  7044.                     int dup2(int handle1, int handle2);
  7045.  
  7046.  Description 
  7047.  
  7048.           dup2 makes handle2 refer to the currently open file associated with 
  7049.           handle1. You can carry out operations on the file using either file 
  7050.           handle because all handles associated with a given file use the same 
  7051.           file pointer. 
  7052.  
  7053.           handle2 will point to the same file as handle1, but will retain the 
  7054.           file access mode (text or binary) that it had before duplication. In 
  7055.           addition, if handle2 was originally opened with the O_APPEND flag, it 
  7056.           will also retain that attribute. If handle2 is associated with an 
  7057.           open file at the time of the call, that file is closed. 
  7058.  
  7059.           Warning: Both handles share a single file position. If you reposition 
  7060.           a file using handle1, the position in the file returned by handle2 
  7061.           will also change. 
  7062.  
  7063.           If you duplicate a file handle for an open stream (using fileno), the 
  7064.           resulting file handle has the same restrictions as the original file 
  7065.           handle. 
  7066.  
  7067.  Returns 
  7068.  
  7069.           dup2 returns 0 to indicate success. It returns -1 if an error occurs 
  7070.           and sets errno to one of the following values: 
  7071.  
  7072.           Value      Meaning 
  7073.           EBADF      The file handle is not valid. 
  7074.           EMFILE     No more file handles are available. 
  7075.           EOS2ERR    The call to the operating system was not successful. 
  7076.  
  7077.  Example Code 
  7078.  
  7079.           This example makes a second file handle, fh3, refer to the same file 
  7080.           as the file handle fh1 using dup. The file handle fh2 is then 
  7081.           associated with the file edopen.da2, and finally fh2 is forced to 
  7082.           associate with edopen.da1 by the dup2 function. 
  7083.  
  7084.                     #include <io.h>
  7085.                     #include <stdio.h>
  7086.                     #include <stdlib.h>
  7087.                     #include <fcntl.h>
  7088.                     #include <sys\stat.h>
  7089.  
  7090.                     int main(void)
  7091.                     {
  7092.                        int fh1,fh2,fh3;
  7093.  
  7094.                        if (-1 == (fh1 = open("edopen.da1", O_CREAT|O_TRUNC|O_RDWR, S_IREAD|S_IWRITE)
  7095.                           )) {
  7096.                           perror("Unable to open edopen.da1");
  7097.                           return EXIT_FAILURE;
  7098.                        }
  7099.                        if (-1 == (fh3 = dup(fh1))) {     /* fh3 refers to the sample file as fh1  */
  7100.                           perror("Unable to dup");
  7101.                           close(fh1);
  7102.                           return EXIT_FAILURE;
  7103.                        }
  7104.                        else
  7105.                           printf("Successfully performed dup handle.\n");
  7106.                        if (-1 == (fh2 = open("edopen.da2", O_CREAT|O_TRUNC|O_RDWR, S_IREAD|S_IWRITE)
  7107.                           )) {
  7108.                           perror("Unable to open edopen.da2");
  7109.                           close(fh1);
  7110.                           close(fh3);
  7111.                           return EXIT_FAILURE;
  7112.                        }
  7113.                        if (-1 == dup2(fh1, fh2)) {  /* Force fh2 to the refer to the same file     */
  7114.                                                     /* as fh1.                                    */
  7115.                           perror("Unable to dup2");
  7116.                        }
  7117.                        else
  7118.                           printf("Successfully performed dup2 handle.\n");
  7119.                        close(fh1);
  7120.                        close(fh2);
  7121.                        close(fh3);
  7122.                        return 0;
  7123.  
  7124.                        /****************************************************************************
  7125.                           The output should be:
  7126.  
  7127.                            Successfully performed dup handle.
  7128.                            Successfully performed dup2 handle.
  7129.                        ****************************************************************************/
  7130.                     }
  7131.  
  7132.  Related Information 
  7133.  
  7134.               close 
  7135.               creat 
  7136.               dup 
  7137.               open 
  7138.               _sopen 
  7139.  
  7140.  
  7141. ΓòÉΓòÉΓòÉ 3.45. _ecvt - Convert Floating-Point to Character ΓòÉΓòÉΓòÉ
  7142.  
  7143. _ecvt - Convert Floating-Point to Character 
  7144.  
  7145.  Syntax 
  7146.  
  7147.                     #include <stdlib.h>
  7148.                     char *_ecvt(double value, int ndigits, int *decptr, int *signptr);
  7149.  
  7150.  Description 
  7151.  
  7152.           _ecvt converts the floating-point number value to a character string. 
  7153.           _ecvt stores ndigits digits of value as a string and adds a null 
  7154.           character (\0). If the number of digits in value exceeds ndigits, the 
  7155.           low-order digit is rounded. If there are fewer than ndigits digits, 
  7156.           the string is padded with zeros. Only digits are stored in the 
  7157.           string. 
  7158.  
  7159.           You can obtain the position of the decimal point and the sign of 
  7160.           value after the call from decptr and signptr. decptr points to an 
  7161.           integer value that gives the position of the decimal point with 
  7162.           respect to the beginning of the string. A 0 or a negative integer 
  7163.           value indicates that the decimal point lies to the left of the first 
  7164.           digit. 
  7165.  
  7166.           signptr points to an integer that indicates the sign of the converted 
  7167.           number. If the integer value is 0, the number is positive. If it is 
  7168.           not 0, the number is negative. 
  7169.  
  7170.           _ecvt also converts NaN and infinity values to the strings NAN and 
  7171.           INFINITY, respectively. For more information on NaN and infinity 
  7172.           values, see Infinity and NaN Support. 
  7173.  
  7174.           Warning: For each thread, the _ecvt, _fcvt and _gcvt functions use a 
  7175.           single, dynamically allocated buffer for the conversion. Any 
  7176.           subsequent call that the same thread makes to these functions 
  7177.           destroys the result of the previous call. 
  7178.  
  7179.  Returns 
  7180.  
  7181.           _ecvt returns a pointer to the string of digits. Because of the 
  7182.           limited precision of the double type, no more than 16 decimal digits 
  7183.           are significant in any conversion. If it cannot allocate memory to 
  7184.           perform the conversion. _ecvt returns NULL and sets errno to ENOMEM. 
  7185.  
  7186.  Example Code 
  7187.  
  7188.           This example reads in two floating-point numbers, calculates their 
  7189.           product, and prints out only the billions digit of its character 
  7190.           representation. At most, 16 decimal digits of significance can be 
  7191.           expected. The output assumes the user enters the numbers 1000000 and 
  7192.           3000. 
  7193.  
  7194.                     #include <stdio.h>
  7195.                     #include <stdlib.h>
  7196.                     #include <math.h>
  7197.  
  7198.                     int main(void)
  7199.                     {
  7200.                        float x,y;
  7201.                        double z;
  7202.                        int w,b,decimal,sign;
  7203.                        char *buffer;
  7204.  
  7205.                        printf("Enter two floating-point numbers:\n");
  7206.                        if (2 != scanf("%e %e", &x, &y)) {
  7207.                           printf("input error...\n");
  7208.                           return EXIT_FAILURE;
  7209.                        }
  7210.                        z = x *y;
  7211.                        printf("Their product is %g\n", z);
  7212.                        w = log10(fabs(z))+1.;
  7213.                        buffer = _ecvt(z, w, &decimal, &sign);
  7214.                        b = decimal-10;
  7215.                        if (b < 0)
  7216.                           printf("Their product does not exceed one billion.\n");
  7217.                        else
  7218.                           if (b > 15)
  7219.                              printf("The billions digit of their product is insignificant.\n");
  7220.                           else
  7221.                              printf("The billions digit of their product is %c.\n", buffer[b]);
  7222.                        return 0;
  7223.  
  7224.                        /****************************************************************************
  7225.                           For the following input:
  7226.  
  7227.                           1000000 3000
  7228.  
  7229.                           The output should be:
  7230.  
  7231.                           Enter two floating-point numbers:
  7232.                           1000000 3000
  7233.                           Their product is 3e+09
  7234.                           The billions digit of their product is 3.
  7235.                        ****************************************************************************/
  7236.                     }
  7237.  
  7238.  Related Information 
  7239.  
  7240.               _fcvt 
  7241.               _gcvt 
  7242.               Infinity and NaN Support 
  7243.  
  7244.  
  7245. ΓòÉΓòÉΓòÉ 3.46. _endthread - Terminate Current Thread ΓòÉΓòÉΓòÉ
  7246.  
  7247. _endthread - Terminate Current Thread 
  7248.  
  7249.  Syntax 
  7250.  
  7251.                     #include <stdlib.h>  /* also in <process.h> */
  7252.                     void _endthread(void);
  7253.  
  7254.  Description 
  7255.  
  7256.           _endthread ends a thread that you previously created with 
  7257.           _beginthread. When the thread has finished, it automatically ends 
  7258.           itself with an implicit call to _endthread. You can also call 
  7259.           _endthread explicitly to end the thread before it has completed its 
  7260.           function, for example, if some error condition occurs. 
  7261.  
  7262.           Note:  If you use DosCreateThread, you must explicitly call 
  7263.                  _endthread to terminate the thread. 
  7264.  
  7265.  Returns 
  7266.  
  7267.           There is no return value. 
  7268.  
  7269.  Example Code 
  7270.  
  7271.           In this example, the main program creates two threads, bonjour and 
  7272.           au_revoir. The thread bonjour is forcibly terminated by a call to 
  7273.           _endthread, while the au_revoir thread ends itself with an implicit 
  7274.           call to _endthread. 
  7275.  
  7276.                     #define  INCL_DOS
  7277.                     #include <os2.h>
  7278.                     #include <stdio.h>
  7279.                     #include <stdlib.h>
  7280.                     #include <process.h>
  7281.  
  7282.                     void bonjour(void *arg)
  7283.                     {
  7284.                        int i = 0;
  7285.  
  7286.                        while (i++ < 5)
  7287.                           printf("Bonjour!\n");
  7288.                        _endthread();                         /* This thread ends itself explicitly*/
  7289.                        puts("thread should terminate before printing this");
  7290.                     }
  7291.  
  7292.                     void au_revoir(void *arg)
  7293.                     {
  7294.                        int i = 0;
  7295.  
  7296.                        while (i++ < 5)                      /* This thread makes an implicit      */
  7297.                           printf("Au revoir!\n");                     /* call to _endthread       */
  7298.                     }
  7299.  
  7300.                     int main(void)
  7301.                     {
  7302.                        unsigned long tid1;
  7303.                        unsigned long tid2;
  7304.  
  7305.                        tid1 = _beginthread(bonjour, NULL, 8192, NULL);
  7306.                        tid2 = _beginthread(au_revoir, NULL, 8192, NULL);
  7307.                        if (-1 == tid1 || -1 == tid2) {
  7308.                           printf("Unable to start threads.\n");
  7309.                           return EXIT_FAILURE;
  7310.                        }
  7311.                        DosWaitThread(&tid2, DCWW_WAIT);            /* wait until threads 1 and 2  */
  7312.                        DosWaitThread(&tid1, DCWW_WAIT);             /* have been completed        */
  7313.                        return 0;
  7314.  
  7315.                        /****************************************************************************
  7316.                           The output should be similar to:
  7317.  
  7318.                           Au revoir!
  7319.                           Au revoir!
  7320.                           Au revoir!
  7321.                           Au revoir!
  7322.                           Au revoir!
  7323.                           Bonjour!
  7324.                           Bonjour!
  7325.                           Bonjour!
  7326.                           Bonjour!
  7327.                           Bonjour!
  7328.                        ****************************************************************************/
  7329.                     }
  7330.  
  7331.  Related Information 
  7332.  
  7333.               _beginthread 
  7334.  
  7335.  
  7336. ΓòÉΓòÉΓòÉ 3.47. __eof - Determine End of File ΓòÉΓòÉΓòÉ
  7337.  
  7338. __eof - Determine End of File 
  7339.  
  7340.  Syntax 
  7341.  
  7342.                     #include <io.h>
  7343.                     int __eof (int handle);
  7344.  
  7345.  Description 
  7346.  
  7347.           __eof determines whether the file pointer has reached the end-of-file 
  7348.           for the file associated with handle. You cannot use __eof on a 
  7349.           nonseekable file; it will fail. 
  7350.  
  7351.  Returns 
  7352.  
  7353.           __eof returns the value 1 if the current position is the end of the 
  7354.           file or 0 if it is not. A return value of -1 shows an error, and the 
  7355.           system sets errno to the following values: 
  7356.  
  7357.           Value      Meaning 
  7358.           EBADF      File handle is not valid. 
  7359.           EOS2ERR    The call to the operating system was not successful. 
  7360.  
  7361.  Example Code 
  7362.  
  7363.           This example creates the file sample.dat and then checks if the file 
  7364.           pointer is at the end of that file using the __eof function. 
  7365.  
  7366.                     #include <sys\stat.h>
  7367.                     #include <io.h>
  7368.                     #include <stdio.h>
  7369.                     #include <stdlib.h>;
  7370.  
  7371.                     int main(void)
  7372.                     {
  7373.                        int fh,returnValue;
  7374.  
  7375.                        fh = creat("sample.dat", S_IREAD|S_IWRITE);
  7376.                        if (-1 == fh) {
  7377.                           perror("Error creating sample.dat");
  7378.                           return EXIT_FAILURE;
  7379.                        }
  7380.                        if (-1 == (returnValue = __eof(fh))) {
  7381.                           perror("eof function error");
  7382.                           return EXIT_FAILURE;
  7383.                        }
  7384.                        if (1 == returnValue)
  7385.                           printf("File pointer is at end-of-file position.\n");
  7386.                        else
  7387.                           printf("File pointer is not at end-of-file position.\n");
  7388.                        close(fh);
  7389.                        return 0;
  7390.  
  7391.                        /****************************************************************************
  7392.                           The output should be:
  7393.  
  7394.                           File pointer is at end-of-file position.
  7395.                        ****************************************************************************/
  7396.                     }
  7397.  
  7398.  Related Information 
  7399.  
  7400.               chsize 
  7401.               creat 
  7402.               _filelength 
  7403.               _sopen 
  7404.               open 
  7405.  
  7406.  
  7407. ΓòÉΓòÉΓòÉ 3.48. erf - erfc - Calculate Error Functions ΓòÉΓòÉΓòÉ
  7408.  
  7409. erf - erfc - Calculate Error Functions 
  7410.  
  7411.  Syntax 
  7412.  
  7413.                     #include <math.h>
  7414.                     double erf(double x);
  7415.                     double erfc(double x);
  7416.  
  7417.  Description 
  7418.  
  7419.           erf calculates the error function of erfc computes the value of 
  7420.           1.0 - erf(x). erfc is used in place of erf for large values of x. 
  7421.  
  7422.  Returns 
  7423.  
  7424.           erf returns a double value that represents the error function. erfc 
  7425.           returns a double value representing 1.0 - erf. 
  7426.  
  7427.  Example Code 
  7428.  
  7429.           This example uses erf and erfc to compute the error function of two 
  7430.           numbers. 
  7431.  
  7432.                     #include <stdio.h>
  7433.                     #include <math.h>
  7434.  
  7435.                     double smallx,largex,value;
  7436.  
  7437.                     int main(void)
  7438.                     {
  7439.                        smallx = 0.1;
  7440.                        largex = 10.0;
  7441.                        value = erf(smallx);                                   /* value = 0.112463 */
  7442.                        printf("Error value for 0.1: %lf\n", value);
  7443.                        value = erfc(largex);                          /* value = 2.088488e-45     */
  7444.                        printf("Error value for 10.0: %le\n", value);
  7445.                        return 0;
  7446.  
  7447.                        /****************************************************************************
  7448.                           The output should be:
  7449.  
  7450.                           Error value for 0.1: 0.112463
  7451.                           Error value for 10.0: 2.088488e-45
  7452.                        ****************************************************************************/
  7453.                     }
  7454.  
  7455.  Related Information 
  7456.  
  7457.               bessel 
  7458.               gamma 
  7459.  
  7460.  
  7461. ΓòÉΓòÉΓòÉ 3.49. execl - _execvpe - Load and Run Child Process ΓòÉΓòÉΓòÉ
  7462.  
  7463. execl - _execvpe - Load and Run Child Process 
  7464.  
  7465.  Syntax 
  7466.  
  7467.                     #include <process.h>
  7468.                     int execl(char *pathname, char *arg0, char *arg1,...,
  7469.                                  char *argn, NULL);
  7470.                     int execle(char *pathname, char *arg0, char *arg1,...,
  7471.                                  char *argn, NULL, char *envp[ ]);
  7472.                     int execlp(char *pathname, char *arg0, char *arg1,...,
  7473.                                  char *argn, NULL);
  7474.                     int _execlpe(char *pathname, char *arg0, char *arg1,...,
  7475.                                  char *argn, NULL, char *envp[ ]);
  7476.                     int execv(char *pathname, char *argv[ ]);
  7477.                     int execve(char *pathname, char *argv[ ],char *envp[ ]);
  7478.                     int execvp(char *pathname, char *argv[ ]);
  7479.                     int _execvpe(char *pathname, char *argv[ ], char *envp[ ]);
  7480.  
  7481.  Description 
  7482.  
  7483.           The exec functions load and run new child processes. The parent 
  7484.           process is ended after the child process has started.  Sufficient 
  7485.           storage must be available for loading and running the child process. 
  7486.  
  7487.           All of the exec functions are versions of the same routine;  the 
  7488.           letters at the end determine the specific variation:  compact 
  7489.           break=fit. 
  7490.  
  7491.           Letter    Variation 
  7492.  
  7493.            p        Uses PATH environment variable to find the file to be run. 
  7494.  
  7495.            l        Passes a list of command line arguments separately. 
  7496.  
  7497.            v        Passes to the child process an array of pointers to 
  7498.                     command-line arguments. 
  7499.  
  7500.            e        Passes to the child process an array of pointers to 
  7501.                     environment strings. 
  7502.  
  7503.           Note:  In earlier releases of C Set ++, all of the exec functions 
  7504.                  began with an underscore (_getpid). Because they are defined 
  7505.                  by the X/Open standard, the underscore has been removed. 
  7506.                  _execlpe and _execvpe retain the initial underscore because 
  7507.                  they are not included in the X/Open standard. For 
  7508.                  compatibility, The Developer's Toolkit will map the _exec 
  7509.                  functions to the correct exec function. 
  7510.  
  7511.           The pathname argument specifies the file to run as the child process. 
  7512.           The pathname can specify a full path from the root, a partial path 
  7513.           from the current working directory, or a file name.  If pathname does 
  7514.           not have a file name extension or does not end with a period, the 
  7515.           exec functions will add the .EXE extension and search for the file. 
  7516.           If pathname has an extension, the exec function uses only that 
  7517.           extension. If pathname ends with a period, the exec functions search 
  7518.           for pathname with no extension.  The execlp, _execlpe, execvp, and 
  7519.           _execvpe functions search for the pathname in the directories that 
  7520.           the PATH environment variable specifies. 
  7521.  
  7522.           You pass arguments to the new process by giving one or more pointers 
  7523.           to character strings as arguments in the exec call.  These character 
  7524.           strings form the argument list for the child process. 
  7525.  
  7526.           The compiler can pass the argument pointers as separate arguments 
  7527.           (execl, execle, execlp, and _execlpe) or as an array of pointers 
  7528.           (execv, execve, execvp, and _execvpe).  You should pass at least one 
  7529.           argument, either arg0 or argv[0], to the child process. If you do 
  7530.           not, an argument will be returned that points to the same file as the 
  7531.           path name argument you specified. This argument may not be exactly 
  7532.           identical to the path name argument you specified.  A different value 
  7533.           does not produce an error. 
  7534.  
  7535.           Use the execl, execle, execlp, and _execlpe functions for the cases 
  7536.           where you know the number of arguments in advance. The arg0 argument 
  7537.           is usually a pointer to pathname. The arg1 through argn arguments are 
  7538.           pointers to the character strings forming the new argument list. 
  7539.           There must be a NULL pointer following argn to mark the end of the 
  7540.           argument list. 
  7541.  
  7542.           Use the execv, execve, execvp, and _execvpe functions when the number 
  7543.           of arguments to the new process is variable.  Pass pointers to the 
  7544.           arguments of these functions as an array, argv[ ]. The argv[0] 
  7545.           argument is usually a pointer to pathname. The argv[1] through 
  7546.           argv[n] arguments are pointers to the character strings forming the 
  7547.           new argument list.  If argv[n] is the last parameter, then argv[n+1] 
  7548.           must be NULL. 
  7549.  
  7550.           Files that are open when you make an exec call remain open in the new 
  7551.           process.  In the execl, execlp, execv, and execvp calls, the child 
  7552.           process receives the environment of the parent.  The execle, 
  7553.           _execlpe, execve, and _execvpe functions let you change the 
  7554.           environment for the child process by passing a list of environment 
  7555.           settings through the envp argument.  The envp argument is an array of 
  7556.           character pointers, each element of which points to a string ending 
  7557.           with a null character that defines an environment variable.  Such a 
  7558.           string usually has the following form: 
  7559.  
  7560.                        NAME=value
  7561.           where NAME is the name of an environment variable, and value is the 
  7562.           string value to which the exec function sets that variable. 
  7563.  
  7564.           Note:  Do not enclose the value in double quotation marks. 
  7565.  
  7566.           The final element of the envp array should be NULL. When envp itself 
  7567.           is NULL, the child process receives the environment settings of the 
  7568.           parent process. 
  7569.  
  7570.           The exec functions do not preserve signal settings in child processes 
  7571.           created by calls to exec functions.  Calls to exec functions reset 
  7572.           the signal settings to the default in the child process. 
  7573.  
  7574.  Returns 
  7575.  
  7576.           The exec functions do not normally return control to the calling 
  7577.           process. They are equivalent to the corresponding _spawn functions 
  7578.           with P_OVERLAY as the value of modeflag. If an error occurs, the exec 
  7579.           functions return -1 and set errno to one of the following values: 
  7580.           compact break=fit. 
  7581.  
  7582.           Value          Meaning 
  7583.  
  7584.           EACCESS        The specified file has a locking or sharing violation. 
  7585.  
  7586.           EMFILE         There are too many open files.  The system must open 
  7587.                          the specified file to tell whether it is an executable 
  7588.                          file. 
  7589.  
  7590.           ENOENT         The file or pathname was not found or was specified 
  7591.                          incorrectly. 
  7592.  
  7593.           ENOEXEC        The specified file cannot run or has an incorrect 
  7594.                          executable file format. 
  7595.  
  7596.           ENOMEM         One of the following conditions exists: 
  7597.  
  7598.                              Not enough storage is available to run the child 
  7599.                               process. 
  7600.                              Not enough storage is available for the argument 
  7601.                               or environment strings. 
  7602.  
  7603.  Example Code 
  7604.  
  7605.           This example calls four of the eight exec routines.  When invoked 
  7606.           without arguments, the program first runs the code for case PARENT. 
  7607.           It then calls execle() to load and run a copy of itself.  The 
  7608.           instructions for the child are blocked to run only if argv[0] and one 
  7609.           parameter were passed (case CHILD).  In its turn, the child runs its 
  7610.           own child as a copy of the same program.  This sequence is continued 
  7611.           until four generations of child processes have run.  Each of the 
  7612.           processes prints a message identifying itself. 
  7613.  
  7614.                     #include <stdio.h>
  7615.                     #include <stdlib.h>
  7616.                     #include <process.h>
  7617.  
  7618.                     #define  PARENT       1
  7619.                     #define  CHILD        2
  7620.  
  7621.                     char *args[3];
  7622.  
  7623.                     int main(int argc, char **argv, char **envp) {
  7624.                        switch(argc) {
  7625.                           case PARENT: {                   /* No argument: run a child */
  7626.                              printf("Parent process began.\n");
  7627.                              execle(argv[0],argv[0],"1",NULL,envp);
  7628.                              abort();     /* Not executed because parent was overlaid. */
  7629.                           }
  7630.  
  7631.                           case CHILD: {           /* One argument: run a child's child */
  7632.                              printf("Child process %s began.\n", argv[1]);
  7633.                              if ('1' == *argv[1]) {   /* generation one */
  7634.                                 execl(argv[0], argv[0], "2", NULL);
  7635.                                 abort();    /* Not executed because child was overlaid */
  7636.                             }
  7637.                             if('2' == *argv[1]) {                    /* generation two */
  7638.                                 args[0] = argv[0];
  7639.                                 args[1] = "3";
  7640.                                 args[2] = NULL;
  7641.                                 execv(argv[0],args);
  7642.                                 abort();    /* Not executed because child was overlaid */
  7643.                              }
  7644.                              if ('3' == *argv[1]) {                /* generation three */
  7645.                                 args[0] = argv[0];
  7646.                                 args[1] = "4";
  7647.                                 args[2] = NULL;
  7648.                                 execve(argv[0], args, _environ);
  7649.                                 abort();    /* Not executed because child was overlaid */
  7650.                             }
  7651.                              if ('4' == *argv[1])                   /* generation four */
  7652.                                 printf("Child process %s", argv[1]);
  7653.                           }
  7654.                        }
  7655.                        printf(" ended.\n");
  7656.                        return 55;
  7657.                        /* The output should be similar to:
  7658.                           Parent process began.
  7659.                           Child process 1 began.
  7660.                           Child process 2 began.
  7661.                           Child process 3 began.
  7662.                           Child process 4 began.
  7663.                           Child process 4 ended.                                        */
  7664.                     }
  7665.  
  7666.  Related Information 
  7667.  
  7668.               abort 
  7669.               _cwait 
  7670.               exit 
  7671.               _exit 
  7672.               _spawnl - _spawnvpe 
  7673.               system 
  7674.               wait 
  7675.               "envp Parameter to main" in the VisualAge C++ Programming Guide 
  7676.  
  7677.  
  7678. ΓòÉΓòÉΓòÉ 3.50. exit - End Program ΓòÉΓòÉΓòÉ
  7679.  
  7680. exit - End Program 
  7681.  
  7682.  Syntax 
  7683.  
  7684.                     #include <stdlib.h>  /* also in <process.h> */
  7685.                     void exit(int status);
  7686.  
  7687.  Description 
  7688.  
  7689.           exit returns control to the host environment from the program. It 
  7690.           first calls all functions registered with the atexit function, in 
  7691.           reverse order;  that is, the last one registered is the first one 
  7692.           called. See atexit for more information. It flushes all buffers and 
  7693.           closes all open files before ending the program. All files opened 
  7694.           with tmpfile are deleted. 
  7695.  
  7696.           The argument status can have a value from 0 to 255 inclusive or be 
  7697.           one of the macros EXIT_SUCCESS or EXIT_FAILURE. A status value of 
  7698.           EXIT_SUCCESS or 0 indicates a normal exit; otherwise, another status 
  7699.           value is returned. 
  7700.  
  7701.  Returns 
  7702.  
  7703.           exit returns both control and the value of status to the operating 
  7704.           system. 
  7705.  
  7706.  Example Code 
  7707.  
  7708.           This example ends the program after flushing buffers and closing any 
  7709.           open files if it cannot open the file myfile.mjq. 
  7710.  
  7711.                     #include <stdio.h>
  7712.                     #include <stdlib.h>
  7713.  
  7714.                     FILE *stream;
  7715.  
  7716.                     int main(void)
  7717.                     {
  7718.                        if (NULL == (stream = fopen("myfile.mjq", "r"))) {
  7719.                           perror("Could not open data file");
  7720.                           exit(EXIT_FAILURE);
  7721.                        }
  7722.                        return 0;
  7723.  
  7724.                        /****************************************************************************
  7725.                           The output should be:
  7726.  
  7727.                           Could not open data file: The file cannot be found.
  7728.                        ****************************************************************************/
  7729.                     }
  7730.  
  7731.  Related Information 
  7732.  
  7733.               abort 
  7734.               atexit 
  7735.               _onexit 
  7736.               _exit 
  7737.               signal 
  7738.               tmpfile 
  7739.  
  7740.  
  7741. ΓòÉΓòÉΓòÉ 3.51. _exit - End Process ΓòÉΓòÉΓòÉ
  7742.  
  7743. _exit - End Process 
  7744.  
  7745.  Syntax 
  7746.  
  7747.                     #include <stdlib.h>  /* also in <process.h> */
  7748.                     void _exit(int status);
  7749.  
  7750.  Description 
  7751.  
  7752.           _exit ends the calling process without calling functions registered 
  7753.           by _onexit or atexit. It also does not flush stream buffers or delete 
  7754.           temporary files. You supply the status value as a parameter; the 
  7755.           value 0 typically means a normal exit. 
  7756.  
  7757.  Returns 
  7758.  
  7759.           Although _exit does not return a value, the value is available to the 
  7760.           waiting parent process, if there is one, after the child process 
  7761.           ends.  If no parent process waits for the exiting process, the status 
  7762.           value is lost.  The status value is available through the operating 
  7763.           system batch command IF ERRORLEVEL. 
  7764.  
  7765.  Example Code 
  7766.  
  7767.           This example calls _exit to end the process. Because _exit does not 
  7768.           flush the buffer first, the output from the second printf statement 
  7769.           will not appear. 
  7770.  
  7771.                     #include <stdio.h>
  7772.                     #include <stdlib.h>                      /* You can also use <process.h>      */
  7773.  
  7774.                     char buf[51];
  7775.  
  7776.                     int main(void)
  7777.                     {
  7778.  
  7779.                        /* Make sure the standard output stream is line-buffered even if the       */
  7780.                        /* output is redirected to a file.                                         */
  7781.  
  7782.                        if (0 != setvbuf(stdout, buf, _IOLBF, 50))
  7783.                           printf("The buffering was not set correctly.\n");
  7784.                        printf("This will print out but ...\n");
  7785.                        printf("this will not!");
  7786.                        _exit(EXIT_FAILURE);
  7787.                        return 0;
  7788.  
  7789.                        /****************************************************************************
  7790.                           The output should be:
  7791.  
  7792.                           This will print out but ...
  7793.                        ****************************************************************************/
  7794.                     }
  7795.  
  7796.  Related Information 
  7797.  
  7798.               abort 
  7799.               atexit 
  7800.               execl - _execvpe 
  7801.               exit 
  7802.               _onexit 
  7803.  
  7804.  
  7805. ΓòÉΓòÉΓòÉ 3.52. exp - Calculate Exponential Function ΓòÉΓòÉΓòÉ
  7806.  
  7807. exp - Calculate Exponential Function 
  7808.  
  7809.  Syntax 
  7810.  
  7811.                     #include <math.h>
  7812.                     double exp(double x);
  7813.  
  7814.  Description 
  7815.  
  7816.           exp calculates the exponential function of a floating-point argument 
  7817.           x (ex, where e equals 2.17128128...). 
  7818.  
  7819.  Returns 
  7820.  
  7821.           If an overflow occurs, exp returns HUGE_VAL. If an underflow occurs, 
  7822.           it returns 0. Both overflow and underflow set errno to ERANGE. 
  7823.  
  7824.  Example Code 
  7825.  
  7826.           This example calculates y as the exponential function of x: 
  7827.  
  7828.                     #include <math.h>
  7829.  
  7830.                     int main(void)
  7831.                     {
  7832.                        double x,y;
  7833.  
  7834.                        x = 5.0;
  7835.                        y = exp(x);
  7836.                        printf("exp( %lf ) = %lf\n", x, y);
  7837.                        return 0;
  7838.  
  7839.                        /****************************************************************************
  7840.                           The output should be:
  7841.  
  7842.                           exp( 5.000000 ) = 148.413159
  7843.                        ****************************************************************************/
  7844.                     }
  7845.  
  7846.  Related Information 
  7847.  
  7848.               log 
  7849.               log10 
  7850.  
  7851.  
  7852. ΓòÉΓòÉΓòÉ 3.53. fabs - Calculate Floating-Point Absolute Value ΓòÉΓòÉΓòÉ
  7853.  
  7854. fabs - Calculate Floating-Point Absolute Value 
  7855.  
  7856.  Syntax 
  7857.  
  7858.                     #include <math.h>
  7859.                     double fabs(double x);
  7860.  
  7861.  Description 
  7862.  
  7863.           fabs calculates the absolute value of the floating-point argument x. 
  7864.  
  7865.  Returns 
  7866.  
  7867.           fabs returns the absolute value. There is no error return value. 
  7868.  
  7869.  Example Code 
  7870.  
  7871.           This example calculates y as the absolute value of x: 
  7872.  
  7873.                     #include <math.h>
  7874.  
  7875.                     int main(void)
  7876.                     {
  7877.                        double x,y;
  7878.  
  7879.                        x = -5.6798;
  7880.                        y = fabs(x);
  7881.                        printf("fabs( %lf ) = %lf\n", x, y);
  7882.                        return 0;
  7883.  
  7884.                        /****************************************************************************
  7885.                           The output should be similar to :
  7886.  
  7887.                           fabs( -5.679800 ) = 5.679800
  7888.                        ****************************************************************************/
  7889.                     }
  7890.  
  7891.  Related Information 
  7892.  
  7893.               abs 
  7894.               labs 
  7895.  
  7896.  
  7897. ΓòÉΓòÉΓòÉ 3.54. fclose - Close Stream ΓòÉΓòÉΓòÉ
  7898.  
  7899. fclose - Close Stream 
  7900.  
  7901.  Syntax 
  7902.  
  7903.                     #include <stdio.h>
  7904.                     int fclose(FILE *stream);
  7905.  
  7906.  Description 
  7907.  
  7908.           fclose closes a stream pointed to by stream.  This function flushes 
  7909.           all buffers associated with the stream before closing it.  When it 
  7910.           closes the stream, the function releases any buffers that the system 
  7911.           reserved. When a binary stream is closed, the last record in the file 
  7912.           is padded with null characters (\0) to the end of the record. 
  7913.  
  7914.  Returns 
  7915.  
  7916.           fclose returns 0 if it successfully closes the stream, or EOF if any 
  7917.           errors were detected. 
  7918.  
  7919.           Note:  Once you close a stream with fclose, you must open it again 
  7920.                  before you can use it. 
  7921.  
  7922.  Example Code 
  7923.  
  7924.           This example opens a file fclose.dat for reading as a stream; then it 
  7925.           closes this file. 
  7926.  
  7927.                     #include <stdio.h>
  7928.  
  7929.                     int main(void)
  7930.                     {
  7931.                        FILE *stream;
  7932.  
  7933.                        stream = fopen("fclose.dat", "r");
  7934.                        if (0 != fclose(stream))                               /* Close the stream */
  7935.                            perror("fclose error");
  7936.                        else
  7937.                           printf("File closed successfully.\n");
  7938.                        return 0;
  7939.  
  7940.                        /****************************************************************************
  7941.                           The output should be:
  7942.  
  7943.                           File closed successfully.
  7944.                        ****************************************************************************/
  7945.                     }
  7946.  
  7947.  Related Information 
  7948.  
  7949.               close 
  7950.               _fcloseall 
  7951.               fflush 
  7952.               fopen 
  7953.               freopen 
  7954.  
  7955.  
  7956. ΓòÉΓòÉΓòÉ 3.55. _fcloseall - Close All Open Streams ΓòÉΓòÉΓòÉ
  7957.  
  7958. _fcloseall - Close All Open Streams 
  7959.  
  7960.  Syntax 
  7961.  
  7962.                     #include <stdio.h>
  7963.                     int _fcloseall(void);
  7964.  
  7965.  Description 
  7966.  
  7967.           _fcloseall closes all open streams, except stdin, stdout, and stderr. 
  7968.           It also closes and deletes any temporary files created by tmpfile. 
  7969.  
  7970.           _fcloseall flushes all buffers associated with the streams before 
  7971.           closing them. When it closes streams, it releases the buffers that 
  7972.           the system reserved, but does not release user-allocated buffers. 
  7973.  
  7974.  Returns 
  7975.  
  7976.           _fcloseall returns the total number of streams closed, or EOF if an 
  7977.           error occurs. 
  7978.  
  7979.  Example Code 
  7980.  
  7981.           This example opens a file john for reading as a data stream, and then 
  7982.           closes the file. It closes all other streams except stdin, stdout, 
  7983.           and stderr. 
  7984.  
  7985.                     #include <stdio.h>
  7986.  
  7987.                     #define OUTFILE "temp.out"
  7988.  
  7989.                     int main(void)
  7990.                     {
  7991.                        FILE *stream;
  7992.                        int numclosed;
  7993.  
  7994.                        stream = fopen(OUTFILE, "w");
  7995.                        numclosed = _fcloseall();
  7996.                        printf("Number of files closed = %d\n", numclosed);
  7997.                        remove(OUTFILE);
  7998.                        return 0;
  7999.  
  8000.                        /****************************************************************************
  8001.                           The output should be:
  8002.  
  8003.                           Number of files closed = 1
  8004.                        ****************************************************************************/
  8005.                     }
  8006.  
  8007.  Related Information 
  8008.  
  8009.               close 
  8010.               fclose 
  8011.               fflush 
  8012.               fopen 
  8013.               freopen 
  8014.               tmpfile 
  8015.  
  8016.  
  8017. ΓòÉΓòÉΓòÉ 3.56. _fcvt - Convert Floating-Point to String ΓòÉΓòÉΓòÉ
  8018.  
  8019. _fcvt - Convert Floating-Point to String 
  8020.  
  8021.  Syntax 
  8022.  
  8023.                     #include <stdlib.h>
  8024.                     char *_fcvt(double value, int ndec, int *decptr, int *signptr);
  8025.  
  8026.  Description 
  8027.  
  8028.           _fcvt converts the floating-point number value to a character string. 
  8029.           _fcvt stores the digits of value as a string and adds a null 
  8030.           character (\0). The ndec variable specifies the number of digits to 
  8031.           be stored after the decimal point. 
  8032.  
  8033.           If the number of digits after the decimal point in value exceeds 
  8034.           ndec, _fcvt rounds the correct digit according to the FORTRAN F 
  8035.           format.  If there are fewer than ndec digits of precision, _fcvt pads 
  8036.           the string with zeros. 
  8037.  
  8038.           A FORTRAN F number has the following format: 
  8039.  
  8040.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  8041.                     Γöé                                        Γöé
  8042.                     Γöé       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  8043.                     Γöé           Γöé         Γöé                    Γöé
  8044.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇdigitΓöÇΓö┤ΓöÇΓöÇ.ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇ><                  Γöé
  8045.                     Γöé   Γö£ΓöÇ+ΓöÇΓöñ          ΓööΓöÇdigitΓöÇΓöÿ                     Γöé
  8046.                     Γöé   ΓööΓöÇΓö┤ΓöÇΓöÿ                                   Γöé
  8047.                     Γöé                                        Γöé
  8048.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  8049.  
  8050.           _fcvt stores only digits in the string. You can obtain the position 
  8051.           of the decimal point and the sign of value after the call from decptr 
  8052.           and signptr. decptr points to an integer value giving the position of 
  8053.           the decimal point with respect to the beginning of the string.  A 0 
  8054.           or negative integer value shows that the decimal point lies to the 
  8055.           left of the first digit. 
  8056.  
  8057.           signptr points to an integer showing the sign of value. _fcvt sets 
  8058.           the integer to 0 if value is positive and to a nonzero number if 
  8059.           value is negative. 
  8060.  
  8061.           _fcvt also converts NaN and infinity values to the strings NAN and 
  8062.           INFINITY, respectively. For more information on NaN and infinity 
  8063.           values, see Infinity and NaN Support. 
  8064.  
  8065.           Warning: For each thread, the _ecvt, _fcvt, and _gcvt functions use a 
  8066.           single, dynamically allocated buffer for the conversion. Any 
  8067.           subsequent call that the same thread makes to these functions 
  8068.           destroys the result of the previous call. 
  8069.  
  8070.  Returns 
  8071.  
  8072.           _fcvt returns a pointer to the string of digits. Because of the 
  8073.           limited precision of the double type, no more than 16 decimal digits 
  8074.           are significant in any conversion. If it cannot allocate memory to 
  8075.           perform the conversion, _fcvt returns NULL and sets errno to ENOMEM. 
  8076.  
  8077.  Example Code 
  8078.  
  8079.           This example reads in two floating-point numbers, computes their 
  8080.           product, and prints out only the billions digit of its character 
  8081.           representation.  At most, 16 decimal digits of significance can be 
  8082.           expected. The output given assumes the user enters the values 2000000 
  8083.           and 3000. 
  8084.  
  8085.                     #include <stdio.h>
  8086.                     #include <stdlib.h>
  8087.                     #include <math.h>
  8088.  
  8089.                     int main(void)
  8090.                     {
  8091.                        float x = 2000000;
  8092.                        float y = 3000;
  8093.                        double z;
  8094.                        int w,b,decimal,sign;
  8095.                        char *buffer;
  8096.  
  8097.                        z = x *y;
  8098.                        printf("The product of %e and %e is %g.\n", x, y, z);
  8099.                        w = log10(fabs(z))+1.;
  8100.                        buffer = _fcvt(z, w, &decimal, &sign);
  8101.                        b = decimal-10;
  8102.                        if (b < 0)
  8103.                           printf("Their product does not exceed one billion.\n");
  8104.                        if (b > 15)
  8105.                           printf("The billions digit of their product is insignificant.\n");
  8106.                        if ((b > -1) && (b < 16))
  8107.                           printf("The billions digit of their product is %c.\n", buffer[b]);
  8108.                        return 0;
  8109.  
  8110.                        /****************************************************************************
  8111.                           The output should be:
  8112.  
  8113.                           The product of 2.000000e+06 and 3.000000e+03 is 6e+09.
  8114.                           The billions digit of their product is 6.
  8115.                        ****************************************************************************/
  8116.                     }
  8117.  
  8118.  Related Information 
  8119.  
  8120.               _ecvt 
  8121.               _gcvt 
  8122.               Infinity and NaN Support 
  8123.  
  8124.  
  8125. ΓòÉΓòÉΓòÉ 3.57. fdopen - Associates Input Or Output With File ΓòÉΓòÉΓòÉ
  8126.  
  8127. fdopen - Associates Input Or Output With File 
  8128.  
  8129.  Syntax 
  8130.  
  8131.                     #include <stdio.h>
  8132.                     FILE *fdopen(int handle, char *type);
  8133.  
  8134.  Description 
  8135.  
  8136.           fdopen associates an input or output stream with the file identified 
  8137.           by handle. The type variable is a character string specifying the 
  8138.           type of access requested for the stream. 
  8139.  
  8140.           Mode            Description 
  8141.  
  8142.           r               Create a stream to read a text file. The file pointer 
  8143.                           is set to the beginning of the file. 
  8144.  
  8145.           w               Create a stream to write to a text file. The file 
  8146.                           pointer is set to the beginning of the file. 
  8147.  
  8148.           a               Create a stream to write, in append mode, at the end 
  8149.                           of the text file. The file pointer is set to the end 
  8150.                           of the file. 
  8151.  
  8152.           r+              Create a stream for reading and writing a text file. 
  8153.                           The file pointer is set to the beginning of the file. 
  8154.  
  8155.           w+              Create a stream for reading and writing a text file. 
  8156.                           The file pointer is set to the beginning of the file. 
  8157.  
  8158.           a+              Create a stream for reading or writing, in append 
  8159.                           mode, at the end of the text file. The file pointer 
  8160.                           is set to the end of the file. 
  8161.  
  8162.           rb              Create a stream to read a binary file. The file 
  8163.                           pointer is set to the beginning of the file. 
  8164.  
  8165.           wb              Create a stream to write to a binary file. The file 
  8166.                           pointer is set to the beginning of the file. 
  8167.  
  8168.           ab              Create a stream to write to a binary file in append 
  8169.                           mode. The file pointer is set to the end of the file. 
  8170.  
  8171.           r+b or rb+      Create a stream for reading and writing a binary 
  8172.                           file. The file pointer is set to the beginning of the 
  8173.                           file. 
  8174.  
  8175.           w+b or wb+      Create a stream for reading and writing a binary 
  8176.                           file. The file pointer is set to the beginning of the 
  8177.                           file. 
  8178.  
  8179.           a+b or ab+      Create a stream for reading and writing to a binary 
  8180.                           file in append mode. The file pointer is set to the 
  8181.                           end of the file. 
  8182.  
  8183.           Warning: Use the w, w+, wb, wb+, and w+b modes with care; they can 
  8184.           destroy existing files. 
  8185.  
  8186.           The specified type must be compatible with the access mode you used 
  8187.           to open the file. If the file was opened with the O_APPEND FLAG, the 
  8188.           stream mode must be r, a, a+, rb, ab, a+b, or ab+. 
  8189.  
  8190.           When you open a file with a, a+, ab, a+b, or ab+ as the value of 
  8191.           type, all write operations take place at the end of the file. 
  8192.           Although you can reposition the file pointer using fseek or rewind, 
  8193.           the file pointer always moves back to the end of the file before the 
  8194.           system carries out any write operation. This action prevents you from 
  8195.           writing over existing data. 
  8196.  
  8197.           When you specify any of the types containing +, you can read from and 
  8198.           write to the file, and the file is open for update. However, when 
  8199.           switching from reading to writing or from writing to reading, you 
  8200.           must include an intervening fseek, fsetpos, or rewind operation. You 
  8201.           can specify the current file position with fseek. 
  8202.  
  8203.           In accessing text files, carriage-return line-feed (CR-LF) 
  8204.           combinations are translated into a single line feed (LF) on input; LF 
  8205.           characters are translated to CR-LF combinations on output. Accesses 
  8206.           to binary files suppress all of these translations. (See "Stream 
  8207.           Processing" in the VisualAge C++ Programming Guide for the 
  8208.           differences between text and binary streams.) 
  8209.  
  8210.           If fdopen returns NULL, use close to close the file. If fdopen is 
  8211.           successful, you must use fclose to close the stream and file. 
  8212.  
  8213.  Returns 
  8214.  
  8215.           fdopen returns a pointer to a file structure that can be used to 
  8216.           access the open file. A NULL pointer return value indicates an error. 
  8217.  
  8218.  Example Code 
  8219.  
  8220.           This example opens the file sample.dat and associates a stream with 
  8221.           the file using fdopen. It then reads from the stream into the buffer. 
  8222.  
  8223.                     #include <io.h>
  8224.                     #include <stdio.h>
  8225.                     #include <stdlib.h>
  8226.                     #include <fcntl.h>
  8227.                     #include <string.h>
  8228.  
  8229.                     int main(void)
  8230.                     {
  8231.                        long length;
  8232.                        int fh;
  8233.                        char buffer[20];
  8234.                        FILE *fp;
  8235.  
  8236.                        memset(buffer, '\0', 20);                              /* Initialize buffer*/
  8237.                        printf("\nCreating sample.dat.\n");
  8238.                        system("echo Sample Program > sample.dat");
  8239.                        if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
  8240.                           perror("Unable to open sample.dat");
  8241.                           return EXIT_FAILURE;
  8242.                        }
  8243.                        if (NULL == (fp = fdopen(fh, "r"))) {
  8244.                           perror("fdopen failed");
  8245.                           close(fh);
  8246.                           return EXIT_FAILURE;
  8247.                        }
  8248.                        if (7 != fread(buffer, 1, 7, fp)) {
  8249.                           perror("fread failed");
  8250.                           fclose(fp);
  8251.                           return EXIT_FAILURE;
  8252.                        }
  8253.                        printf("Successfully read from the stream the following:\n%s.\n", buffer);
  8254.                        fclose(fp);
  8255.                        return 0;
  8256.  
  8257.                        /****************************************************************************
  8258.                           The output should be:
  8259.  
  8260.                           Creating sample.dat.
  8261.                           Successfully read from the stream the following:
  8262.                           Sample .
  8263.                        ****************************************************************************/
  8264.                     }
  8265.  
  8266.  Related Information 
  8267.  
  8268.               close 
  8269.               creat 
  8270.               fclose 
  8271.               fopen 
  8272.               fseek 
  8273.               fsetpos 
  8274.               open 
  8275.               rewind 
  8276.               _sopen 
  8277.  
  8278.  
  8279. ΓòÉΓòÉΓòÉ 3.58. feof - Test End-of-File Indicator ΓòÉΓòÉΓòÉ
  8280.  
  8281. feof - Test End-of-File Indicator 
  8282.  
  8283.  Syntax 
  8284.  
  8285.                     #include <stdio.h>
  8286.                     int feof(FILE *stream);
  8287.  
  8288.  Description 
  8289.  
  8290.           feof indicates whether the end-of-file flag is set for the given 
  8291.           stream.  The end-of-file flag is set by several functions to indicate 
  8292.           the end of the file.  The end-of-file flag is cleared by calling 
  8293.           rewind, fsetpos, fseek, or clearerr for this stream. 
  8294.  
  8295.  Returns 
  8296.  
  8297.           feof returns a nonzero value if and only if the EOF flag is set; 
  8298.           otherwise, it returns 0. 
  8299.  
  8300.  Example Code 
  8301.  
  8302.           This example scans the input stream until it reads an end-of-file 
  8303.           character. 
  8304.  
  8305.                     #include <stdio.h>
  8306.  
  8307.                     int main(void)
  8308.                     {
  8309.                        char inp_char;
  8310.                        FILE *stream;
  8311.  
  8312.                        stream = fopen("feof.dat", "r");
  8313.  
  8314.                        /* scan an input stream until an end-of-file character is read             */
  8315.  
  8316.                        while (0 == feof(stream)) {
  8317.                           fscanf(stream, "%c", &inp_char);
  8318.                           printf("<x%x> ", inp_char);
  8319.                        }
  8320.                        fclose(stream);
  8321.                        return 0;
  8322.  
  8323.                        /****************************************************************************
  8324.                           If feof.dat contains : abc defgh
  8325.  
  8326.                           The output should be:
  8327.  
  8328.                           <x61> <x62> <x63> <x20> <x64> <x65> <x66> <x67> <x68>
  8329.                        ****************************************************************************/
  8330.                     }
  8331.  
  8332.  Related Information 
  8333.  
  8334.               clearerr 
  8335.               ferror 
  8336.               fseek 
  8337.               fsetpos 
  8338.               perror 
  8339.               rewind 
  8340.  
  8341.  
  8342. ΓòÉΓòÉΓòÉ 3.59. ferror - Test for Read/Write Errors ΓòÉΓòÉΓòÉ
  8343.  
  8344. ferror - Test for Read/Write Errors 
  8345.  
  8346.  Syntax 
  8347.  
  8348.                     #include <stdio.h>
  8349.                     int ferror(FILE *stream);
  8350.  
  8351.  Description 
  8352.  
  8353.           ferror tests for an error in reading from or writing to the given 
  8354.           stream.  If an error occurs, the error indicator for the stream 
  8355.           remains set until you close stream, call rewind, or call clearerr. 
  8356.  
  8357.  Returns 
  8358.  
  8359.           The ferror function returns a nonzero value to indicate an error on 
  8360.           the given stream.  A return value of 0 means no error has occurred. 
  8361.  
  8362.  Example Code 
  8363.  
  8364.           This example puts data out to a stream and then checks that a write 
  8365.           error has not occurred. 
  8366.  
  8367.                     #include <stdio.h>
  8368.                     #include <stdlib.h>
  8369.  
  8370.                     int main(void)
  8371.                     {
  8372.                        FILE *stream;
  8373.                        char *string = "Important information";
  8374.  
  8375.                        stream = fopen("ferror.dat", "w");
  8376.                        fprintf(stream, "%s\n", string);
  8377.                        if (ferror(stream)) {
  8378.                           printf("write error\n");
  8379.                           clearerr(stream);
  8380.                           return EXIT_FAILURE;
  8381.                        }
  8382.                        else
  8383.                           printf("Data written to a file successfully.\n");
  8384.                        if (fclose(stream))
  8385.                           perror("fclose error");
  8386.                        return 0;
  8387.  
  8388.                        /****************************************************************************
  8389.                           The output should be:
  8390.  
  8391.                           Data written to a file successfully.
  8392.                        ****************************************************************************/
  8393.                     }
  8394.  
  8395.  Related Information 
  8396.  
  8397.               clearerr 
  8398.               feof 
  8399.               fopen 
  8400.               perror 
  8401.               strerror 
  8402.               _strerror 
  8403.  
  8404.  
  8405. ΓòÉΓòÉΓòÉ 3.60. fflush - Write Buffer to File ΓòÉΓòÉΓòÉ
  8406.  
  8407. fflush - Write Buffer to File 
  8408.  
  8409.  Syntax 
  8410.  
  8411.                     #include <stdio.h>
  8412.                     int fflush(FILE *stream);
  8413.  
  8414.  Description 
  8415.  
  8416.           fflush causes the system to empty the buffer associated with the 
  8417.           specified output stream, if possible. If the stream is open for 
  8418.           input, fflush undoes the effect of any ungetc function. The stream 
  8419.           remains open after the call. 
  8420.  
  8421.           If stream is NULL, the system flushes all open streams. 
  8422.  
  8423.           Note:  The system automatically flushes buffers when you close the 
  8424.                  stream, or when a program ends normally without closing the 
  8425.                  stream. 
  8426.  
  8427.  Returns 
  8428.  
  8429.           fflush returns the value 0 if it successfully flushes the buffer. It 
  8430.           returns EOF if an error occurs. 
  8431.  
  8432.  Example Code 
  8433.  
  8434.           This example flushes a stream buffer. 
  8435.  
  8436.                     #include <stdio.h>
  8437.  
  8438.                     int main(void)
  8439.                     {
  8440.                        FILE *stream;
  8441.  
  8442.                        stream = fopen("myfile.dat", "w");
  8443.                        fprintf(stream, "Hello world");
  8444.                        fflush(stream);
  8445.                        fclose(stream);
  8446.                        return 0;
  8447.                     }
  8448.  
  8449.  Related Information 
  8450.  
  8451.               fclose 
  8452.               _flushall 
  8453.               setbuf 
  8454.               ungetc 
  8455.  
  8456.  
  8457. ΓòÉΓòÉΓòÉ 3.61. fgetc - Read a Byte ΓòÉΓòÉΓòÉ
  8458.  
  8459. fgetc - Read a Byte 
  8460.  
  8461.  Syntax 
  8462.  
  8463.                     #include <stdio.h>
  8464.                     int fgetc(FILE *stream);
  8465.  
  8466.  Description 
  8467.  
  8468.           fgetc reads a single byte from the input stream at the current 
  8469.           position and increases the associated file pointer, if any, so that 
  8470.           it points to the next byte. 
  8471.  
  8472.           Note:  fgetc is identical to getc but is always implemented as a 
  8473.                  function call; it is never replaced by a macro. 
  8474.  
  8475.  Returns 
  8476.  
  8477.           fgetc returns the byte read as an integer. An EOF return value 
  8478.           indicates an error or an end-of-file condition.  Use feof or ferror 
  8479.           to determine whether the EOF value indicates an error or the end of 
  8480.           the file. 
  8481.  
  8482.  Example Code 
  8483.  
  8484.           This example gathers a line of input from a stream. 
  8485.  
  8486.                     #include <stdio.h>
  8487.  
  8488.                     #define  MAX_LEN       80
  8489.  
  8490.                     int main(void)
  8491.                     {
  8492.                        FILE *stream;
  8493.                        char buffer[MAX_LEN+1];
  8494.                        int i,ch;
  8495.  
  8496.                        stream = fopen("myfile.dat", "r");
  8497.                        for (i = 0; (i < (sizeof(buffer)-1) && ((ch = fgetc(stream)) != EOF) &&
  8498.                                    (ch != '\n')); i++)
  8499.                           buffer[i] = ch;
  8500.                        buffer[i] = '\0';
  8501.                        if (fclose(stream))
  8502.                           perror("fclose error");
  8503.                        printf("The input line was : %s\n", buffer);
  8504.                        return 0;
  8505.  
  8506.                        /****************************************************************************
  8507.                           If myfile.dat contains: one two three
  8508.  
  8509.                           The output should be:
  8510.  
  8511.                           The input line was : one two three
  8512.                        ****************************************************************************/
  8513.                     }
  8514.  
  8515.  Related Information 
  8516.  
  8517.               feof 
  8518.               ferror 
  8519.               fputc 
  8520.               getc - getchar 
  8521.               _getch - _getche 
  8522.  
  8523.  
  8524. ΓòÉΓòÉΓòÉ 3.62. fgetpos - Get File Position ΓòÉΓòÉΓòÉ
  8525.  
  8526. fgetpos - Get File Position 
  8527.  
  8528.  Syntax 
  8529.  
  8530.                     #include <stdio.h>
  8531.                     int fgetpos(FILE *stream, fpos_t *pos);
  8532.  
  8533.  Description 
  8534.  
  8535.           fgetpos stores the current position of the file pointer associated 
  8536.           with stream into the object pointed to by pos.  The value pointed to 
  8537.           by pos can be used later in a call to fsetpos to reposition the 
  8538.           stream. 
  8539.  
  8540.           Note:  For buffered text streams, fgetpos returns an incorrect file 
  8541.                  position if the file contains new-line characters instead of 
  8542.                  carriage-return line-feed combinations.  Your file would only 
  8543.                  contain new-line characters if you previously used it as a 
  8544.                  binary stream.  To avoid this problem, either continue to 
  8545.                  process the file as a binary stream, or use unbuffered I/O 
  8546.                  operations. 
  8547.  
  8548.  Returns 
  8549.  
  8550.           fgetpos returns 0 if successful. On error, fgetpos returns nonzero 
  8551.           and sets errno to a nonzero value. 
  8552.  
  8553.  Example Code 
  8554.  
  8555.           This example opens the file myfile.dat for reading and stores the 
  8556.           current file pointer position into the variable pos. 
  8557.  
  8558.                     #include <stdio.h>
  8559.  
  8560.                     FILE *stream;
  8561.  
  8562.                     int main(void)
  8563.                     {
  8564.                        int retcode;
  8565.                        fpos_t pos;
  8566.  
  8567.                        stream = fopen("myfile.dat", "rb");
  8568.  
  8569.                         /* The value returned by fgetpos can be used by fsetpos                   */
  8570.                         /* to set the file pointer if 'retcode' is 0                              */
  8571.  
  8572.                        if ( 0 == (retcode = fgetpos(stream, &pos)) )
  8573.                           printf("Current position of file pointer found.\n");
  8574.                        fclose(stream);
  8575.                        return 0;
  8576.  
  8577.                        /****************************************************************************
  8578.                           If myfile.dat exists, the output should be:
  8579.  
  8580.                           Current position of file pointer found.
  8581.                        ****************************************************************************/
  8582.                     }
  8583.  
  8584.  Related Information 
  8585.  
  8586.               fseek 
  8587.               fsetpos 
  8588.               ftell 
  8589.  
  8590.  
  8591. ΓòÉΓòÉΓòÉ 3.63. fgets - Read a String ΓòÉΓòÉΓòÉ
  8592.  
  8593. fgets - Read a String 
  8594.  
  8595.  Syntax 
  8596.  
  8597.                     #include <stdio.h>
  8598.                     char *fgets (char *string, int n, FILE *stream);
  8599.  
  8600.  Description 
  8601.  
  8602.           fgets reads bytes from the current stream position up to and 
  8603.           including the first new-line character (\n), up to the end of the 
  8604.           stream, or until the number of bytes read is equal to n-1, whichever 
  8605.           comes first.  fgets stores the result in string and adds a null 
  8606.           character (\0) to the end of the string.  The string includes the 
  8607.           new-line character, if read.  If n is equal to 1, the string is 
  8608.           empty. 
  8609.  
  8610.  Returns 
  8611.  
  8612.           fgets returns a pointer to the string buffer if successful.  A NULL 
  8613.           return value indicates an error or an end-of-file condition.  Use 
  8614.           feof or ferror to determine whether the NULL value indicates an error 
  8615.           or the end of the file. In either case, the value of the string is 
  8616.           unchanged. 
  8617.  
  8618.  Example Code 
  8619.  
  8620.           This example gets a line of input from a data stream.  The example 
  8621.           reads no more than MAX_LEN - 1 characters, or up to a new-line 
  8622.           character, from the stream. 
  8623.  
  8624.                     #include <stdio.h>
  8625.  
  8626.                     #define  MAX_LEN       100
  8627.  
  8628.                     int main(void)
  8629.                     {
  8630.                        FILE *stream;
  8631.                        char line[MAX_LEN],*result;
  8632.  
  8633.                        stream = fopen("myfile.dat", "rb");
  8634.                        if ((result = fgets(line, MAX_LEN, stream)) != NULL)
  8635.                           printf("The string is %s\n", result);
  8636.                        if (fclose(stream))
  8637.                           perror("fclose error");
  8638.                        return 0;
  8639.  
  8640.                        /****************************************************************************
  8641.                           If myfile.dat contains: This is my data file.
  8642.  
  8643.                           The output should be:
  8644.  
  8645.                           The string is This is my data file.
  8646.                        ****************************************************************************/
  8647.                     }
  8648.  
  8649.  Related Information 
  8650.  
  8651.               feof 
  8652.               ferror 
  8653.               fputs 
  8654.               gets 
  8655.               puts 
  8656.  
  8657.  
  8658. ΓòÉΓòÉΓòÉ 3.64. fgetwc - Read Wide Character from Stream ΓòÉΓòÉΓòÉ
  8659.  
  8660. fgetwc - Read Wide Character from Stream 
  8661.  
  8662.  Syntax 
  8663.  
  8664.                     #include <stdio.h>
  8665.                     #include <wchar.h>
  8666.                     wint_t fgetwc(FILE *stream);
  8667.  
  8668.  Description 
  8669.  
  8670.           fgetwc reads the next multibyte character from the input stream 
  8671.           pointed to by stream, converts it to a wide character, and advances 
  8672.           the associated file position indicator for the stream (if defined). 
  8673.  
  8674.           The behavior of fgetwc is affected by the LC_CTYPE category of the 
  8675.           current locale. If you change the category between subsequent read 
  8676.           operations on the same stream, undefined results can occur. 
  8677.  
  8678.           After calling fgetwc, flush the buffer or reposition the stream 
  8679.           pointer before calling a write function for the stream, unless EOF 
  8680.           has been reached. After a write operation on the stream, flush the 
  8681.           buffer or reposition the stream pointer before calling fgetwc. 
  8682.  
  8683.  Returns 
  8684.  
  8685.           fgetwc returns the next wide character that corresponds to the 
  8686.           multibyte character from the input stream pointed to by stream. If 
  8687.           the stream is at EOF, the EOF indicator for the stream is set and 
  8688.           fgetwc returns WEOF. 
  8689.  
  8690.           If a read error occurs, the error indicator for the stream is set and 
  8691.           fgetwc returns WEOF. If an encoding error occurs (an error converting 
  8692.           the multibyte character into a wide character), fgetwc sets errno to 
  8693.           EILSEQ and returns WEOF. 
  8694.  
  8695.           Use ferror and feof to distinguish between a read error and an EOF. 
  8696.           EOF is only reached when an attempt is made to read past the last 
  8697.           byte of data. Reading up to and including the last byte of data does 
  8698.           not turn on the EOF indicator. 
  8699.  
  8700.  Example Code 
  8701.  
  8702.           This example opens a file, reads in each wide character using fgetwc, 
  8703.           and prints out the characters. 
  8704.  
  8705.                     #include <stdio.h>
  8706.                     #include <wchar.h>
  8707.                     #include <errno.h>
  8708.  
  8709.                     int main(void)
  8710.                     {
  8711.                        FILE   *stream;
  8712.                        wint_t wc;
  8713.  
  8714.                        if (NULL == (stream = fopen("fgetwc.dat", "r"))) {
  8715.                           printf("Unable to open: \"fgetwc.dat\"\n");
  8716.                           exit(1);
  8717.                        }
  8718.  
  8719.                        errno = 0;
  8720.                        while (WEOF != (wc = fgetwc(stream)))
  8721.                           printf("wc = %lc\n", wc);
  8722.  
  8723.                        if (EILSEQ == errno) {
  8724.                           printf("An invalid wide character was encountered.\n");
  8725.                           exit(1);
  8726.                        }
  8727.                        fclose(stream);
  8728.                        return 0;
  8729.  
  8730.                        /****************************************************************************
  8731.                           Assuming the file fgetwc.dat contains:
  8732.  
  8733.                           Hello world!
  8734.  
  8735.                           The output should be similar to:
  8736.  
  8737.                           wc = H
  8738.                           wc = e
  8739.                           wc = l
  8740.                           wc = l
  8741.                           wc = o
  8742.                           :
  8743.                        ****************************************************************************/
  8744.                     }
  8745.  
  8746.  Related Information 
  8747.  
  8748.               fgetc 
  8749.               fgetws 
  8750.               fputwc 
  8751.               _getch - _getche 
  8752.  
  8753.  
  8754. ΓòÉΓòÉΓòÉ 3.65. fgetws - Read Wide-Character String from Stream ΓòÉΓòÉΓòÉ
  8755.  
  8756. fgetws - Read Wide-Character String from Stream 
  8757.  
  8758.  Syntax 
  8759.  
  8760.                     #include <stdio.h>
  8761.                     #include <wchar.h>
  8762.                     wchar_t *fgetws(wchar_t *wcs, int n, FILE *stream);
  8763.  
  8764.  Description 
  8765.  
  8766.           fgetws reads wide characters from the stream into the array pointed 
  8767.           to by wcs. At most, n - 1 wide characters are read. fgetws stops 
  8768.           reading characters after WEOF, or after it reads a new-line wide 
  8769.           character (which is retained). It adds a null wide character 
  8770.           immediately after the last wide character read into the array. 
  8771.  
  8772.           fgetws advances the file position unless there is an error. If an 
  8773.           error occurs, the file position is undefined. 
  8774.  
  8775.           The behavior of fgetws is affected by the LC_CTYPE category of the 
  8776.           current locale. If you change the category between subsequent read 
  8777.           operations on the same stream, undefined results can occur. 
  8778.  
  8779.           After calling fgetws, flush the buffer or reposition the stream 
  8780.           pointer before calling a write function for the stream, unless WEOF 
  8781.           has been reached. After a write operation on the stream, flush the 
  8782.           buffer or reposition the stream pointer before calling fgetws. 
  8783.  
  8784.  Returns 
  8785.  
  8786.           If successful, fgetws returns a pointer to the wide-character string 
  8787.           wcs. If WEOF is encountered before any wide characters have been read 
  8788.           into wcs, the contents of wcs remain unchanged and fgetws returns a 
  8789.           null pointer. If WEOF is reached after data has already been read 
  8790.           into the string buffer, fgetws returns a pointer to the string buffer 
  8791.           to indicate success. A subsequent call would return NULL because WEOF 
  8792.           would be reached without any data being read. 
  8793.  
  8794.           If a read error occurs, the contents of wcs are indeterminate and 
  8795.           fgetws returns NULL. If an encoding error occurs (in converting a 
  8796.           wide character to a multibyte character), fgetws sets errno to EILSEQ 
  8797.           and returns NULL. 
  8798.  
  8799.           If n equals 1, the wcs buffer has only room for the terminating null 
  8800.           character and nothing is read from the stream. (Such an operation is 
  8801.           still considered a read operation, so it cannot immediately follow a 
  8802.           write operation unless the buffer is flushed or the stream pointer 
  8803.           repositioned first.) 
  8804.  
  8805.           If n is greater than 1, fgetws fails only if an I/O error occurs or 
  8806.           if WEOF is reached before data is read from the stream. Use ferror 
  8807.           and feof to distinguish between a read error and a WEOF. WEOF is only 
  8808.           reached when an attempt is made to read past the last byte of data. 
  8809.           Reading up to and including the last byte of data does not turn on 
  8810.           the WEOF indicator. 
  8811.  
  8812.  Example Code 
  8813.  
  8814.           This example opens a file, reads in the file contents using fgetws, 
  8815.           then prints the file contents. 
  8816.  
  8817.                     #include <errno.h>
  8818.                     #include <stdio.h>
  8819.                     #include <wchar.h>
  8820.  
  8821.                     int main(void)
  8822.                     {
  8823.                        FILE    *stream;
  8824.                        wchar_t  wcs[100];
  8825.  
  8826.                        if (NULL == (stream = fopen("fgetws.dat", "r"))) {
  8827.                           printf("Unable to open: \"fgetws.dat\"\n");
  8828.                           exit(1);
  8829.                        }
  8830.  
  8831.                        errno = 0;
  8832.                        if (NULL == fgetws(wcs, 100, stream)) {
  8833.                           if (EILSEQ == errno) {
  8834.                              printf("An invalid wide character was encountered.\n");
  8835.                              exit(1);
  8836.                           }
  8837.                           else if (feof(stream))
  8838.                                   printf("End of file reached.\n");
  8839.                                else
  8840.                                   perror("Read error.\n");
  8841.                        }
  8842.                        printf("wcs = \"%ls\"\n", wcs);
  8843.                        fclose(stream);
  8844.                        return 0;
  8845.  
  8846.                        /****************************************************************************
  8847.                           Assuming the file fgetws.dat contains:
  8848.  
  8849.                           This test string should not return -1
  8850.  
  8851.                           The output should be similar to:
  8852.  
  8853.                           wcs = "This test string should not return -1"
  8854.                        ****************************************************************************/
  8855.                     }
  8856.  
  8857.  Related Information 
  8858.  
  8859.               fgets 
  8860.               fgetwc 
  8861.               fputws. 
  8862.  
  8863.  
  8864. ΓòÉΓòÉΓòÉ 3.66. _filelength - Determine File Length ΓòÉΓòÉΓòÉ
  8865.  
  8866. _filelength - Determine File Length 
  8867.  
  8868.  Syntax 
  8869.  
  8870.                     #include <io.h>
  8871.                     long _filelength(int handle);
  8872.  
  8873.  Description 
  8874.  
  8875.           _filelength returns the length, in bytes, of the file associated with 
  8876.           handle. The length of the file will be correct even if you have the 
  8877.           handle opened and have appended data to the file. 
  8878.  
  8879.  Returns 
  8880.  
  8881.           A return value of -1L indicates an error, and errno is set to one of 
  8882.           the following values:  compact break=fit. 
  8883.  
  8884.           Value        Meaning 
  8885.  
  8886.           EBADF        The file handle is incorrect or the mode specified does 
  8887.                        not match the mode you opened the file with. 
  8888.  
  8889.           EOS2ERR      The call to the operating system was not successful. 
  8890.  
  8891.  Example Code 
  8892.  
  8893.           This example opens a file and tries to determine the current length 
  8894.           of the file using _filelength. 
  8895.  
  8896.                     #include <io.h>
  8897.                     #include <stdio.h>
  8898.                     #include <stdlib.h>
  8899.                     #include <fcntl.h>
  8900.  
  8901.                     int main(void)
  8902.                     {
  8903.                        long length;
  8904.                        int fh;
  8905.  
  8906.                        printf("\nCreating sample.dat.\n");
  8907.                        system("echo Sample Program > sample.dat");
  8908.                        if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
  8909.                           printf("Unable to open sample.dat.\n");
  8910.                           return EXIT_FAILURE;
  8911.                        }
  8912.                        if (-1 == (length = _filelength(fh))) {
  8913.                           printf("Unable to determine length of sample.dat.\n");
  8914.                           return EXIT_FAILURE;
  8915.                        }
  8916.                        printf("Current length of sample.dat is %d.\n", length);
  8917.                        close(fh);
  8918.                        return 0;
  8919.  
  8920.                        /****************************************************************************
  8921.                           The output should be:
  8922.  
  8923.                           Creating sample.dat.
  8924.                           Current length of sample.dat is 17.
  8925.                        ****************************************************************************/
  8926.                     }
  8927.  
  8928.  Related Information 
  8929.  
  8930.               chsize 
  8931.               __eof 
  8932.  
  8933.  
  8934. ΓòÉΓòÉΓòÉ 3.67. fileno - Determine File Handle ΓòÉΓòÉΓòÉ
  8935.  
  8936. fileno - Determine File Handle 
  8937.  
  8938.  Syntax 
  8939.  
  8940.                     #include <stdio.h>
  8941.                     int fileno(FILE *stream);
  8942.  
  8943.  Description 
  8944.  
  8945.           fileno determines the file handle currently associated with stream. 
  8946.  
  8947.           Note:  In earlier releases of C Set ++, fileno began with an 
  8948.                  underscore (_fileno). Because it is defined by the X/Open 
  8949.                  standard, the underscore has been removed. For compatibility, 
  8950.                  The Developer's Toolkit will map _fileno to fileno for you. 
  8951.  
  8952.  Returns 
  8953.  
  8954.           fileno returns the file handle. If the function fails, the return 
  8955.           value is -1 and the errno variable may be set to one of the following 
  8956.           values:  compact break=fit. 
  8957.  
  8958.           Value          Meaning 
  8959.  
  8960.           ENULLFCB       The input stream is NULL. 
  8961.  
  8962.           EBADTYPE       The input stream file is not a stream file. 
  8963.  
  8964.           The result is undefined if stream does not specify an open file. 
  8965.  
  8966.  Example Code 
  8967.  
  8968.           This example determines the file handle of the stderr data stream. 
  8969.  
  8970.                     #include <stdio.h>
  8971.  
  8972.                     int main(void)
  8973.                     {
  8974.                        int result;
  8975.  
  8976.                        result = 0xFFFF & fileno(stderr);
  8977.                        printf("The file handle associated with stderr is %d.\n", result);
  8978.                        return 0;
  8979.  
  8980.                        /****************************************************************************
  8981.                           The output should be:
  8982.  
  8983.                           The file handle associated with stderr is 2.
  8984.                        ****************************************************************************/
  8985.                     }
  8986.  
  8987.  Related Information 
  8988.  
  8989.               dup 
  8990.               dup2 
  8991.               fopen 
  8992.               freopen 
  8993.               isatty 
  8994.               open 
  8995.  
  8996.  
  8997. ΓòÉΓòÉΓòÉ 3.68. floor - Integer <= Argument ΓòÉΓòÉΓòÉ
  8998.  
  8999. floor - Integer <= Argument 
  9000.  
  9001.  Syntax 
  9002.  
  9003.                     #include <math.h>
  9004.                     double floor(double x);
  9005.  
  9006.  Description 
  9007.  
  9008.           floor calculates the largest integer that is less than or equal to x. 
  9009.  
  9010.  Returns 
  9011.  
  9012.           floor returns the floating-point result as a double value. 
  9013.  
  9014.           The result of floor cannot have a range error. 
  9015.  
  9016.  Example Code 
  9017.  
  9018.           This example assigns y value of the largest integer less than or 
  9019.           equal to 2.8 and z the value of the largest integer less than or 
  9020.           equal to -2.8. 
  9021.  
  9022.                     #include <math.h>
  9023.  
  9024.                     int main(void)
  9025.                     {
  9026.                        double y,z;
  9027.  
  9028.                        y = floor(2.8);
  9029.                        z = floor(-2.8);
  9030.                        printf("floor(  2.8 ) = %lf\n", y);
  9031.                        printf("floor( -2.8 ) = %lf\n", z);
  9032.                        return 0;
  9033.  
  9034.                        /****************************************************************************
  9035.                           The output should be:
  9036.  
  9037.                           floor(  2.8 ) = 2.000000
  9038.                           floor( -2.8 ) = -3.000000
  9039.                        ****************************************************************************/
  9040.                     }
  9041.  
  9042.  Related Information 
  9043.  
  9044.               ceil 
  9045.               fmod 
  9046.  
  9047.  
  9048. ΓòÉΓòÉΓòÉ 3.69. _flushall - Write Buffers to Files ΓòÉΓòÉΓòÉ
  9049.  
  9050. _flushall - Write Buffers to Files 
  9051.  
  9052.  Syntax 
  9053.  
  9054.                     #include <stdio.h>
  9055.                     int _flushall(void);
  9056.  
  9057.  Description 
  9058.  
  9059.           _flushall causes the system to write to file the contents of all 
  9060.           buffers associated with open output streams (including stdin, stdout, 
  9061.           and stderr). It clears all buffers associated with open input streams 
  9062.           of their current contents. The next read operation, if there is one, 
  9063.           reads new data from the input files into the buffers. All streams 
  9064.           remain open after the call. 
  9065.  
  9066.           For portability, use the ANSI/ISO function fflush instead of 
  9067.           _flushall. 
  9068.  
  9069.  Returns 
  9070.  
  9071.           _flushall returns the number of open streams of input and output. If 
  9072.           an error occurs, _flushall returns EOF. 
  9073.  
  9074.  Example Code 
  9075.  
  9076.           In this example, _flushall completes any pending input or output on 
  9077.           all streams by flushing all buffers. 
  9078.  
  9079.                     #include <stdio.h>
  9080.  
  9081.                     int main(void)
  9082.                     {
  9083.                        int i,numflushed;
  9084.                        char buffer1[5] =  { 1,2,3,4 };
  9085.                        char buffer2[5] =  { 5,6,7,8 };
  9086.                        char *file1 = "file1.dat";
  9087.                        char *file2 = "file2.dat";
  9088.                        FILE *stream1,*stream2;
  9089.  
  9090.                        stream1 = fopen(file1, "a+");
  9091.                        stream2 = fopen(file2, "a+");
  9092.                        for (i = 0; i <= sizeof(buffer1); i++) {
  9093.                           fputc(buffer1[i], stream1);
  9094.                           fputc(buffer2[i], stream2);
  9095.                        }
  9096.                        numflushed = _flushall();                   /* all streams flushed          */
  9097.                        printf("Number of files flushed = %d\n", numflushed);
  9098.                        fclose(stream1);
  9099.                        fclose(stream2);
  9100.                        return 0;
  9101.  
  9102.                        /****************************************************************************
  9103.                           The output should be:
  9104.  
  9105.                           Number of files flushed = 5
  9106.                        ****************************************************************************/
  9107.                     }
  9108.  
  9109.  Related Information 
  9110.  
  9111.               close 
  9112.               fclose 
  9113.               fflush 
  9114.  
  9115.  
  9116. ΓòÉΓòÉΓòÉ 3.70. fmod - Calculate Floating-Point Remainder ΓòÉΓòÉΓòÉ
  9117.  
  9118. fmod - Calculate Floating-Point Remainder 
  9119.  
  9120.  Syntax 
  9121.  
  9122.                     #include <math.h>
  9123.                     double fmod(double x, double y);
  9124.  
  9125.  Description 
  9126.  
  9127.           fmod calculates the floating-point remainder of x/y. The absolute 
  9128.           value of the result is always less than the absolute value of y. The 
  9129.           result will have the same sign as x. 
  9130.  
  9131.  Returns 
  9132.  
  9133.           fmod returns the floating-point remainder of x/y. If y is zero or if 
  9134.           x/y causes an overflow, fmod returns 0. 
  9135.  
  9136.  Example Code 
  9137.  
  9138.           This example computes z as the remainder of x/y; here, x/y is -3 with 
  9139.           a remainder of -1. 
  9140.  
  9141.                     #include <math.h>
  9142.  
  9143.                     int main(void)
  9144.                     {
  9145.                        double x,y,z;
  9146.  
  9147.                        x = -10.0;
  9148.                        y = 3.0;
  9149.                        z = fmod(x, y);                                        /* z = -1.0         */
  9150.                        printf("fmod( %lf, %lf) = %lf\n", x, y, z);
  9151.                        return 0;
  9152.  
  9153.                        /****************************************************************************
  9154.                           The output should be:
  9155.  
  9156.                           fmod( -10.000000, 3.000000) = -1.000000
  9157.                        ****************************************************************************/
  9158.                     }
  9159.  
  9160.  Related Information 
  9161.  
  9162.               ceil 
  9163.               fabs 
  9164.               floor 
  9165.  
  9166.  
  9167. ΓòÉΓòÉΓòÉ 3.71. fopen - Open Files ΓòÉΓòÉΓòÉ
  9168.  
  9169. fopen - Open Files 
  9170.  
  9171.  Syntax 
  9172.  
  9173.                     #include <stdio.h>
  9174.                     FILE *fopen(const char *filename, const char *mode);
  9175.  
  9176.  Description 
  9177.  
  9178.           fopen opens the file specified by filename. mode is a character 
  9179.           string specifying the type of access requested for the file. The mode 
  9180.           variable contains one positional parameter followed by optional 
  9181.           keyword parameters. 
  9182.  
  9183.           The possible values for the positional parameters are: 
  9184.  
  9185.           Mode            Description 
  9186.           r               Open a text file for reading.  The file must exist. 
  9187.           w               Create a text file for writing. If the given file 
  9188.                           exists, its contents are destroyed. 
  9189.           a               Open a text file in append mode for writing at the 
  9190.                           end of the file. fopen creates the file if it does 
  9191.                           not exist. 
  9192.           r+              Open a text file for both reading and writing.  The 
  9193.                           file must exist. 
  9194.           w+              Create a text file for both reading and writing. If 
  9195.                           the given file exists, its contents are destroyed. 
  9196.           a+              Open a text file in append mode for reading or 
  9197.                           updating at the end of the file.  fopen creates the 
  9198.                           file if it does not exist. 
  9199.           rb              Open a binary file for reading.  The file must exist. 
  9200.           wb              Create an empty binary file for writing. If the file 
  9201.                           exists, its contents are destroyed. 
  9202.           ab              Open a binary file in append mode for writing at the 
  9203.                           end of the file. fopen creates the file if it does 
  9204.                           not exist. 
  9205.           r+b or rb+      Open a binary file for both reading and writing. The 
  9206.                           file must exist. 
  9207.           w+b or wb+      Create an empty binary file for both reading and 
  9208.                           writing. If the file exists, its contents will be 
  9209.                           destroyed. 
  9210.           a+b or ab+      Open a binary file in append mode for writing at the 
  9211.                           end of the file.  fopen creates the file if it does 
  9212.                           not exist. 
  9213.  
  9214.           Warning: Use the w, w+, wb, w+b, and wb+ parameters with care;  data 
  9215.           in existing files of the same name will be lost. 
  9216.  
  9217.           Text files contain printable characters and control characters 
  9218.           organized into lines. Each line ends with a new-line character, 
  9219.           except for the last line, which does not require one. The system may 
  9220.           insert or convert control characters in an output text stream. 
  9221.  
  9222.           Note:  Data output to a text stream may not compare as equal to the 
  9223.                  same data on input. 
  9224.  
  9225.           Binary files contain a series of characters.  For binary files, the 
  9226.           system does not translate control characters on input or output. 
  9227.  
  9228.           When you open a file with a, a+, ab, a+b or ab+ mode, all write 
  9229.           operations take place at the end of the file.  Although you can 
  9230.           reposition the file pointer using fseek or rewind, the write 
  9231.           functions move the file pointer back to the end of the file before 
  9232.           they carry out any operation. This action prevents you from 
  9233.           overwriting existing data. 
  9234.  
  9235.           When you specify the update mode (using + in the second or third 
  9236.           position), you can both read from and write to the file.  However, 
  9237.           when switching between reading and writing, you must include an 
  9238.           intervening positioning function such as fseek, fsetpos, rewind, or 
  9239.           fflush.  Output may immediately follow input if the end-of-file was 
  9240.           detected. 
  9241.  
  9242.           The keyword parameters are: 
  9243.  
  9244.           blksize=value  Specifies the maximum length, in bytes, of a physical 
  9245.                          block of records. For fixed-length records, the 
  9246.                          maximum size is 32760 bytes.  For variable-length 
  9247.                          records, the maximum is 32756. The default buffer size 
  9248.                          is 4096 bytes. 
  9249.  
  9250.           lrecl=value    Specifies the length, in bytes, for fixed-length 
  9251.                          records and the maximum length for variable-length 
  9252.                          records. For fixed-length records, the maximum length 
  9253.                          is 32760 bytes.  For variable-length records, the 
  9254.                          maximum is 32756. If the value of LRECL is larger than 
  9255.                          the value of BLKSIZE, the LRECL value is ignored. 
  9256.  
  9257.           recfm=value    value can be: 
  9258.  
  9259.                          F         fixed-length, unblocked records 
  9260.                          V         variable-length, unblocked records The 
  9261.                          default for The Developer's Toolkit compiler is 
  9262.                          fixed-length record format. 
  9263.  
  9264.           type=value     value can be: 
  9265.  
  9266.                          memory  This parameter identifies this file as a 
  9267.                          memory file that is accessible only from C programs. 
  9268.                          This is the default. 
  9269.  
  9270.           The Developer's Toolkit compiler does not support record I/O. 
  9271.  
  9272.           fopen generally fails if parameters are mismatched. 
  9273.  
  9274.           The file attributes can be altered only if the open mode specified 
  9275.           with the fopen function is one of the write modes (w, w+, wb, or 
  9276.           wb+). The system deletes the existing file and creates a new file 
  9277.           with the attributes specified in fopen. 
  9278.  
  9279.  Returns 
  9280.  
  9281.           fopen returns a pointer to a file structure that can be used to 
  9282.           access the open file. A NULL pointer return value indicates an error. 
  9283.  
  9284.  Example Code 
  9285.  
  9286.           This example attempts to open a file for reading. 
  9287.  
  9288.                     #include <stdio.h>
  9289.  
  9290.                     int main(void)
  9291.                     {
  9292.                        FILE *stream;
  9293.  
  9294.                        if (NULL == (stream = fopen("myfile.dat", "r")))
  9295.                           printf("Could not open data file\n");
  9296.                        else
  9297.                           fclose(stream);
  9298.  
  9299.                         /* The following call opens a fixed record length file                    */
  9300.                         /* for reading and writing in record mode.                                */
  9301.  
  9302.                        if (NULL == (stream = fopen("myfile.dat",
  9303.                                             "rb+, lrecl=80, blksize=240, recfm=f, type=record")))
  9304.                           printf("Could not open data file\n");
  9305.                        else
  9306.                           fclose(stream);
  9307.                        return 0;
  9308.  
  9309.                        /****************************************************************************
  9310.                           The output should be:
  9311.  
  9312.                           Could not open data file
  9313.                        ****************************************************************************/
  9314.                     }
  9315.  
  9316.  Related Information 
  9317.  
  9318.               creat 
  9319.               fclose 
  9320.               fflush 
  9321.               fread 
  9322.               freopen 
  9323.               open 
  9324.               _sopen 
  9325.               fseek 
  9326.               fsetpos 
  9327.               fwrite 
  9328.               rewind 
  9329.  
  9330.  
  9331. ΓòÉΓòÉΓòÉ 3.72. fprintf - Write Formatted Data to a Stream ΓòÉΓòÉΓòÉ
  9332.  
  9333. fprintf - Write Formatted Data to a Stream 
  9334.  
  9335.  Syntax 
  9336.  
  9337.                     #include <stdio.h>
  9338.                     int fprintf(FILE *stream, const char *format-string, argument-list);
  9339.  
  9340.  Description 
  9341.  
  9342.           fprintf formats and writes a series of characters and values to the 
  9343.           output stream. fprintf converts each entry in argument-list, if any, 
  9344.           and writes to the stream according to the corresponding format 
  9345.           specification in the format-string. 
  9346.  
  9347.           The format-string has the same form and function as the format-string 
  9348.           argument for printf. See printf for a description of the 
  9349.           format-string and the argument list. 
  9350.  
  9351.           In extended mode, fprintf also converts floating-point values of NaN 
  9352.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  9353.           "infinity". The case and sign of the string is determined by the 
  9354.           format specifiers.  See Infinity and NaN Support for more information 
  9355.           on infinity and NaN values. 
  9356.  
  9357.  Returns 
  9358.  
  9359.           fprintf returns the number of bytes printed or a negative value if an 
  9360.           output error occurs. 
  9361.  
  9362.  Example Code 
  9363.  
  9364.           This example sends a line of asterisks for each integer in the array 
  9365.           count to the file myfile.  The number of asterisks printed on each 
  9366.           line corresponds to an integer in the array. 
  9367.  
  9368.                     #include <stdio.h>
  9369.  
  9370.                     int count[10] =  { 1, 5, 8, 3, 0, 3, 5, 6, 8, 10 } ;
  9371.  
  9372.                     int main(void)
  9373.                     {
  9374.                        int i,j;
  9375.                        FILE *stream;
  9376.  
  9377.                        stream = fopen("myfile.dat", "w");
  9378.  
  9379.                                        /* Open the stream for writing                             */
  9380.  
  9381.                        for (i = 0; i < sizeof(count)/sizeof(count[0]); i++) {
  9382.                           for (j = 0; j < count[i]; j++)
  9383.                              fprintf(stream, "*");
  9384.  
  9385.                                        /* Print asterisk                                          */
  9386.  
  9387.                           fprintf(stream, "\n");
  9388.  
  9389.                                        /* Move to the next line                                   */
  9390.  
  9391.                        }
  9392.                        fclose(stream);
  9393.                        return 0;
  9394.  
  9395.                        /****************************************************************************
  9396.                           The output data file myfile.dat should contain:
  9397.  
  9398.                           *
  9399.                           *****
  9400.                           ********
  9401.                           ***
  9402.  
  9403.                           ***
  9404.                           *****
  9405.                           ******
  9406.                           ********
  9407.                           **********
  9408.                        ****************************************************************************/
  9409.                     }
  9410.  
  9411.  Related Information 
  9412.  
  9413.               _cprintf 
  9414.               fscanf 
  9415.               printf 
  9416.               sprintf 
  9417.               vfprintf 
  9418.               vprintf 
  9419.               vsprintf 
  9420.               Infinity and NaN Support 
  9421.  
  9422.  
  9423. ΓòÉΓòÉΓòÉ 3.73. fputc - Write a Byte ΓòÉΓòÉΓòÉ
  9424.  
  9425. fputc - Write a Byte 
  9426.  
  9427.  Syntax 
  9428.  
  9429.                     #include <stdio.h>
  9430.                     int fputc(int c, FILE *stream);
  9431.  
  9432.  Description 
  9433.  
  9434.           fputc converts c to an unsigned char and then writes c to the output 
  9435.           stream at the current position and advances the file position 
  9436.           appropriately. If the stream is opened with one of the append modes, 
  9437.           the character is appended to the end of the stream. 
  9438.  
  9439.           fputc is identical to putc is always implemented as a function call; 
  9440.           it is never replaced by a macro. 
  9441.  
  9442.  Returns 
  9443.  
  9444.           fputc returns the byte written.  A return value of EOF indicates an 
  9445.           error. 
  9446.  
  9447.  Example Code 
  9448.  
  9449.           This example writes the contents of buffer to a file called 
  9450.           myfile.dat. 
  9451.  
  9452.           Note:  Because the output occurs as a side effect within the second 
  9453.                  expression of the for statement, the statement body is null. 
  9454.  
  9455.                     #include <stdio.h>
  9456.                     #include <stdlib.h>
  9457.  
  9458.                     #define  NUM_ALPHA     26
  9459.  
  9460.                     int main(void)
  9461.                     {
  9462.                        FILE *stream;
  9463.                        int i;
  9464.                        int ch;
  9465.  
  9466.                        /* Don't forget the NULL char at the end of the string!                    */
  9467.  
  9468.                        char buffer[NUM_ALPHA+1] = "abcdefghijklmnopqrstuvwxyz";
  9469.  
  9470.                        if ((stream = fopen("myfile.dat", "w")) != NULL) {
  9471.  
  9472.                          /* Put buffer into file                                                  */
  9473.  
  9474.                           for (i = 0; (i < sizeof(buffer)) && ((ch = fputc(buffer[i], stream)) !=
  9475.                              EOF); ++i)
  9476.                              ;
  9477.                           fclose(stream);
  9478.                           return 0;
  9479.                        }
  9480.                        else
  9481.                           perror("Error opening myfile.dat");
  9482.                        return EXIT_FAILURE;
  9483.  
  9484.                        /****************************************************************************
  9485.                           The output data file myfile.dat should contain:
  9486.  
  9487.                           abcdefghijklmnopqrstuvwxyz
  9488.                        ****************************************************************************/
  9489.                     }
  9490.  
  9491.  Related Information 
  9492.  
  9493.               fgetc 
  9494.               putc - putchar 
  9495.               _putch 
  9496.  
  9497.  
  9498. ΓòÉΓòÉΓòÉ 3.74. fputs - Write String ΓòÉΓòÉΓòÉ
  9499.  
  9500. fputs - Write String 
  9501.  
  9502.  Syntax 
  9503.  
  9504.                     #include <stdio.h>
  9505.                     int fputs(const char *string, FILE *stream);
  9506.  
  9507.  Description 
  9508.  
  9509.           fputs copies string to the output stream at the current position.  It 
  9510.           does not copy the null character (\0) at the end of the string. 
  9511.  
  9512.  Returns 
  9513.  
  9514.           fputs returns EOF if an error occurs; otherwise, it returns a 
  9515.           non-negative value. 
  9516.  
  9517.  Example Code 
  9518.  
  9519.           This example writes a string to a stream. 
  9520.  
  9521.                     #include <stdio.h>
  9522.  
  9523.                     #define  NUM_ALPHA     26
  9524.  
  9525.                     int main(void)
  9526.                     {
  9527.                        FILE *stream;
  9528.                        int num;
  9529.  
  9530.                        /* Do not forget that the '\0' char occupies one character                 */
  9531.  
  9532.                        static char buffer[NUM_ALPHA+1] = "abcdefghijklmnopqrstuvwxyz";
  9533.  
  9534.                        if ((stream = fopen("myfile.dat", "w")) != NULL) {
  9535.  
  9536.                           /* Put buffer into file                                                 */
  9537.  
  9538.                           if ((num = fputs(buffer, stream)) != EOF) {
  9539.  
  9540.                             /* Note that fputs() does not copy the \0 character                   */
  9541.  
  9542.                              printf("Total number of characters written to file = %i\n", num);
  9543.                              fclose(stream);
  9544.                           }
  9545.                           else                                                /* fputs failed     */
  9546.                              perror("fputs failed");
  9547.                        }
  9548.                        else
  9549.                           perror("Error opening myfile.dat");
  9550.                        return 0;
  9551.  
  9552.                        /****************************************************************************
  9553.                           The output should be:
  9554.  
  9555.                           Total number of characters written to file = 26
  9556.                        ****************************************************************************/
  9557.                     }
  9558.  
  9559.  Related Information 
  9560.  
  9561.               _cputs 
  9562.               fgets 
  9563.               gets 
  9564.               puts 
  9565.  
  9566.  
  9567. ΓòÉΓòÉΓòÉ 3.75. fputwc - Write Wide Character ΓòÉΓòÉΓòÉ
  9568.  
  9569. fputwc - Write Wide Character 
  9570.  
  9571.  Syntax 
  9572.  
  9573.                     #include <stdio.h>
  9574.                     #include <wchar.h>
  9575.                     wint_t fputwc(wchar_t wc, FILE *stream);
  9576.  
  9577.  Description 
  9578.  
  9579.           fputwc converts the wide character wc to a multibyte character and 
  9580.           writes it to the output stream pointed to by stream at the current 
  9581.           position. It also advances the file position indicator appropriately. 
  9582.           If the file cannot support positioning requests, or if the stream was 
  9583.           opened with append mode, the character is appended to the stream. 
  9584.  
  9585.           The behavior of fputwc is affected by the LC_CTYPE category of the 
  9586.           current locale. If you change the category between subsequent 
  9587.           operations on the same stream, undefined results can occur. 
  9588.  
  9589.           After calling fputwc, flush the buffer or reposition the stream 
  9590.           pointer before calling a read function for the stream. After reading 
  9591.           from the stream, flush the buffer or reposition the stream pointer 
  9592.           before calling fputwc, unless EOF has been reached. 
  9593.  
  9594.  Returns 
  9595.  
  9596.           fputwc returns the wide character written. If a write error occurs, 
  9597.           the error indicator for the stream is set and fputwc returns WEOF. If 
  9598.           an encoding error occurs during conversion from wide character to a 
  9599.           multibyte character, fputwc sets errno to EILSEQ and returns WEOF. 
  9600.  
  9601.  Example Code 
  9602.  
  9603.           This example opens a file and uses fputwc to write wide characters to 
  9604.           the file. 
  9605.  
  9606.                     #include <stdio.h>
  9607.                     #include <wchar.h>
  9608.                     #include <errno.h>
  9609.  
  9610.                     int main(void)
  9611.                     {
  9612.                        FILE    *stream;
  9613.                        wchar_t *wcs = L"A character string.";
  9614.                        int     i;
  9615.  
  9616.                        if (NULL == (stream = fopen("fputwc.out", "w"))) {
  9617.                           printf("Unable to open: \"fputwc.out\".\n");
  9618.                           exit(1);
  9619.                        }
  9620.  
  9621.                        for (i = 0; wcs[i] != L'\0'; i++) {
  9622.                           errno = 0;
  9623.                           if (WEOF == fputwc(wcs[i], stream)) {
  9624.                              printf("Unable to fputwc() the wide character.\n"
  9625.                                     "wcs[%d] = 0x%lx\n", i, wcs[i]);
  9626.                              if (EILSEQ == errno)
  9627.                                 printf("An invalid wide character was encountered.\n");
  9628.                              exit(1);
  9629.                           }
  9630.                        }
  9631.                        fclose(stream);
  9632.                        return 0;
  9633.  
  9634.                        /****************************************************************************
  9635.                           The output file fputwc.out should contain :
  9636.  
  9637.                           A character string.
  9638.                        ****************************************************************************/
  9639.                     }
  9640.  
  9641.  Related Information 
  9642.  
  9643.               fgetwc 
  9644.               fputc 
  9645.               fputws 
  9646.  
  9647.  
  9648. ΓòÉΓòÉΓòÉ 3.76. fputws - Write Wide-Character String ΓòÉΓòÉΓòÉ
  9649.  
  9650. fputws - Write Wide-Character String 
  9651.  
  9652.  Syntax 
  9653.  
  9654.                     #include <stdio.h>
  9655.                     #include <wchar.h>
  9656.                     int fputws(const wchar_t *wcs, FILE *stream);
  9657.  
  9658.  Description 
  9659.  
  9660.           fputws converts the wide-character string wcs to a 
  9661.           multibyte-character string and writes it to stream as a multibyte 
  9662.           character string. It does not write the terminating null byte. 
  9663.  
  9664.           The behavior of fputws is affected by the LC_CTYPE category of the 
  9665.           current locale. If you change the category between subsequent 
  9666.           operations on the same stream, undefined results can occur. 
  9667.  
  9668.           After calling fputws, flush the buffer or reposition the stream 
  9669.           pointer before calling a read function for the stream. After a read 
  9670.           operation, flush the buffer or reposition the stream pointer before 
  9671.           calling fputws, unless EOF has been reached. 
  9672.  
  9673.  Returns 
  9674.  
  9675.           fputws returns a non-negative value if successful. If a write error 
  9676.           occurs, the error indicator for the stream is set and fputws returns 
  9677.           -1. If an encoding error occurs in converting the wide characters to 
  9678.           multibyte characters, fputws sets errno to EILSEQ and returns -1. 
  9679.  
  9680.  Example Code 
  9681.  
  9682.                     #include <stdio.h>
  9683.                     #include <wchar.h>
  9684.                     #include <errno.h>
  9685.  
  9686.                     int main(void)
  9687.                     {
  9688.                        FILE    *stream;
  9689.                        wchar_t *wcs = L"This test string should not return -1";
  9690.  
  9691.                        if (NULL == (stream = fopen("fputws.out", "w"))) {
  9692.                           printf("Unable to open: \"fputws.out\".\n");
  9693.                           exit(1);
  9694.                        }
  9695.  
  9696.                        errno = 0;
  9697.                        if (EOF == fputws(wcs, stream)) {
  9698.                           printf("Unable to complete fputws() function.\n");
  9699.                           if (EILSEQ == errno)
  9700.                              printf("An invalid wide character was encountered.\n");
  9701.                           exit(1);
  9702.                        }
  9703.                        fclose(stream);
  9704.                        return 0;
  9705.  
  9706.                        /****************************************************************************
  9707.                           The output file fputws.out should contain :
  9708.  
  9709.                           This test string should not return -1
  9710.                        ****************************************************************************/
  9711.                     }
  9712.  
  9713.  Related Information 
  9714.  
  9715.               fgetws 
  9716.               fputs 
  9717.               fputwc 
  9718.  
  9719.  
  9720. ΓòÉΓòÉΓòÉ 3.77. fread - Read Items ΓòÉΓòÉΓòÉ
  9721.  
  9722. fread - Read Items 
  9723.  
  9724.  Syntax 
  9725.  
  9726.                     #include <stdio.h>
  9727.                     size_t fread(void *buffer, size_t size, size_t count,
  9728.                                     FILE *stream);
  9729.  
  9730.  Description 
  9731.  
  9732.           fread reads up to count items of size length from the input stream 
  9733.           and stores them in the given buffer.  The position in the file 
  9734.           increases by the number of bytes read. 
  9735.  
  9736.  Returns 
  9737.  
  9738.           fread returns the number of full items successfully read, which can 
  9739.           be less than count if an error occurs or if the end-of-file is met 
  9740.           before reaching count.  If size or count is 0, fread returns zero and 
  9741.           the contents of the array and the state of the stream remain 
  9742.           unchanged. 
  9743.  
  9744.           Use ferror and feof to distinguish between a read error and an 
  9745.           end-of-file. 
  9746.  
  9747.  Example Code 
  9748.  
  9749.           This example attempts to read NUM_ALPHA characters from the file 
  9750.           myfile.dat. If there are any errors with either fread or fopen, a 
  9751.           message is printed. 
  9752.  
  9753.                     #include <stdio.h>
  9754.  
  9755.                     #define  NUM_ALPHA     26
  9756.  
  9757.                     int main(void)
  9758.                     {
  9759.                        FILE *stream;
  9760.                        int num;                     /* number of characters read from stream      */
  9761.  
  9762.                        /* Do not forget that the '\0' char occupies one character too!            */
  9763.  
  9764.                        char buffer[NUM_ALPHA+1];
  9765.  
  9766.                        if ((stream = fopen("myfile.dat", "r")) != NULL) {
  9767.                           num = fread(buffer, sizeof(char), NUM_ALPHA, stream);
  9768.                           if (num) {                                          /* fread success    */
  9769.                              printf("Number of characters has been read = %i\n", num);
  9770.                              buffer[num] = '\0';
  9771.                              printf("buffer = %s\n", buffer);
  9772.                              fclose(stream);
  9773.                           }
  9774.                           else {                                              /* fread failed     */
  9775.                              if (ferror(stream))                              /* possibility 1    */
  9776.                                 perror("Error reading myfile.dat");
  9777.                              else
  9778.                                 if (feof(stream))                             /* possibility 2    */
  9779.  
  9780.                                    perror("EOF found");
  9781.                           }
  9782.                        }
  9783.                        else
  9784.                           perror("Error opening myfile.dat");
  9785.                        return 0;
  9786.  
  9787.                        /****************************************************************************
  9788.                           The output should be:
  9789.  
  9790.                           Number of characters has been read = 26
  9791.                           buffer = abcdefghijklmnopqrstuvwxyz
  9792.                        ****************************************************************************/
  9793.                     }
  9794.  
  9795.  Related Information 
  9796.  
  9797.               feof 
  9798.               ferror 
  9799.               fopen 
  9800.               fwrite 
  9801.               read 
  9802.  
  9803.  
  9804. ΓòÉΓòÉΓòÉ 3.78. free - Release Storage Blocks ΓòÉΓòÉΓòÉ
  9805.  
  9806. free - Release Storage Blocks 
  9807.  
  9808.  Syntax 
  9809.  
  9810.                     #include <stdlib.h>  /* also in <malloc.h> */
  9811.                     void free(void *ptr);
  9812.  
  9813.  Description 
  9814.  
  9815.           free frees a block of storage. ptr points to a block previously 
  9816.           reserved with a call to one of the memory allocation functions (such 
  9817.           as calloc, _umalloc, or _trealloc). The number of bytes freed is the 
  9818.           number of bytes specified when you reserved (or reallocated, in the 
  9819.           case of realloc) the block of storage.  If ptr is NULL, free simply 
  9820.           returns. 
  9821.  
  9822.           Note:  Attempting to free a block of storage not allocated with a C 
  9823.                  memory management function or a block that was previously 
  9824.                  freed can affect the subsequent reserving of storage and lead 
  9825.                  to undefined results. 
  9826.  
  9827.  Returns 
  9828.  
  9829.           There is no return value. 
  9830.  
  9831.  Example Code 
  9832.  
  9833.           This example uses calloc to allocate storage for x array elements and 
  9834.           then calls free to free them. 
  9835.  
  9836.                     #include <stdio.h>
  9837.                     #include <stdlib.h>
  9838.  
  9839.                     int main(void)
  9840.                     {
  9841.                        long *array;                              /* start of the array            */
  9842.                        long *index;                                           /* index variable   */
  9843.                        int i;                                                 /* index variable   */
  9844.                        int num = 100;                       /* number of entries of the array     */
  9845.  
  9846.                        printf("Allocating memory for %d long integers.\n", num);
  9847.  
  9848.  
  9849.                        /* allocate num entries                                                    */
  9850.  
  9851.                        if ((index = array = calloc(num, sizeof(long))) != NULL) {
  9852.  
  9853.                          /*.......................................................................*/
  9854.                          /*.......................................................................*/
  9855.                                 /*  do something with the array                                   */
  9856.                          /*.......................................................................*/
  9857.  
  9858.                           free(array);                                        /* deallocates array*/
  9859.                        }
  9860.                        else {                                                 /* Out of storage   */
  9861.                           perror("Error: out of storage");
  9862.                           abort();
  9863.                        }
  9864.                        return 0;
  9865.  
  9866.                        /****************************************************************************
  9867.                           The output should be:
  9868.  
  9869.                           Allocating memory for 100 long integers.
  9870.                        ****************************************************************************/
  9871.                     }
  9872.  
  9873.  Related Information 
  9874.  
  9875.               "Managing Memory" in the VisualAge C++ Programming Guide 
  9876.               calloc 
  9877.               malloc 
  9878.               realloc 
  9879.  
  9880.  
  9881. ΓòÉΓòÉΓòÉ 3.79. freopen - Redirect Open Files ΓòÉΓòÉΓòÉ
  9882.  
  9883. freopen - Redirect Open Files 
  9884.  
  9885.  Syntax 
  9886.  
  9887.                     #include <stdio.h>
  9888.                     FILE *freopen(const char *filename, const char *mode, FILE *stream);
  9889.  
  9890.  Description 
  9891.  
  9892.           freopen closes the file currently associated with stream and 
  9893.           reassigns stream to the file specified by filename. The freopen 
  9894.           function opens the new file associated with stream with the given 
  9895.           mode, which is a character string specifying the type of access 
  9896.           requested for the file. You can also use the freopen function to 
  9897.           redirect the standard stream files stdin, stdout, and stderr to files 
  9898.           that you specify. 
  9899.  
  9900.           If filename is an empty string, freopen closes and reopens the stream 
  9901.           to the new open mode, rather than reassigning it to a new file or 
  9902.           device. You can use freopen with no file name specified to change the 
  9903.           mode of a standard stream from text to binary without redirecting the 
  9904.           stream, for example: 
  9905.  
  9906.                        fp = freopen("", "rb", stdin);
  9907.  
  9908.           You can use the same method to change the mode from binary back to 
  9909.           text. 
  9910.  
  9911.           Portability Note  This method is included in the SAA C definition, 
  9912.                             but not in the ANSI/ISO C standard. 
  9913.  
  9914.           See fopen for a description of the mode parameter. 
  9915.  
  9916.  Returns 
  9917.  
  9918.           freopen returns a pointer to the newly opened stream. If an error 
  9919.           occurs, freopen closes the original file and returns a NULL pointer 
  9920.           value. 
  9921.  
  9922.  Example Code 
  9923.  
  9924.           This example closes the stream1 data stream and reassigns its stream 
  9925.           pointer. Note that stream1 and stream2 will have the same value, but 
  9926.           they will not necessarily have the same value as stream. 
  9927.  
  9928.                     #include <stdio.h>
  9929.                     #include <stdlib.h>
  9930.  
  9931.                     int main(void)
  9932.                     {
  9933.                        FILE *stream,*stream1,*stream2;
  9934.  
  9935.                        stream = fopen("myfile.dat", "r");
  9936.                        stream1 = stream;
  9937.                        if (NULL == (stream2 = freopen("", "w+", stream1)))
  9938.                           return EXIT_FAILURE;
  9939.                        fclose(stream2);
  9940.                        return 0;
  9941.                     }
  9942.  
  9943.  Related Information 
  9944.  
  9945.               close 
  9946.               fclose 
  9947.               _fcloseall 
  9948.               fopen 
  9949.               open 
  9950.               _sopen 
  9951.  
  9952.  
  9953. ΓòÉΓòÉΓòÉ 3.80. frexp - Separate Floating-Point Value ΓòÉΓòÉΓòÉ
  9954.  
  9955. frexp - Separate Floating-Point Value 
  9956.  
  9957.  Syntax 
  9958.  
  9959.                     #include <math.h>
  9960.                     double frexp(double x, int *expptr);
  9961.  
  9962.  Description 
  9963.  
  9964.           frexp breaks down the floating-point value x into a term m for the 
  9965.           mantissa and another term n for the exponent, such that x=m*2n, and 
  9966.           the absolute value of m is greater than or equal to 0.5 and less than 
  9967.           1.0 or equal to 0. frexp stores the integer exponent n at the 
  9968.           location to which expptr points. 
  9969.  
  9970.  Returns 
  9971.  
  9972.           frexp returns the mantissa term m.  If x is 0, frexp returns 0 for 
  9973.           both the mantissa and exponent.  The mantissa has the same sign as 
  9974.           the argument x.  The result of the frexp function cannot have a range 
  9975.           error. 
  9976.  
  9977.  Example Code 
  9978.  
  9979.           This example decomposes the floating-point value of x, 16.4, into its 
  9980.           mantissa 0.5125, and its exponent 5.  It stores the mantissa in y and 
  9981.           the exponent in n. 
  9982.  
  9983.                     #include <math.h>
  9984.  
  9985.                     int main(void)
  9986.                     {
  9987.                        double x,m;
  9988.                        int n;
  9989.  
  9990.                        x = 16.4;
  9991.                        m = frexp(x, &n);
  9992.                        printf("The mantissa is %lf and the exponent is %d\n", m, n);
  9993.                        return 0;
  9994.  
  9995.                        /****************************************************************************
  9996.                           The output should be:
  9997.  
  9998.                           The mantissa is 0.512500 and the exponent is 5
  9999.                        ****************************************************************************/
  10000.                     }
  10001.  
  10002.  Related Information 
  10003.  
  10004.               ldexp 
  10005.               modf 
  10006.  
  10007.  
  10008. ΓòÉΓòÉΓòÉ 3.81. fscanf - Read Formatted Data ΓòÉΓòÉΓòÉ
  10009.  
  10010. fscanf - Read Formatted Data 
  10011.  
  10012.  Syntax 
  10013.  
  10014.                     #include <stdio.h>
  10015.                     int fscanf (FILE *stream, const char *format-string, argument-list);
  10016.  
  10017.  Description 
  10018.  
  10019.           fscanf reads data from the current position of the specified stream 
  10020.           into the locations given by the entries in argument-list, if any. 
  10021.           Each entry in argument-list must be a pointer to a variable with a 
  10022.           type that corresponds to a type specifier in format-string. 
  10023.  
  10024.           The format-string controls the interpretation of the input fields and 
  10025.           has the same form and function as the format-string argument for the 
  10026.           scanf function.  See scanf for a description of format-string. 
  10027.  
  10028.           In extended mode, the fscanf function also reads in the strings 
  10029.           "INFINITY", "INF", and "NAN" (in uppercase or lowercase) and converts 
  10030.           them to the corresponding floating-point value.  The sign of the 
  10031.           value is determined by the format specification. See Infinity and NaN 
  10032.           Support for more information on infinity and NaN values. 
  10033.  
  10034.  Returns 
  10035.  
  10036.           fscanf returns the number of fields that it successfully converted 
  10037.           and assigned.  The return value does not include fields that fscanf 
  10038.           read but did not assign. 
  10039.  
  10040.           The return value is EOF if an input failure occurs before any 
  10041.           conversion, or the number of input items assigned if successful. 
  10042.  
  10043.  Example Code 
  10044.  
  10045.           This example opens the file myfile.dat for reading and then scans 
  10046.           this file for a string, a long integer value, a character, and a 
  10047.           floating-point value. 
  10048.  
  10049.                     #include <stdio.h>
  10050.  
  10051.                     #define  MAX_LEN       80
  10052.  
  10053.                     int main(void)
  10054.                     {
  10055.                        FILE *stream;
  10056.                        long l;
  10057.                        float fp;
  10058.                        char s[MAX_LEN+1];
  10059.                        char c;
  10060.  
  10061.                        stream = fopen("myfile.dat", "r");
  10062.  
  10063.                         /* Put in various data.                                                   */
  10064.  
  10065.                        fscanf(stream, "%s", &s[0]);
  10066.                        fscanf(stream, "%ld", &l);
  10067.                        fscanf(stream, "%c", &c);
  10068.                        fscanf(stream, "%f", &fp);
  10069.                        printf("string = %s\n", s);
  10070.                        printf("long %ld\n", l);
  10071.                        printf("char = %c\n", c);
  10072.                        printf("float = %f\n", fp);
  10073.                        return 0;
  10074.  
  10075.                        /****************************************************************************
  10076.                           If myfile.dat contains:
  10077.                           abcdefghijklmnopqrstuvwxyz 343.2.
  10078.  
  10079.                           The output should be:
  10080.  
  10081.                           string = abcdefghijklmnopqrstuvwxyz
  10082.                           long double = 343
  10083.                           char = .
  10084.                           float = 2.000000
  10085.                        ****************************************************************************/
  10086.                     }
  10087.  
  10088.  Related Information 
  10089.  
  10090.               Infinity and NaN Support 
  10091.               _cscanf 
  10092.               fprintf 
  10093.               scanf 
  10094.               sscanf 
  10095.  
  10096.  
  10097. ΓòÉΓòÉΓòÉ 3.82. fseek - Reposition File Position ΓòÉΓòÉΓòÉ
  10098.  
  10099. fseek - Reposition File Position 
  10100.  
  10101.  Syntax 
  10102.  
  10103.                     #include <stdio.h>
  10104.                     int fseek(FILE *stream, long int offset, int origin);
  10105.  
  10106.  Description 
  10107.  
  10108.           fseek changes the current file position associated with stream to a 
  10109.           new location within the file. The next operation on the stream takes 
  10110.           place at the new location.  On a stream open for update, the next 
  10111.           operation can be either a reading or a writing operation. 
  10112.  
  10113.           The origin must be one of the following constants defined in 
  10114.           <stdio.h>:  compact break=fit. 
  10115.  
  10116.           Origin      Definition 
  10117.  
  10118.           SEEK_SET    Beginning of file 
  10119.  
  10120.           SEEK_CUR    Current position of file pointer 
  10121.  
  10122.           SEEK_END    End of file 
  10123.  
  10124.           For a binary stream, you can also change the position beyond the end 
  10125.           of the file.  An attempt to position before the beginning of the file 
  10126.           causes an error. If successful, fseek clears the end-of-file 
  10127.           indicator, even when origin is SEEK_END, and undoes the effect of any 
  10128.           preceding ungetc function on the same stream. 
  10129.  
  10130.           Note:  For streams opened in text mode, fseek has limited use because 
  10131.                  some system translations (such as those between 
  10132.                  carriage-return-line-feed and new line) can produce unexpected 
  10133.                  results.  The only fseek operations that can be relied upon to 
  10134.                  work on streams opened in text mode are seeking with an offset 
  10135.                  of zero relative to any of the origin values or seeking from 
  10136.                  the beginning of the file with an offset value returned from a 
  10137.                  call to ftell. See the chapter "Performing I/O Operations" in 
  10138.                  the VisualAge C++ Programming Guide for more information. 
  10139.  
  10140.  Returns 
  10141.  
  10142.           fseek returns 0 if it successfully moves the pointer.  A nonzero 
  10143.           return value indicates an error.  On devices that cannot seek, such 
  10144.           as terminals and printers, the return value is nonzero. 
  10145.  
  10146.  Example Code 
  10147.  
  10148.           This example opens a file myfile.dat for reading. After performing 
  10149.           input operations (not shown), fseek moves the file pointer to the 
  10150.           beginning of the file. 
  10151.  
  10152.                     #include <stdio.h>
  10153.                     #include <stdlib.h>
  10154.  
  10155.                     int main(void)
  10156.                     {
  10157.                        FILE *stream;
  10158.                        int result;
  10159.  
  10160.                        stream = fopen("myfile.dat", "r");
  10161.  
  10162.                        result = fseek(stream, 0L, SEEK_SET);   /* moves the pointer to the
  10163.                                                                   beginning of the file           */
  10164.  
  10165.                        if (result)                           /* fail to move the pointer to the   */
  10166.                           return EXIT_FAILURE;               /* beginning of the file             */
  10167.                        fclose(stream);
  10168.                        return 0;
  10169.                     }
  10170.  
  10171.  Related Information 
  10172.  
  10173.               fgetpos 
  10174.               fsetpos 
  10175.               ftell 
  10176.               rewind 
  10177.               ungetc 
  10178.  
  10179.  
  10180. ΓòÉΓòÉΓòÉ 3.83. fsetpos - Set File Position ΓòÉΓòÉΓòÉ
  10181.  
  10182. fsetpos - Set File Position 
  10183.  
  10184.  Syntax 
  10185.  
  10186.                     #include <stdio.h>
  10187.                     int fsetpos(FILE *stream, const fpos_t *pos);
  10188.  
  10189.  Description 
  10190.  
  10191.           fsetpos moves any file position associated with stream to a new 
  10192.           location within the file according to the value pointed to by pos. 
  10193.           The value of pos was obtained by a previous call to the fgetpos 
  10194.           library function. 
  10195.  
  10196.           If successful, fsetpos clears the end-of-file indicator, and undoes 
  10197.           the effect of any previous ungetc function on the same stream. 
  10198.  
  10199.           After the fsetpos call, the next operation on a stream in update mode 
  10200.           may be input or output. 
  10201.  
  10202.  Returns 
  10203.  
  10204.           If fsetpos successfully changes the current position of the file, it 
  10205.           returns 0. A nonzero return value indicates an error. 
  10206.  
  10207.  Example Code 
  10208.  
  10209.           This example opens a file myfile.dat for reading. After performing 
  10210.           input operations (not shown), fsetpos moves the file pointer to the 
  10211.           beginning of the file and rereads the first byte. 
  10212.  
  10213.                     #include <stdio.h>
  10214.  
  10215.                     FILE *stream;
  10216.  
  10217.                     int main(void)
  10218.                     {
  10219.                        int retcode;
  10220.                        fpos_t pos,pos1,pos2,pos3;
  10221.                        char ptr[20];           /* existing file 'myfile.dat' has 20 byte records  */
  10222.  
  10223.                         /* Open file, get position of file pointer, and read first record         */
  10224.  
  10225.                        stream = fopen("myfile.dat", "rb");
  10226.                        fgetpos(stream, &pos);
  10227.                        pos1 = pos;
  10228.                        if (!fread(ptr, sizeof(ptr), 1, stream))
  10229.                           perror("fread error");
  10230.  
  10231.                         /* Perform a number of read operations - the value of 'pos' changes       */
  10232.                         /* Re-set pointer to start of file and re-read first record               */
  10233.  
  10234.                        fsetpos(stream, &pos1);
  10235.                        if (!fread(ptr, sizeof(ptr), 1, stream))
  10236.                           perror("fread error");
  10237.                        fclose(stream);
  10238.                        return 0;
  10239.                     }
  10240.  
  10241.  Related Information 
  10242.  
  10243.               fgetpos 
  10244.               fseek 
  10245.               ftell 
  10246.               rewind 
  10247.  
  10248.  
  10249. ΓòÉΓòÉΓòÉ 3.84. fstat - Information about Open File ΓòÉΓòÉΓòÉ
  10250.  
  10251. fstat - Information about Open File 
  10252.  
  10253.  Syntax 
  10254.  
  10255.                     #include <sys\stat.h>
  10256.                     #include <sys\types.h>
  10257.                     int fstat(int handle, struct stat *buffer);
  10258.  
  10259.  Description 
  10260.  
  10261.           fstat obtains information about the open file associated with the 
  10262.           given handle and stores it in the structure to which buffer points. 
  10263.           The <sys\stat.h> include file defines the stat structure.  The stat 
  10264.           structure contains the following fields: 
  10265.  
  10266.           Field       Value 
  10267.  
  10268.           st_mode     Bit mask for file mode information. fstat sets the 
  10269.                       S_IFCHR bit if handle refers to a device. The S_IFDIR bit 
  10270.                       is set if pathname specifies a directory. It sets the 
  10271.                       S_IFREG bit if handle refers to an ordinary file.  It 
  10272.                       sets user read/write bits according to the permission 
  10273.                       mode of the file. The other bits have undefined values. 
  10274.  
  10275.           st_dev      Drive number of the disk containing the file. 
  10276.  
  10277.           st_rdev     Drive number of the disk containing the file (same as 
  10278.                       st_dev). 
  10279.  
  10280.           st_nlink    Always 1. 
  10281.  
  10282.           st_size     Size of the file in bytes. 
  10283.  
  10284.           st_atime    Time of last access of file. 
  10285.  
  10286.           st_mtime    Time of last modification of file. 
  10287.  
  10288.           st_ctime    Time of file creation. 
  10289.  
  10290.           There are three additional fields in the stat structure for 
  10291.           portability to other operating systems; they have no meaning under 
  10292.           the OS/2 operating system. 
  10293.  
  10294.           Note:  If the given handle refers to a device, the size and time 
  10295.                  fields in the stat structure are not meaningful. 
  10296.  
  10297.  Returns 
  10298.  
  10299.           If it obtains the file status information, fstat returns 0. A return 
  10300.           value of -1 indicates an error, and fstat sets errno to EBADF, 
  10301.           showing an incorrect file handle. 
  10302.  
  10303.  Example Code 
  10304.  
  10305.           This example uses fstat to report the size of a file named data. 
  10306.  
  10307.                     #include <time.h>
  10308.                     #include <sys\types.h>
  10309.                     #include <sys\stat.h>
  10310.                     #include <stdio.h>
  10311.  
  10312.                     int main(void)
  10313.                     {
  10314.                        struct stat buf;
  10315.                        FILE *fp;
  10316.                        int fh,result;
  10317.                        char *buffer = "A line to output";
  10318.  
  10319.                        fp = fopen("data", "w+");
  10320.                        fprintf(fp, "%s", buffer);
  10321.                        fflush(fp);
  10322.                        fclose(fp);
  10323.                        fp = fopen("data", "r");
  10324.                        if (0 == fstat(fileno(fp), &buf)) {
  10325.                           printf("file size is %ld\n", buf.st_size);
  10326.                           printf("time modified is %s\n", ctime(&buf.st_atime));
  10327.                        }
  10328.                        else
  10329.                           printf("Bad file handle\n");
  10330.                        fclose(fp);
  10331.                        return 0;
  10332.  
  10333.                        /****************************************************************************
  10334.                           The output should be similar to:
  10335.  
  10336.                           file size is 16
  10337.                           time modified is Thu May 16 16:08:14 1995
  10338.                        ****************************************************************************/
  10339.                     }
  10340.  
  10341.  Related Information 
  10342.  
  10343.               stat 
  10344.  
  10345.  
  10346. ΓòÉΓòÉΓòÉ 3.85. ftell - Get Current Position ΓòÉΓòÉΓòÉ
  10347.  
  10348. ftell - Get Current Position 
  10349.  
  10350.  Syntax 
  10351.  
  10352.                     #include <stdio.h>
  10353.                     long int ftell(FILE *stream);
  10354.  
  10355.  Description 
  10356.  
  10357.           ftell finds the current position of the file associated with stream. 
  10358.           For a fixed-length binary file, the value returned by ftell is an 
  10359.           offset relative to the beginning of the stream. 
  10360.  
  10361.           Note:  For buffered text streams, ftell returns an incorrect file 
  10362.                  position if the file contains new-line characters instead of 
  10363.                  carriage-return line-feed combinations.  Your file would only 
  10364.                  contain new-line characters if you previously used it as a 
  10365.                  binary stream.  To avoid this problem, either continue to 
  10366.                  process the file as a binary stream, or use unbuffered I/O 
  10367.                  operations. 
  10368.  
  10369.  Returns 
  10370.  
  10371.           ftell returns the current file position. On error, ftell returns -1L 
  10372.           and sets errno to a nonzero value. 
  10373.  
  10374.  Example Code 
  10375.  
  10376.           This example opens the file myfile.dat for reading. It reads enough 
  10377.           characters to fill half of the buffer and prints out the position in 
  10378.           the stream and the buffer. 
  10379.  
  10380.                     #include <stdio.h>
  10381.  
  10382.                     #define  NUM_ALPHA     26
  10383.                     #define  NUM_CHAR      6
  10384.  
  10385.                     int main(void)
  10386.                     {
  10387.                        FILE *stream;
  10388.                        int i;
  10389.                        char ch;
  10390.                        char buffer[NUM_ALPHA];
  10391.                        long position;
  10392.  
  10393.                        if ((stream = fopen("myfile.dat", "r")) != NULL) {
  10394.  
  10395.                          /* read into buffer                                                      */
  10396.  
  10397.                           for (i = 0; (i < NUM_ALPHA/2) && ((buffer[i] = fgetc(stream)) != EOF);
  10398.                                ++i)
  10399.                              if (i == NUM_CHAR-1) { /* We want to be able to position the
  10400.                                                        file pointer to the character in
  10401.                                                        position NUM_CHAR                          */
  10402.  
  10403.                                 position = ftell(stream);
  10404.                                 printf("Current position of the file is stored.\n");
  10405.                              }
  10406.                           buffer[i] = '\0';
  10407.                           fseek(stream, position, SEEK_SET);
  10408.                           ch = fgetc(stream);       /* get the character at position NUM_CHAR     */
  10409.                           fclose(stream);
  10410.                        }
  10411.                        else
  10412.                           perror("Error opening myfile.dat");
  10413.                        return 0;
  10414.                     }
  10415.  
  10416.  Related Information 
  10417.  
  10418.               fseek 
  10419.               fgetpos 
  10420.               fopen 
  10421.               fsetpos 
  10422.  
  10423.  
  10424. ΓòÉΓòÉΓòÉ 3.86. _ftime - Store Current Time ΓòÉΓòÉΓòÉ
  10425.  
  10426. _ftime - Store Current Time 
  10427.  
  10428.  Syntax 
  10429.  
  10430.                     #include <sys\timeb.h>
  10431.                     #include <sys\types.h>
  10432.                     void _ftime(struct timeb *timeptr);
  10433.  
  10434.  Description 
  10435.  
  10436.           _ftime gets the current time and stores it in the structure to which 
  10437.           timeptr points. The <sys\timeb.h> include file contains the 
  10438.           definition of the timeb structure. It contains four fields: 
  10439.  
  10440.           time      The time in seconds since 00:00:00 Coordinated Universal 
  10441.                     Time, January 1, 1970. 
  10442.           millitm   The fraction of a second, in milliseconds. 
  10443.           timezone  The difference in minutes between Coordinated Universal 
  10444.                     Time and local time, going from east to west. _ftime sets 
  10445.                     the value of timezone from the value of the global variable 
  10446.                     _timezone. 
  10447.           dstflag   Nonzero if daylight saving time is currently in effect for 
  10448.                     the local time zone. For an explanation of how daylight 
  10449.                     saving time is determined, see tzset. 
  10450.  
  10451.  Returns 
  10452.  
  10453.           There is no return value. 
  10454.  
  10455.  Example Code 
  10456.  
  10457.           This example polls the system clock, converts the current time to a 
  10458.           character string, prints the string, and saves the time data in the 
  10459.           structure timebuffer. 
  10460.  
  10461.                     #include <sys\types.h>
  10462.                     #include <sys\timeb.h>
  10463.                     #include <stdio.h>
  10464.                     #include <time.h>
  10465.  
  10466.                     int main(void)
  10467.                     {
  10468.                        struct timeb timebuffer;
  10469.  
  10470.                        _ftime(&timebuffer);
  10471.                        printf("the time is %s\n", ctime(&(timebuffer.time)));
  10472.                        return 0;
  10473.  
  10474.                        /****************************************************************************
  10475.                           The output should be similar to:
  10476.  
  10477.                           the time is Thu May 16 16:08:17 1995
  10478.                        ****************************************************************************/
  10479.                     }
  10480.  
  10481.  Related Information 
  10482.  
  10483.               asctime 
  10484.               ctime 
  10485.               gmtime 
  10486.               localtime 
  10487.               mktime 
  10488.               time 
  10489.               tzset 
  10490.  
  10491.  
  10492. ΓòÉΓòÉΓòÉ 3.87. _fullpath - Get Full Path Name of Partial Path ΓòÉΓòÉΓòÉ
  10493.  
  10494. _fullpath - Get Full Path Name of Partial Path 
  10495.  
  10496.  Syntax 
  10497.  
  10498.                     #include <stdlib.h>
  10499.                     char *_fullpath(char *pathbuf, char *partialpath, size_t n);
  10500.  
  10501.  Description 
  10502.  
  10503.           _fullpath gets the full path name of the given partial path name 
  10504.           partialpath, and stores it in pathbuf. The integer argument n 
  10505.           specifies the maximum length for the path name.  An error occurs if 
  10506.           the length of the path name, including the terminating null 
  10507.           character, exceeds n characters. 
  10508.  
  10509.           If pathbuf is NULL, _fullpath uses malloc to allocate a buffer of 
  10510.           size _MAX_PATH bytes to store the path name. 
  10511.  
  10512.  Returns 
  10513.  
  10514.           _fullpath returns a pointer to pathbuf.  If an error occurs, 
  10515.           _fullpath returns NULL and sets errno to one of the following values: 
  10516.           compact break=fit. 
  10517.  
  10518.           Value          Meaning 
  10519.  
  10520.           ENOMEM         Unable to allocate storage for the buffer. 
  10521.  
  10522.           ERANGE         The path name is longer than n characters. 
  10523.  
  10524.           EOS2ERR        A system error occurred.  Check _doserrno for the 
  10525.                          specific OS/2 error code. 
  10526.  
  10527.  Example Code 
  10528.  
  10529.           This example uses _fullpath to get and store the full path name of 
  10530.           the current directory. 
  10531.  
  10532.                     #include <stdio.h>
  10533.                     #include <stdlib.h>
  10534.                     #include <errno.h>
  10535.  
  10536.                     int main(void)
  10537.                     {
  10538.                        char *retBuffer;
  10539.  
  10540.                        retBuffer = _fullpath(NULL, ".", 0);
  10541.                        if (NULL == retBuffer) {
  10542.                           printf("An error has occurred, errno is set to %d.\n", errno);
  10543.                        }
  10544.                        else
  10545.                           printf("Full path name of current directory is %s.\n", retBuffer);
  10546.                        return 0;
  10547.  
  10548.                        /****************************************************************************
  10549.                           The output should be similar to:
  10550.  
  10551.                             Full path name of current directory is D:\BIN.
  10552.                        ****************************************************************************/
  10553.                     }
  10554.  
  10555.  Related Information 
  10556.  
  10557.               _getcwd 
  10558.               _getdcwd 
  10559.               _makepath 
  10560.               malloc 
  10561.               _splitpath 
  10562.  
  10563.  
  10564. ΓòÉΓòÉΓòÉ 3.88. fwrite - Write Items ΓòÉΓòÉΓòÉ
  10565.  
  10566. fwrite - Write Items 
  10567.  
  10568.  Syntax 
  10569.  
  10570.                     #include <stdio.h>
  10571.                     size_t fwrite(const void *buffer, size_t size, size_t count,
  10572.                                      FILE *stream);
  10573.  
  10574.  Description 
  10575.  
  10576.           fwrite writes up to count items, each of size bytes in length, from 
  10577.           buffer to the output stream. 
  10578.  
  10579.  Returns 
  10580.  
  10581.           fwrite returns the number of full items successfully written, which 
  10582.           can be fewer than count if an error occurs. 
  10583.  
  10584.  Example Code 
  10585.  
  10586.           This example writes NUM long integers to a stream in binary format. 
  10587.  
  10588.                     #include <stdio.h>
  10589.  
  10590.                     #define  NUM           100
  10591.  
  10592.                     int main(void)
  10593.                     {
  10594.                        FILE *stream;
  10595.                        long list[NUM];
  10596.                        int numwritten;
  10597.  
  10598.                        stream = fopen("myfile.dat", "w+b");
  10599.  
  10600.                                   /* assign values to list[]                                      */
  10601.  
  10602.                        numwritten = fwrite(list, sizeof(long), NUM, stream);
  10603.                        printf("Number of items successfully written : %d\n", numwritten);
  10604.                        return 0;
  10605.  
  10606.                        /****************************************************************************
  10607.                           The output should be:
  10608.  
  10609.                           Number of items successfully written : 100
  10610.                        ****************************************************************************/
  10611.                     }
  10612.  
  10613.  Related Information 
  10614.  
  10615.               fopen 
  10616.               fread 
  10617.               read 
  10618.               write 
  10619.  
  10620.  
  10621. ΓòÉΓòÉΓòÉ 3.89. gamma - Gamma Function ΓòÉΓòÉΓòÉ
  10622.  
  10623. gamma - Gamma Function 
  10624.  
  10625.  Syntax 
  10626.  
  10627.                     #include <math.h> /* SAA extension to ANSI */
  10628.                     double gamma(double x);
  10629.  
  10630.  Description 
  10631.  
  10632.           gamma computes the natural logarithm of the absolute value of G(x) 
  10633.           (ln(|G(x)|)), where 
  10634.  
  10635.           Portability Note  According to the SAA standard, x must be a positive 
  10636.                             real value. Under The Developer's Toolkit compiler, 
  10637.                             x can also be a negative integer. 
  10638.  
  10639.  Returns 
  10640.  
  10641.           gamma returns the value of ln(|G(x)|). If x is a negative value, 
  10642.           errno is set to EDOM. If the result causes an overflow, gamma returns 
  10643.           HUGE_VAL and sets errno to ERANGE. 
  10644.  
  10645.  Example Code 
  10646.  
  10647.           This example uses gamma to calculate ln(|G(x)|), where x = 42. 
  10648.  
  10649.                     #include <math.h>
  10650.                     #include <stdio.h>
  10651.  
  10652.                     int main(void)
  10653.                     {
  10654.                        double x = 42,g_at_x;
  10655.  
  10656.                        g_at_x = exp(gamma(x));                       /* g_at_x = 3.345253e+49     */
  10657.                        printf("The value of G(%4.2f) is %7.2e\n", x, g_at_x);
  10658.                        return 0;
  10659.  
  10660.                        /****************************************************************************
  10661.                           The output should be:
  10662.  
  10663.                           The value of G(42.00) is 3.35e+49
  10664.                        ****************************************************************************/
  10665.                     }
  10666.  
  10667.  Related Information 
  10668.  
  10669.               bessel 
  10670.               erf - erfc 
  10671.  
  10672.  
  10673. ΓòÉΓòÉΓòÉ 3.90. _gcvt - Convert Floating-Point to String ΓòÉΓòÉΓòÉ
  10674.  
  10675. _gcvt - Convert Floating-Point to String 
  10676.  
  10677.  Syntax 
  10678.  
  10679.                     #include <stdlib.h>
  10680.                     char *_gcvt(double value, int ndec, char *buffer);
  10681.  
  10682.  Description 
  10683.  
  10684.           _gcvt converts a floating-point value to a character string pointed 
  10685.           to by buffer. The buffer should be large enough to hold the converted 
  10686.           value and a null character (\0) that _gcvt automatically adds to the 
  10687.           end of the string. There is no provision for overflow. 
  10688.  
  10689.           _gcvt tries to produce ndec significant digits in FORTRAN F format. 
  10690.           Failing that, it produces ndec significant digits in FORTRAN E 
  10691.           format. Trailing zeros might be suppressed in the conversion if they 
  10692.           are significant. 
  10693.  
  10694.           A FORTRAN F number has the following format: 
  10695.  
  10696.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10697.                     Γöé                                        Γöé
  10698.                     Γöé       ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ   ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ                    Γöé
  10699.                     Γöé           Γöé         Γöé                    Γöé
  10700.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇdigitΓöÇΓö┤ΓöÇΓöÇ.ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇ><                  Γöé
  10701.                     Γöé   Γö£ΓöÇ+ΓöÇΓöñ          ΓööΓöÇdigitΓöÇΓöÿ                     Γöé
  10702.                     Γöé   ΓööΓöÇΓö┤ΓöÇΓöÿ                                   Γöé
  10703.                     Γöé                                        Γöé
  10704.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10705.  
  10706.           A FORTRAN E number has the following format: 
  10707.  
  10708.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  10709.                     Γöé                                        Γöé
  10710.                     Γöé            ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ          ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ        Γöé
  10711.                     Γöé                Γöé                Γöé        Γöé
  10712.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitΓöÇΓöÇ.ΓöÇΓöÇΓöÇΓöÇdigitΓöÇΓö┤ΓöÇΓöÇEΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö┤ΓöÇΓöÇ><      Γöé
  10713.                     Γöé   Γö£ΓöÇ+ΓöÇΓöñ              Γö£ΓöÇ+ΓöÇΓöñ      ΓööΓöÇdigitΓöÇΓöÿ         Γöé
  10714.                     Γöé   ΓööΓöÇΓö┤ΓöÇΓöÿ              ΓööΓöÇΓö┤ΓöÇΓöÿ                   Γöé
  10715.                     Γöé                                        Γöé
  10716.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  10717.  
  10718.           _gcvt also converts NaN and infinity values to the strings NAN and 
  10719.           INFINITY, respectively. For more information on NaN and infinity 
  10720.           values, see Infinity and NaN Support. 
  10721.  
  10722.           Warning: For each thread, _ecvt, _fcvt and _gcvt use a single, 
  10723.           dynamically allocated buffer for the conversion. Any subsequent call 
  10724.           that the same thread makes to these functions destroys the result of 
  10725.           the previous call. 
  10726.  
  10727.  Returns 
  10728.  
  10729.           _gcvt returns a pointer to the string of digits. If it cannot 
  10730.           allocate memory to perform the conversion, _gcvt returns an empty 
  10731.           string and sets errno to ENOMEM. 
  10732.  
  10733.  Example Code 
  10734.  
  10735.           This example converts the value -3.1415e3 to a character string and 
  10736.           places it in the character array buffer1. It then converts the macro 
  10737.           value _INF to a character string and places it in buffer2. 
  10738.  
  10739.                     #include <stdio.h>
  10740.                     #include <stdlib.h>
  10741.                     #include <float.h>                  /* for the definition of _INF             */
  10742.  
  10743.                     int main(void)
  10744.                     {
  10745.                        char buffer1[10],buffer2[10];
  10746.  
  10747.                        _gcvt(-3.1415e3, 7, buffer1);
  10748.                        printf("The first result is %s \n", buffer1);
  10749.                        _gcvt(_INF, 5, buffer2);
  10750.                        printf("The second result is %s \n", buffer2);
  10751.                        return 0;
  10752.  
  10753.                        /****************************************************************************
  10754.                           The output should be:
  10755.  
  10756.                           The first result is -3141.5
  10757.                           The second result is INFINITY
  10758.                        ****************************************************************************/
  10759.                     }
  10760.  
  10761.  Related Information 
  10762.  
  10763.               _ecvt 
  10764.               _fcvt 
  10765.               Infinity and NaN Support 
  10766.  
  10767.  
  10768. ΓòÉΓòÉΓòÉ 3.91. getc - getchar - Read a Byte ΓòÉΓòÉΓòÉ
  10769.  
  10770. getc - getchar - Read a Byte 
  10771.  
  10772.  Syntax 
  10773.  
  10774.                     #include <stdio.h>
  10775.                     int getc(FILE *stream);
  10776.                     int getchar(void);
  10777.  
  10778.  Description 
  10779.  
  10780.           getc reads a single byte from the current stream position and 
  10781.           advances the stream position to the next byte. getchar is identical 
  10782.           to getc(stdin). 
  10783.  
  10784.           getc is equivalent to fgetc except that, if it is implemented as a 
  10785.           macro, getc can evaluate stream more than once. Therfore, the stream 
  10786.           argument to getc should not be an expression with side effects. 
  10787.  
  10788.  Returns 
  10789.  
  10790.           getc and getchar return the value read.  A return value of EOF 
  10791.           indicates an error or end-of-file condition. Use ferror or feof to 
  10792.           determine whether an error or an end-of-file condition occurred. 
  10793.  
  10794.  Example Code 
  10795.  
  10796.           This example gets a line of input from the stdin stream.  You can 
  10797.           also use getc(stdin) instead of getchar() in the for statement to get 
  10798.           a line of input from stdin. 
  10799.  
  10800.                     #include <stdio.h>
  10801.  
  10802.                     #define  LINE          80
  10803.  
  10804.                     int main(void)
  10805.                     {
  10806.                        char buffer[LINE+1];
  10807.                        int i;
  10808.                        int ch;
  10809.  
  10810.                        printf("Please enter string\n");
  10811.  
  10812.                        /* Keep reading until either:
  10813.                           1. the length of LINE is exceeded  or
  10814.                           2. the input character is EOF  or
  10815.                           3. the input character is a newline character
  10816.                                                                                                   */
  10817.  
  10818.                        for (i = 0; (i < LINE) && ((ch = getchar()) != EOF) && (ch != '\n'); ++i)
  10819.                           buffer[i] = ch;
  10820.                        buffer[i] = '\0';         /* a string should always end with '\0' !        */
  10821.                        printf("The string is %s\n", buffer);
  10822.                        return 0;
  10823.  
  10824.                        /****************************************************************************
  10825.                           The output should be similar to:
  10826.  
  10827.                           Please enter string
  10828.                           hello world
  10829.                           The string is hello world
  10830.                        ****************************************************************************/
  10831.                     }
  10832.  
  10833.  Related Information 
  10834.  
  10835.               fgetc 
  10836.               _getch - _getche 
  10837.               putc - putchar 
  10838.               ungetc 
  10839.               gets 
  10840.  
  10841.  
  10842. ΓòÉΓòÉΓòÉ 3.92. _getch - _getche - Read Character from Keyboard ΓòÉΓòÉΓòÉ
  10843.  
  10844. _getch - _getche - Read Character from Keyboard 
  10845.  
  10846.  Syntax 
  10847.  
  10848.                     #include <conio.h>
  10849.                     int _getch(void);
  10850.                     int _getche(void);
  10851.  
  10852.  Description 
  10853.  
  10854.           _getch reads a single character from the keyboard, without echoing. 
  10855.           _getche reads a single character from the keyboard and displays the 
  10856.           character read. Neither function can be used to read Ctrl-Break. 
  10857.  
  10858.           You can use _kbhit to test if a keystroke is waiting in the buffer. 
  10859.           If you call _getch or _getche without first calling _kbhit, the 
  10860.           program waits for a key to be pressed. 
  10861.  
  10862.  Returns 
  10863.  
  10864.           _getch and _getche return the character read. To read a function key 
  10865.           or cursor-moving key, you must call _getch and _getche twice; the 
  10866.           first call returns 0 or E0H, and the second call returns the 
  10867.           particular extended key code. 
  10868.  
  10869.  Example Code 
  10870.  
  10871.           This example gets characters from the keyboard until it finds the 
  10872.           character 'x'. 
  10873.  
  10874.                     #include <conio.h>
  10875.                     #include <stdio.h>
  10876.  
  10877.                     int main(void)
  10878.                     {
  10879.                        int ch;
  10880.  
  10881.                        printf("Type in some letters.\n");
  10882.                        printf("If you type in an 'x', the program ends.\n");
  10883.                        for (; ; ) {
  10884.                           ch = _getch();
  10885.                           if ('x' == ch) {
  10886.                              _ungetch(ch);
  10887.                              break;
  10888.                           }
  10889.                           _putch(ch);
  10890.                        }
  10891.                        ch = _getch();
  10892.                        printf("\nThe last character was '%c'.", ch);
  10893.                        return 0;
  10894.  
  10895.                        /****************************************************************************
  10896.                           Here is the output from a sample run:
  10897.  
  10898.                           Type in some letters.
  10899.                           If you type in an 'x', the program ends.
  10900.                           One Two Three Four Five Si
  10901.                           The last character was 'x'.
  10902.                        ****************************************************************************/
  10903.                     }
  10904.  
  10905.  Related Information 
  10906.  
  10907.               _cgets 
  10908.               fgetc 
  10909.               getc - getchar 
  10910.               _kbhit 
  10911.               _putch 
  10912.               _ungetch 
  10913.  
  10914.  
  10915. ΓòÉΓòÉΓòÉ 3.93. _getcwd - Get Path Name of Current Directory ΓòÉΓòÉΓòÉ
  10916.  
  10917. _getcwd - Get Path Name of Current Directory 
  10918.  
  10919.  Syntax 
  10920.  
  10921.                     #include <direct.h>
  10922.                     char *_getcwd(char *pathbuf, int n);
  10923.  
  10924.  Description 
  10925.  
  10926.           _getcwd gets the full path name of the current working directory and 
  10927.           stores it in the buffer pointed to by pathbuf.  The integer argument 
  10928.           n specifies the maximum length for the path name.  An error occurs if 
  10929.           the length of the path name, including the terminating null 
  10930.           character, exceeds n characters. 
  10931.  
  10932.           If the pathbuf argument is NULL, _getcwd uses malloc to reserve a 
  10933.           buffer of at least n bytes to store the path name.  If the current 
  10934.           working directory string is more than n bytes, a large enough buffer 
  10935.           will be allocated to contain the string.  You can later free this 
  10936.           buffer using the _getcwd return value as the argument to free. 
  10937.  
  10938.  Returns 
  10939.  
  10940.           _getcwd returns pathbuf. If an error occurs, _getcwd returns NULL and 
  10941.           sets errno to one of the following values:  compact break=fit. 
  10942.  
  10943.           Value       Meaning 
  10944.  
  10945.           ENOMEM      Not enough storage space available to reserve n bytes 
  10946.                       (when pathbuf is NULL). 
  10947.  
  10948.           ERANGE      The path name is longer than n characters. 
  10949.  
  10950.           EOS2ERR     An OS/2 call failed. Use _doserrno to obtain more 
  10951.                       information about the return code. 
  10952.  
  10953.  Example Code 
  10954.  
  10955.           This example stores the name of the current working directory (up to 
  10956.           _MAX_PATH characters) in a buffer.  The value of _MAX_PATH is defined 
  10957.           in <stdlib.h>. 
  10958.  
  10959.                     #include <direct.h>
  10960.                     #include <stdio.h>
  10961.                     #include <stdlib.h>
  10962.  
  10963.                     int main(void)
  10964.                     {
  10965.                        char buffer[_MAX_PATH];
  10966.  
  10967.                        if (NULL == getcwd(buffer, _MAX_PATH))
  10968.                           perror("getcwd error");
  10969.                        printf("The current directory is %s.\n", buffer);
  10970.                        return 0;
  10971.  
  10972.                        /****************************************************************************
  10973.                           The output should be similar to:
  10974.  
  10975.                           The current directory is E:\C_OS2\MIG_XMPS
  10976.                        ****************************************************************************/
  10977.                     }
  10978.  
  10979.  Related Information 
  10980.  
  10981.               chdir 
  10982.               _fullpath 
  10983.               _getdcwd 
  10984.               _getdrive 
  10985.               malloc 
  10986.  
  10987.  
  10988. ΓòÉΓòÉΓòÉ 3.94. _getdcwd - Get Full Path Name of Current Directory ΓòÉΓòÉΓòÉ
  10989.  
  10990. _getdcwd - Get Full Path Name of Current Directory 
  10991.  
  10992.  Syntax 
  10993.  
  10994.                     #include <direct.h>
  10995.                     char *_getdcwd(int drive, char *pathbuf, int n);
  10996.  
  10997.  Description 
  10998.  
  10999.           _getdcwd gets the full path name for the current directory of the 
  11000.           specified drive, and stores it in the location pointed to by pathbuf. 
  11001.           The drive argument is an integer value representing the drive (A: is 
  11002.           1, B: is 2, and so on). 
  11003.  
  11004.           The integer argument n specifies the maximum length for the path 
  11005.           name. An error occurs if the length of the path name, including the 
  11006.           terminating null character, exceeds n characters. 
  11007.  
  11008.           If the pathbuf argument is NULL, _getdcwd uses malloc to reserve a 
  11009.           buffer of at least n bytes to store the path name.  If the current 
  11010.           working directory string is more than n bytes, a large enough buffer 
  11011.           will be allocated to contain the string. You can later free this 
  11012.           buffer using the _getdcwd return value as the argument to free. 
  11013.  
  11014.           Alternatives to this function are the DosQueryCurrentDir and 
  11015.           DosQueryCurrentDisk functions. 
  11016.  
  11017.  Returns 
  11018.  
  11019.           _getdcwd returns pathbuf. If an error occurs, _getdcwd returns NULL 
  11020.           and sets errno to one of the following values:  compact break=fit. 
  11021.  
  11022.           Value          Meaning 
  11023.  
  11024.           ENOMEM         Not enough storage space available to reserve n bytes 
  11025.                          (when pathbuf is NULL). 
  11026.  
  11027.           ERANGE         The path name is longer than n characters. 
  11028.  
  11029.           EOS2ERR        An OS/2 call failed. Use _doserrno to obtain more 
  11030.                          information about the return code. 
  11031.  
  11032.  Example Code 
  11033.  
  11034.           This example uses _getdcwd to obtain the current working directory of 
  11035.           drive C. 
  11036.  
  11037.                     #include <stdio.h>
  11038.                     #include <direct.h>
  11039.                     #include <errno.h>
  11040.  
  11041.                     int main(void)
  11042.                     {
  11043.                        char *retBuffer;
  11044.  
  11045.                        retBuffer = _getdcwd(3, NULL, 0);
  11046.                        if (NULL == retBuffer)
  11047.                           printf("An error has occurred, errno is set to %d.\n", errno);
  11048.                        else
  11049.                           printf("%s is the current working directory in drive C.\n", retBuffer);
  11050.                        return 0;
  11051.  
  11052.                        /****************************************************************************
  11053.                           The output should be similar to:
  11054.  
  11055.                           C:\ is the current working directory in drive C.
  11056.                        ****************************************************************************/
  11057.                     }
  11058.  
  11059.  Related Information 
  11060.  
  11061.               chdir 
  11062.               _chdrive 
  11063.               _fullpath 
  11064.               _getcwd 
  11065.               _getdrive 
  11066.               malloc 
  11067.  
  11068.  
  11069. ΓòÉΓòÉΓòÉ 3.95. _getdrive - Get Current Working Drive ΓòÉΓòÉΓòÉ
  11070.  
  11071. _getdrive - Get Current Working Drive 
  11072.  
  11073.  Syntax 
  11074.  
  11075.                     #include <direct.h>
  11076.                     int _getdrive(void);
  11077.  
  11078.  Description 
  11079.  
  11080.           _getdrive gets the drive number for the current working drive. 
  11081.  
  11082.           An alternative to this function is the DosQueryCurrentDisk call. 
  11083.  
  11084.  Returns 
  11085.  
  11086.           _getdrive returns an integer corresponding to alphabetical position 
  11087.           of the letter representing the current working drive. For example, A: 
  11088.           is 1, B: is 2, J: is 10, and so on. 
  11089.  
  11090.  Example Code 
  11091.  
  11092.           This example gets and prints the current working drive number. 
  11093.  
  11094.                     #include <stdio.h>
  11095.                     #include <direct.h>
  11096.  
  11097.                     int main(void)
  11098.                     {
  11099.                        printf("Current working drive is %d.\n", _getdrive());
  11100.                        return 0;
  11101.  
  11102.                        /****************************************************************************
  11103.                           The output should be similar to:
  11104.  
  11105.                           Current working drive is 5.
  11106.                        ****************************************************************************/
  11107.                     }
  11108.  
  11109.  Related Information 
  11110.  
  11111.               chdir 
  11112.               _chdrive 
  11113.               _getcwd 
  11114.               _getdcwd 
  11115.  
  11116.  
  11117. ΓòÉΓòÉΓòÉ 3.96. getenv - Search for Environment Variables ΓòÉΓòÉΓòÉ
  11118.  
  11119. getenv - Search for Environment Variables 
  11120.  
  11121.  Syntax 
  11122.  
  11123.                     #include <stdlib.h>
  11124.                     char *getenv(const char *varname);
  11125.  
  11126.  Description 
  11127.  
  11128.           getenv searches the list of environment variables for an entry 
  11129.           corresponding to varname. 
  11130.  
  11131.  Returns 
  11132.  
  11133.           getenv returns a pointer to the environment table entry containing 
  11134.           the current string value of varname.  The return value is NULL if the 
  11135.           given variable is not currently defined or if the system does not 
  11136.           support environment variables. 
  11137.  
  11138.           You should copy the string that is returned because it may be written 
  11139.           over by a subsequent call to getenv. 
  11140.  
  11141.  Example Code 
  11142.  
  11143.           In this example, pathvar points to the value of the PATH environment 
  11144.           variable. 
  11145.  
  11146.                     #include <stdlib.h>
  11147.  
  11148.                     int main(void)
  11149.                     {
  11150.                        char *pathvar;
  11151.  
  11152.                        pathvar = getenv("PATH");
  11153.                        if (NULL == pathvar)
  11154.                           printf("Environment variable PATH is not defined.\n");
  11155.                        else
  11156.                           printf("Path set by environment variable PATH is successfully stored.\n");
  11157.                        return 0;
  11158.  
  11159.                        /****************************************************************************
  11160.                           The output should be:
  11161.  
  11162.                           Path set by environment variable PATH is successfully stored.
  11163.                        ****************************************************************************/
  11164.                     }
  11165.  
  11166.  Related Information 
  11167.  
  11168.               putenv 
  11169.  
  11170.  
  11171. ΓòÉΓòÉΓòÉ 3.97. getpid - Get Process Identifier ΓòÉΓòÉΓòÉ
  11172.  
  11173. getpid - Get Process Identifier 
  11174.  
  11175.  Syntax 
  11176.  
  11177.                     #include <process.h>
  11178.                     int getpid(void);
  11179.  
  11180.  Description 
  11181.  
  11182.           getpid gets the process identifier that uniquely identifies the 
  11183.           calling process. 
  11184.  
  11185.           Note:  In earlier releases of C Set ++, getpid began with an 
  11186.                  underscore (_getpid). Because it is defined by the X/Open 
  11187.                  standard, the underscore has been removed. For compatibility, 
  11188.                  The Developer's Toolkit will map _getpid to getpid for you. 
  11189.  
  11190.  Returns 
  11191.  
  11192.           getpid function the process identifier as an integer value.  There is 
  11193.           no error return value. 
  11194.  
  11195.  Example Code 
  11196.  
  11197.           This example prints the process identifier: 
  11198.  
  11199.                     #include <process.h>
  11200.                     #include <string.h>
  11201.                     #include <stdio.h>
  11202.                     #include <stdlib.h>
  11203.  
  11204.                     int main(void)
  11205.                     {
  11206.                        printf("Process identifier is %05d\n", getpid());
  11207.                        return 0;
  11208.  
  11209.                        /****************************************************************************
  11210.                           The output should be similar to:
  11211.  
  11212.                           Process identifier is 00242
  11213.                        ****************************************************************************/
  11214.                     }
  11215.  
  11216.  Related Information 
  11217.  
  11218.               _cwait 
  11219.               execl - _execvpe 
  11220.               _spawnl - _spawnvpe 
  11221.               wait 
  11222.  
  11223.  
  11224. ΓòÉΓòÉΓòÉ 3.98. gets - Read a Line ΓòÉΓòÉΓòÉ
  11225.  
  11226. gets - Read a Line 
  11227.  
  11228.  Syntax 
  11229.  
  11230.                     #include <stdio.h>
  11231.                     char *gets(char *buffer);
  11232.  
  11233.  Description 
  11234.  
  11235.           gets reads a line from the standard input stream stdin and stores it 
  11236.           in buffer.  The line consists of all characters up to and including 
  11237.           the first new-line character (\n) or EOF. gets then replaces the 
  11238.           new-line character, if read, with a null character (\0) before 
  11239.           returning the line. 
  11240.  
  11241.  Returns 
  11242.  
  11243.           If successful, gets returns its argument.  A NULL pointer return 
  11244.           value indicates an error or an end-of-file condition with no 
  11245.           characters read. Use ferror or feof to determine which of these 
  11246.           conditions occurred. If there is an error, the value stored in buffer 
  11247.           is undefined.  If an end-of-file condition occurs, buffer is not 
  11248.           changed. 
  11249.  
  11250.  Example Code 
  11251.  
  11252.           This example gets a line of input from stdin. 
  11253.  
  11254.                     #include <stdio.h>
  11255.  
  11256.                     #define  MAX_LINE      100
  11257.  
  11258.                     int main(void)
  11259.                     {
  11260.                        char line[MAX_LINE];
  11261.                        char *result;
  11262.  
  11263.                        if ((result = gets(line)) != NULL) {
  11264.                           if (ferror(stdin))
  11265.                              perror("Error");
  11266.                           printf("Input line : %s\n", result);
  11267.                        }
  11268.                        return 0;
  11269.  
  11270.                        /****************************************************************************
  11271.                           For the following input:
  11272.                           This is a test for function gets.
  11273.  
  11274.                           The output should be:
  11275.                           Input line : This a test for function gets.
  11276.                        ****************************************************************************/
  11277.                     }
  11278.  
  11279.  Related Information 
  11280.  
  11281.               _cgets 
  11282.               fgets 
  11283.               feof 
  11284.               ferror 
  11285.               fputs 
  11286.               getc - getchar 
  11287.               puts 
  11288.  
  11289.  
  11290. ΓòÉΓòÉΓòÉ 3.99. getwc - Read Wide Character from Stream ΓòÉΓòÉΓòÉ
  11291.  
  11292. getwc - Read Wide Character from Stream 
  11293.  
  11294.  Syntax 
  11295.  
  11296.                     #include <stdio.h>
  11297.                     #include <wchar.h>
  11298.                     wint_t getwc(FILE *stream);
  11299.  
  11300.  Description 
  11301.  
  11302.           getwc reads the next multibyte character from stream, converts it to 
  11303.           a wide character, and advances the associated file position indicator 
  11304.           for stream. 
  11305.  
  11306.           getwc is equivalent to fgetwc except that, if it is implemented as a 
  11307.           macro, it can evaluate stream  more than once. Therefore, the 
  11308.           argument should never be an expression with side effects. 
  11309.  
  11310.           The behavior of getwc is affected by the LC_CTYPE category of the 
  11311.           current locale. If you change the category between subsequent read 
  11312.           operations on the same stream, undefined results can occur. 
  11313.  
  11314.           After calling getwc, flush the buffer or reposition the stream 
  11315.           pointer before calling a write function for the stream, unless EOF 
  11316.           has been reached. After a write operation on the stream, flush the 
  11317.           buffer or reposition the stream pointer before calling getwc. 
  11318.  
  11319.  Returns 
  11320.  
  11321.           getwc returns the next wide character from the input stream, or WEOF. 
  11322.           If an error occurs, getwc sets the error indicator. If getwc 
  11323.           encounters the end-of-file, it sets the EOF indicator. If an encoding 
  11324.           error occurs during conversion of the multibyte character, getwc sets 
  11325.           errno to EILSEQ. 
  11326.  
  11327.           Use ferror or feof to determine whether an error or an EOF condition 
  11328.           occurred. EOF is only reached when an attempt is made to read past 
  11329.           the last byte of data. Reading up to and including the last byte of 
  11330.           data does not turn on the EOF indicator. 
  11331.  
  11332.  Example Code 
  11333.  
  11334.           This example opens a file and uses getwc to read wide characters from 
  11335.           the file. 
  11336.  
  11337.                     #include <errno.h>
  11338.                     #include <stdio.h>
  11339.                     #include <wchar.h>
  11340.  
  11341.                     int main(void)
  11342.                     {
  11343.                        FILE    *stream;
  11344.                        wint_t  wc;
  11345.  
  11346.                        if (NULL == (stream = fopen("getwc.dat", "r"))) {
  11347.                           printf("Unable to open: \"getwc.dat\".\n");
  11348.                           exit(1);
  11349.                        }
  11350.  
  11351.                        errno = 0;
  11352.                        while (WEOF !=(wc = getwc(stream)))
  11353.                           printf("wc = %lc\n", wc);
  11354.  
  11355.                        if (EILSEQ == errno) {
  11356.                           printf("An invalid wide character was encountered.\n");
  11357.                           exit(1);
  11358.                        }
  11359.                        fclose(stream);
  11360.                        return 0;
  11361.  
  11362.                        /****************************************************************************
  11363.                           Assuming the file getwc.dat contains:
  11364.  
  11365.                           Hello world!
  11366.  
  11367.                           The output should be:
  11368.  
  11369.                           wc = H
  11370.                           wc = e
  11371.                           wc = l
  11372.                           wc = l
  11373.                           wc = o
  11374.                           :
  11375.                        ****************************************************************************/
  11376.                     }
  11377.  
  11378.  Related Information 
  11379.  
  11380.               fgetwc 
  11381.               getwchar 
  11382.               getc - getchar 
  11383.               _getch - _getche 
  11384.               putwc 
  11385.  
  11386.  
  11387. ΓòÉΓòÉΓòÉ 3.100. getwchar - Get Wide Character from stdin ΓòÉΓòÉΓòÉ
  11388.  
  11389. getwchar - Get Wide Character from stdin 
  11390.  
  11391.  Syntax 
  11392.  
  11393.                     #include <wchar.h>
  11394.                     wint_t getwchar(void);
  11395.  
  11396.  Description 
  11397.  
  11398.           getwchar reads the next multibyte character from stdin, converts it 
  11399.           to a wide character, and advances the associated file position 
  11400.           indicator for stdin. A call to  getwchar is equivalent to a call to 
  11401.           getwc(stdin). 
  11402.  
  11403.           The behavior of getwchar is affected by the LC_CTYPE category of the 
  11404.           current locale. If you change the category between subsequent read 
  11405.           operations on the same stream, undefined results can occur. 
  11406.  
  11407.  Returns 
  11408.  
  11409.           getwchar returns the next wide character from stdin or WEOF. If 
  11410.           getwchar encounters EOF, it sets the EOF indicator for the stream and 
  11411.           returns WEOF. If a read error occurs, the error indicator for the 
  11412.           stream is set and getwchar returns WEOF. If an encoding error occurs 
  11413.           during the conversion of the multibyte character to a wide character, 
  11414.           getwchar sets errno to EILSEQ and returns WEOF. 
  11415.  
  11416.           Use ferror or feof to determine whether an error or an EOF condition 
  11417.           occurred. EOF is only reached when an attempt is made to read past 
  11418.           the last byte of data. Reading up to and including the last byte of 
  11419.           data does not turn on the EOF indicator. 
  11420.  
  11421.  Example Code 
  11422.  
  11423.           This example uses getwchar to read wide characters from the keyboard, 
  11424.           then prints the wide characters. 
  11425.  
  11426.                     #include <errno.h>
  11427.                     #include <stdio.h>
  11428.                     #include <wchar.h>
  11429.  
  11430.                     int main(void)
  11431.                     {
  11432.                        wint_t  wc;
  11433.  
  11434.                        errno = 0;
  11435.                        while (WEOF != (wc = getwchar()))
  11436.                           printf("wc = %lc\n", wc);
  11437.  
  11438.                        if (EILSEQ == errno) {
  11439.                           printf("An invalid wide character was encountered.\n");
  11440.                           exit(1);
  11441.                        }
  11442.                        return 0;
  11443.  
  11444.                        /****************************************************************************
  11445.                           Assuming you enter: abcde^Z                        (note: ^Z is CNTRL-Z)
  11446.  
  11447.                           The output should be:
  11448.  
  11449.                           wc = a
  11450.                           wc = b
  11451.                           wc = c
  11452.                           wc = d
  11453.                           wc = e
  11454.                        ****************************************************************************/
  11455.                     }
  11456.  
  11457.  Related Information 
  11458.  
  11459.               fgetc 
  11460.               getc - getchar 
  11461.               _getch - _getche 
  11462.               getwc 
  11463.  
  11464.  
  11465. ΓòÉΓòÉΓòÉ 3.101. gmtime - Convert Time ΓòÉΓòÉΓòÉ
  11466.  
  11467. gmtime - Convert Time 
  11468.  
  11469.  Syntax 
  11470.  
  11471.                     #include <time.h>
  11472.                     struct tm *gmtime(const time_t *time);
  11473.  
  11474.  Description 
  11475.  
  11476.           The gmtime function breaks down the time value and stores it in a tm 
  11477.           structure, defined in time.h.  The structure pointed to by the return 
  11478.           value reflects Coordinated Universal Time, not local time. The value 
  11479.           time is usually obtained from a call to time. 
  11480.  
  11481.           The fields of the tm structure include:  compact break=fit. 
  11482.  
  11483.           tm_sec         Seconds (0-61) 
  11484.  
  11485.           tm_min         Minutes (0-59) 
  11486.  
  11487.           tm_hour        Hours (0-23) 
  11488.  
  11489.           tm_mday        Day of month (1-31) 
  11490.  
  11491.           tm_mon         Month (0-11;  January = 0) 
  11492.  
  11493.           tm_year        Year (current year minus 1900) 
  11494.  
  11495.           tm_wday        Day of week (0-6;  Sunday = 0) 
  11496.  
  11497.           tm_yday        Day of year (0-365;  January 1 = 0) 
  11498.  
  11499.           tm_isdst       Zero if Daylight Saving Time is not in effect; 
  11500.                          positive if Daylight Saving Time is in effect; 
  11501.                          negative if the information is not available. 
  11502.  
  11503.  Returns 
  11504.  
  11505.           gmtime returns a pointer to the resulting tm structure. It returns 
  11506.           NULL if Coordinated Universal Time is not available. 
  11507.  
  11508.           Note: 
  11509.  
  11510.               The range (0-61) for tm_sec allows for as many as two leap 
  11511.                seconds. 
  11512.  
  11513.               The gmtime and localtime functions may use a common, statically 
  11514.                allocated buffer for the conversion. Each call to one of these 
  11515.                functions may alter the result of the previous call. 
  11516.  
  11517.               The time and date functions begin at 00:00:00 Coordinated 
  11518.                Universal Time, January 1, 1970. 
  11519.  
  11520.  Example Code 
  11521.  
  11522.           This example uses gmtime to adjust a time_t representation to a 
  11523.           Coordinated Universal Time character string, and then converts it to 
  11524.           a printable string using asctime. 
  11525.  
  11526.                     #include <stdio.h>
  11527.                     #include <time.h>
  11528.  
  11529.                     int main(void)
  11530.                     {
  11531.                        time_t ltime;
  11532.  
  11533.                        time(<ime);
  11534.                        printf("Coordinated Universal Time is %s\n", asctime(gmtime(<ime)));
  11535.                        return 0;
  11536.  
  11537.                        /****************************************************************************
  11538.                           The output should be similar to:
  11539.  
  11540.                           Coordinated Universal Time is Mon Sep 16 21:44 1995
  11541.                        ****************************************************************************/
  11542.                     }
  11543.  
  11544.  Related Information 
  11545.  
  11546.               asctime 
  11547.               ctime 
  11548.               localtime 
  11549.               mktime 
  11550.               time 
  11551.  
  11552.  
  11553. ΓòÉΓòÉΓòÉ 3.102. _heapchk - Validate Default Memory Heap ΓòÉΓòÉΓòÉ
  11554.  
  11555. _heapchk - Validate Default Memory Heap 
  11556.  
  11557.  Syntax 
  11558.  
  11559.                     #include <malloc.h>
  11560.                     int _heapchk(void);
  11561.  
  11562.  Description 
  11563.  
  11564.           _heapchk checks the default storage heap for minimal consistency by 
  11565.           checking all allocated and freed objects on the heap. 
  11566.  
  11567.           A heap-specific version of this function, _uheapchk, is also 
  11568.           available. 
  11569.  
  11570.           Note:  Using the _heapchk, _heapset, and _heap_walk functions (and 
  11571.                  their heap-specific equivalents) may add overhead to each 
  11572.                  object allocated from the heap. 
  11573.  
  11574.  Returns 
  11575.  
  11576.           _heapchk returns one of the following values, defined in <malloc.h>: 
  11577.  
  11578.           _HEAPBADBEGIN     The heap specified is not valid. (Only occurs if 
  11579.                             you changed the default heap and then later closed 
  11580.                             or destroyed it.) 
  11581.           _HEAPBADNODE      A memory node is corrupted, or the heap is damaged. 
  11582.           _HEAPEMPTY        The heap has not been initialized. 
  11583.           _HEAPOK           The heap appears to be consistent. 
  11584.  
  11585.  Example Code 
  11586.  
  11587.           This example performs some memory allocations, then calls _heapchk to 
  11588.           check the heap. 
  11589.  
  11590.                     #include <stdlib.h>
  11591.                     #include <stdio.h>
  11592.                     #include <malloc.h>
  11593.  
  11594.                     int main(void)
  11595.                     {
  11596.                        char *ptr;
  11597.                        int  rc;
  11598.  
  11599.                        if (NULL == (ptr = malloc(10))) {
  11600.                           puts("Could not allocate memory block.");
  11601.                           exit(EXIT_FAILURE);
  11602.                        }
  11603.                        *(ptr - 1) = 'x';      /* overwrites storage that was not allocated */
  11604.  
  11605.                        if (_HEAPOK != (rc = _heapchk())) {
  11606.                           switch(rc) {
  11607.                              case _HEAPEMPTY:
  11608.                                 puts("The heap has not been initialized.");
  11609.                                 break;
  11610.                              case _HEAPBADNODE:
  11611.                                 puts("A memory node is corrupted or the heap is damaged.");
  11612.                                 break;
  11613.                              case _HEAPBADBEGIN:
  11614.                                 puts("The heap specified is not valid.");
  11615.                                 break;
  11616.                           }
  11617.                           exit(rc);
  11618.                        }
  11619.                        free(ptr);
  11620.                        return 0;
  11621.  
  11622.                        /****************************************************************************
  11623.                           The output should be similar to :
  11624.  
  11625.                           A memory node is corrupted or the heap is damaged.
  11626.                        ****************************************************************************/
  11627.                     }
  11628.  
  11629.  Related Information 
  11630.  
  11631.               "Managing Memory" in the VisualAge C++ Programming Guide 
  11632.               _uheapchk 
  11633.               _heapmin 
  11634.               _heapset 
  11635.               _heap_walk 
  11636.  
  11637.  
  11638. ΓòÉΓòÉΓòÉ 3.103. _heapmin - Release Unused Memory from Default Heap ΓòÉΓòÉΓòÉ
  11639.  
  11640. _heapmin - Release Unused Memory from Default Heap 
  11641.  
  11642.  Syntax 
  11643.  
  11644.                     #include <stdlib.h>  /* also in <malloc.h> */
  11645.                     int _heapmin(void);
  11646.  
  11647.  Description 
  11648.  
  11649.           _heapmin returns all unused memory from the default run-time heap to 
  11650.           the operating system. 
  11651.  
  11652.           Heap-specific versions of this function (_uheapmin) are also 
  11653.           available. _heapmin always operates on the default heap. 
  11654.  
  11655.           Note:  If you create your own heap and make it the default heap, 
  11656.                  _heapmin calls the release function that you provide to return 
  11657.                  the memory. 
  11658.  
  11659.  Returns 
  11660.  
  11661.           _heapmin returns 0 if successful; if not, it returns -1. 
  11662.  
  11663.  Example Code 
  11664.  
  11665.           This example shows how to use the _heapmin function. 
  11666.  
  11667.                     #include <stdio.h>
  11668.                     #include <stdlib.h>
  11669.  
  11670.                     int main(void)
  11671.                     {
  11672.                        if (_heapmin())
  11673.                           printf("_heapmin failed.\n");
  11674.                        else
  11675.                           printf("_heapmin was successful.\n");
  11676.                        return 0;
  11677.  
  11678.                        /****************************************************************************
  11679.                           The output should be:
  11680.  
  11681.                          _heapmin was successful.
  11682.                        ****************************************************************************/
  11683.                     }
  11684.  
  11685.  Related Information 
  11686.  
  11687.               "Managing Memory" in the VisualAge C++ Programming Guide 
  11688.               _uheapmin 
  11689.  
  11690.  
  11691. ΓòÉΓòÉΓòÉ 3.104. _heapset - Validate and Set Default Heap ΓòÉΓòÉΓòÉ
  11692.  
  11693. _heapset - Validate and Set Default Heap 
  11694.  
  11695.  Syntax 
  11696.  
  11697.                     #include <malloc.h>
  11698.                     int _heapset(unsigned int fill);
  11699.  
  11700.  Description 
  11701.  
  11702.           _heapset checks the default storage heap for minimal consistency by 
  11703.           checking all allocated and freed objects on the heap (similar to 
  11704.           _heapchk). It then sets each byte of the heap's free objects to the 
  11705.           value of fill. 
  11706.  
  11707.           Using _heapset can help you locate problems where your program 
  11708.           continues to use a freed pointer to an object. After you set the free 
  11709.           heap to a specific value, when your program tries to interpret the 
  11710.           set values in the freed object as data, unexpected results occur, 
  11711.           indicating a problem. 
  11712.  
  11713.           A heap-specific version of this function, _uheapset, is also 
  11714.           available. 
  11715.  
  11716.           Note:  Using the _heapchk, _heapset, and _heap_walk functions (and 
  11717.                  their heap-specific equivalents) may add overhead to each 
  11718.                  object allocated from the heap. 
  11719.  
  11720.  Returns 
  11721.  
  11722.           _heapset returns one of the following values, defined in <malloc.h>: 
  11723.  
  11724.           _HEAPBADBEGIN     The heap specified is not valid; it may have been 
  11725.                             closed or destroyed. 
  11726.           _HEAPBADNODE      A memory node is corrupted, or the heap is damaged. 
  11727.           _HEAPEMPTY        The heap has not been initialized. 
  11728.           _HEAPOK           The heap appears to be consistent. 
  11729.  
  11730.  Example Code 
  11731.  
  11732.           This example allocates and frees memory, then uses _heapset to set 
  11733.           the free heap to X. It checks the return code from _heapset to ensure 
  11734.           the heap is still valid. 
  11735.  
  11736.                     #include <stdlib.h>
  11737.                     #include <stdio.h>
  11738.                     #include <malloc.h>
  11739.  
  11740.                     int main (void)
  11741.                     {
  11742.                        char  *ptr;
  11743.                        int   rc;
  11744.  
  11745.                        if (NULL == (ptr = malloc(10))) {
  11746.                           puts("Could not allocate memory block.");
  11747.                           exit(EXIT_FAILURE);
  11748.                        }
  11749.                        memset(ptr,'A',5);
  11750.                        free(ptr);
  11751.  
  11752.                        if (_HEAPOK != (rc = _heapset('X'))) {
  11753.                           switch(rc) {
  11754.                              case _HEAPEMPTY:
  11755.                                 puts("The heap has not been initialized.");
  11756.                                 break;
  11757.                              case _HEAPBADNODE:
  11758.                                 puts("A memory node is corrupted or the heap is damaged.");
  11759.                                 break;
  11760.                              case _HEAPBADBEGIN:
  11761.                                 puts("The heap specified is not valid.");
  11762.                                 break;
  11763.                           }
  11764.                           exit(rc);
  11765.                        }
  11766.                        return 0;
  11767.                     }
  11768.  
  11769.  Related Information 
  11770.  
  11771.               "Managing Memory" in the VisualAge C++ Programming Guide 
  11772.               _heapchk 
  11773.               _heapmin 
  11774.               _heap_walk 
  11775.               _uheapset 
  11776.  
  11777.  
  11778. ΓòÉΓòÉΓòÉ 3.105. _heap_walk - Return Information about Default Heap ΓòÉΓòÉΓòÉ
  11779.  
  11780. _heap_walk - Return Information about Default Heap 
  11781.  
  11782.  Syntax 
  11783.  
  11784.                     #include <malloc.h>
  11785.                     int _heap_walk(int (*callback_fn)(const void *object, size_t size,
  11786.                                                                                    int flag, int status,
  11787.                                                                                    const char* file, int line) );
  11788.  
  11789.  Description 
  11790.  
  11791.           _heap_walk traverses the default heap, and for each allocated or 
  11792.           freed object, it calls the callback_fn function that you provide. For 
  11793.           each object, it passes your function: 
  11794.  
  11795.           object    A pointer to the object. 
  11796.  
  11797.           size      The size of the object. 
  11798.  
  11799.           flag      The value _USEDENTRY if the object is currently allocated, 
  11800.                     or _FREEENTRY if the object has been freed.  (Both values 
  11801.                     are defined in <malloc.h>.) 
  11802.  
  11803.           status    One of the following values, defined in <malloc.h>, 
  11804.                     depending on the status of the object: 
  11805.  
  11806.                     _HEAPBADBEGIN          The heap specified is not valid; it 
  11807.                                            may have been closed or destroyed. 
  11808.  
  11809.                     _HEAPBADNODE           A memory node is corrupted, or the 
  11810.                                            heap is damaged. 
  11811.  
  11812.                     _HEAPEMPTY             The heap has not been initialized. 
  11813.  
  11814.                     _HEAPOK                The heap appears to be consistent. 
  11815.  
  11816.           file      The name of the file where the object was allocated. 
  11817.  
  11818.           line      The line where the object was allocated. 
  11819.  
  11820.           _heap_walk provides information about all objects, regardless of 
  11821.           which memory management functions were used to allocate them. 
  11822.           However, the file and line information are only available if the 
  11823.           object was allocated and freed using the debug versions of the memory 
  11824.           management functions. Otherwise, file is NULL and line is 0. 
  11825.  
  11826.           _heap_walk calls callback_fn for each object until one of the 
  11827.           following occurs: 
  11828.  
  11829.               All objects have been traversed. 
  11830.               callback_fn returns a nonzero value to _heap_walk. 
  11831.               It cannot continue because of a problem with the heap. 
  11832.  
  11833.           You may want to code your callback_fn to return a nonzero value if 
  11834.           the status of the object is not _HEAPOK. Even if callback_fn returns 
  11835.           0 for an object that is corrupted, _heap_walk cannot continue because 
  11836.           of the state of the heap and returns to its caller. 
  11837.  
  11838.           You can use callback_fn to process the information from _heap_walk in 
  11839.           various ways. For example, you may want to print the information to a 
  11840.           file or use it to generate your own error messages. You can use the 
  11841.           information to look for memory leaks and objects incorrectly 
  11842.           allocated or freed from the heap. It can be especially useful to call 
  11843.           _heap_walk when _heapchk returns an error. 
  11844.  
  11845.           A heap-specific version of this function, _uheap_walk, is also 
  11846.           available. 
  11847.  
  11848.           Note: 
  11849.  
  11850.               Using the _heapchk, _heapset, and _heap_walk functions (and 
  11851.                their heap-specific equivalents) may add overhead to each object 
  11852.                allocated from the heap. 
  11853.  
  11854.               _heap_walk locks the heap while it traverses it, to ensure that 
  11855.                no other operations use the heap until _heap_walk finishes. As a 
  11856.                result, in your callback_fn, you cannot call any critical 
  11857.                functions in the run-time library, either explicitly or by 
  11858.                calling another function that calls a critical function. See the 
  11859.                VisualAge C++ Programming Guide for a list of critical 
  11860.                functions. 
  11861.  
  11862.  Returns 
  11863.  
  11864.           _heap_walk returns the last value of status to the caller. 
  11865.  
  11866.  Example Code 
  11867.  
  11868.           This example allocates some memory, then uses _heap_walk to walk the 
  11869.           heap and pass information about allocated objects to the callback 
  11870.           function callback_function. callback_function then checks the 
  11871.           information and keeps track of the number of allocated objects. 
  11872.  
  11873.                     #include <stdlib.h>
  11874.                     #include <stdio.h>
  11875.                     #include <malloc.h>
  11876.  
  11877.                     int callback_function(const void *pentry, size_t sz, int useflag, int status,
  11878.                                           const char *filename, size_t line)
  11879.                     {
  11880.                        if (_HEAPOK != status) {
  11881.                           puts("status is not _HEAPOK.");
  11882.                           exit(status);
  11883.                        }
  11884.                        if (_USEDENTRY == useflag)
  11885.                           printf("allocated  %p     %u\n", pentry, sz);
  11886.                        else
  11887.                           printf("freed      %p     %u\n", pentry, sz);
  11888.                        return 0;
  11889.                     }
  11890.  
  11891.                     int main(void)
  11892.                     {
  11893.                        char  *p1, *p2, *p3;
  11894.  
  11895.                        if (NULL == (p1 = malloc(100)) ||
  11896.                            NULL == (p2 = malloc(200)) ||
  11897.                            NULL == (p3 = malloc(300))) {
  11898.                           puts("Could not allocate memory block.");
  11899.                           exit(EXIT_FAILURE);
  11900.                        }
  11901.                        free(p2);
  11902.                        puts("usage      address   size\n-----      -------   ----");
  11903.  
  11904.                        _heap_walk(callback_function);
  11905.  
  11906.                        free(p1);
  11907.                        free(p3);
  11908.                        return 0;
  11909.  
  11910.                        /****************************************************************************
  11911.                           The output should be similar to :
  11912.  
  11913.                           usage      address   size
  11914.                           -----      -------   ----
  11915.                           allocated  73A10     300
  11916.                           allocated  738B0     100
  11917.                            :
  11918.                            :
  11919.                           freed      73920     224
  11920.                        ****************************************************************************/
  11921.                     }
  11922.  
  11923.  Related Information 
  11924.  
  11925.               "Managing Memory" in the VisualAge C++ Programming Guide 
  11926.               "Debugging Your Heaps" in the VisualAge C++ Programming Guide 
  11927.               _heapchk 
  11928.               _heapmin 
  11929.               _heapset 
  11930.               _uheap_walk 
  11931.  
  11932.  
  11933. ΓòÉΓòÉΓòÉ 3.106. hypot - Calculate Hypotenuse ΓòÉΓòÉΓòÉ
  11934.  
  11935. hypot - Calculate Hypotenuse 
  11936.  
  11937.  Syntax 
  11938.  
  11939.                     #include <math.h>
  11940.                     double hypot(double side1, double side2);
  11941.  
  11942.  Description 
  11943.  
  11944.           hypot calculates the length of the hypotenuse of a right-angled 
  11945.           triangle based on the lengths of two sides side1 and side2. A call to 
  11946.           hypot is equivalent to: 
  11947.  
  11948.                        sqrt(side1 * side1 + side2 * side2);
  11949.  
  11950.  Returns 
  11951.  
  11952.           hypot returns the length of the hypotenuse. If an overflow results, 
  11953.           hypot sets errno to ERANGE and returns the value HUGE_VAL. If an 
  11954.           underflow results, hypot sets errno to ERANGE and returns zero. 
  11955.  
  11956.  Example Code 
  11957.  
  11958.           This example calculates the hypotenuse of a right-angled triangle 
  11959.           with sides of 3.0 and 4.0. 
  11960.  
  11961.                     #include <math.h>
  11962.  
  11963.                     int main(void)
  11964.                     {
  11965.                        double x,y,z;
  11966.  
  11967.                        x = 3.0;
  11968.                        y = 4.0;
  11969.                        z = hypot(x, y);
  11970.                        printf("The hypotenuse of the triangle with sides %lf and %lf"
  11971.                        " is %lf\n", x, y, z);
  11972.                        return 0;
  11973.  
  11974.                        /****************************************************************************
  11975.                           The output should be:
  11976.  
  11977.                          The hypotenuse of the triangle with sides 3.000000 and 4.000000 is 5.000000
  11978.                        ****************************************************************************/
  11979.                     }
  11980.  
  11981.  Related Information 
  11982.  
  11983.               sqrt 
  11984.  
  11985.  
  11986. ΓòÉΓòÉΓòÉ 3.107. iconv - Convert Characters to New Code Set ΓòÉΓòÉΓòÉ
  11987.  
  11988. iconv - Convert Characters to New Code Set 
  11989.  
  11990.  Syntax 
  11991.  
  11992.                     #include <iconv.h>
  11993.                     size_t iconv(iconv_t cd, char **inbuf, size_t *insize,
  11994.                                  char **outbuf, size_t *outsize);
  11995.  
  11996.  Description 
  11997.  
  11998.           iconv converts a sequence of characters in one encoded character set, 
  11999.           in the array indirectly pointed to by inbuf and converts them to a 
  12000.           sequence of corresponding characters in another encoded character 
  12001.           set. It stores the corresponding sequence in the array indirectly 
  12002.           pointed to by outbuf. cd is the conversion descriptor returned from 
  12003.           iconv_open that describes which codesets are used in the conversion. 
  12004.  
  12005.           inbuf points to a variable that points to the first character of 
  12006.           input, and insize indicates the number of bytes of input. outbuf 
  12007.           points to a variable that points to the first character of output, 
  12008.           and outsize indicates the number of available bytes for output. 
  12009.  
  12010.           As iconv converts the characters, it updates the variable pointed to 
  12011.           by inbuf to point to the next byte in the input buffer, and updates 
  12012.           the variable pointed to by outbut to the byte following the last 
  12013.           successfully converted character. It also decrements insize and 
  12014.           outsize to reflect the number of bytes of input remaining and the 
  12015.           number of bytes still available for output, respectively. If the 
  12016.           entire input string is converted, insize will be 0; if an error stops 
  12017.           the conversion, insize will have a nonzero value. 
  12018.  
  12019.           Sharing a conversion descriptor in iconv across multiple threads may 
  12020.           result in undefined behavior. 
  12021.  
  12022.  Returns 
  12023.  
  12024.           iconv returns the number of nonidentical conversions (substitutions). 
  12025.           If an error occurs, conversion stops after the previous successfully 
  12026.           converted character; iconv returns (size_t)-1, and sets errno to one 
  12027.           of the following values:  compact break=fit. 
  12028.  
  12029.           Value       Meaning 
  12030.  
  12031.           EILSEQ      A sequence of input bytes does not form a valid character 
  12032.                       in the specified encoded character set. 
  12033.  
  12034.           E2BIG       outbuf is not large enough to hold the converted value. 
  12035.  
  12036.           EINVAL      The input ends with an incomplete character. 
  12037.  
  12038.           EBADF       cd is not a valid conversion descriptor. 
  12039.  
  12040.  Example Code 
  12041.  
  12042.           This example converts an array of characters coded in encoded 
  12043.           character set IBM-850 (in in) to an array of characters coded in 
  12044.           encoded character set IBM-037 (stored in out). 
  12045.  
  12046.                     #include <iconv.h>
  12047.                     #include <stdlib.h>
  12048.                     #include <stdio.h>
  12049.  
  12050.                     int main(void)
  12051.                     {
  12052.                        const char   fromcode[] = "IBM-850";
  12053.                        const char   tocode[] = "IBM-037";
  12054.                        iconv_t      cd;
  12055.                        char         in[] = "ABCDEabcde";
  12056.                        size_t       in_size;
  12057.                        char         *inptr = in;
  12058.                        char         out[100];
  12059.                        size_t       out_size = sizeof(out);
  12060.                        char         *outptr = out;
  12061.                        int          i;
  12062.  
  12063.                        if ((iconv_t)(-1) == (cd = iconv_open(tocode, fromcode))) {
  12064.                           printf("Failed to iconv_open %s to %s.\n", fromcode, tocode);
  12065.                           exit(EXIT_FAILURE);
  12066.                        }
  12067.                        /* Convert the first 3 characters in array "in". */
  12068.                        in_size = 3;
  12069.                        if ((size_t)(-1) == iconv(cd, &inptr, &in_size, &outptr, &out_size)) {
  12070.                           printf("Fail to convert first 3 characters to new code set.\n");
  12071.                           exit(EXIT_FAILURE);
  12072.                        }
  12073.                        /* Convert the rest of the characters in array "in". */
  12074.                        in_size = sizeof(in) - 3;
  12075.                        if ((size_t)(-1) == iconv(cd, &inptr, &in_size, &outptr, &out_size)) {
  12076.                           printf("Fail to convert the rest of the characters to new code set.\n");
  12077.                           exit(EXIT_FAILURE);
  12078.                        }
  12079.                        *outptr = '\0';
  12080.                        printf("The hex representation of string %s are:\n  In codepage %s ==> ",
  12081.                               in, fromcode);
  12082.                        for (i = 0; in[i] != '\0'; i++) {
  12083.                           printf("0x%02x ", in[i]);
  12084.                        }
  12085.                        printf("\n  In codepage %s ==> ", tocode);
  12086.                        for (i = 0; out[i] != '\0'; i++) {
  12087.                           printf("0x%02x ", out[i]);
  12088.                        }
  12089.                        if (-1 == iconv_close(cd)) {
  12090.                           printf("Fail to iconv_close.\n");
  12091.                           exit(EXIT_FAILURE);
  12092.                        }
  12093.                        return 0;
  12094.  
  12095.                        /****************************************************************************
  12096.                           The output should be similar to :
  12097.  
  12098.                           The hex representation of string ABCDEabcde are:
  12099.                             In codepage IBM-850 ==> 0x41 0x42 0x43 0x44 0x45 0x61 0x62 0x63 0x64 0x65
  12100.                             In codepage IBM-037 ==> 0xc1 0xc2 0xc3 0xc4 0xc5 0x81 0x82 0x83 0x84 0x85
  12101.                        ****************************************************************************/
  12102.                     }
  12103.  
  12104.  Related Information 
  12105.  
  12106.               iconv_close 
  12107.               iconv_open 
  12108.               setlocale 
  12109.               "Internationalization Services" in the VisualAge C++ Programming 
  12110.                Guide 
  12111.  
  12112.  
  12113. ΓòÉΓòÉΓòÉ 3.108. iconv_close - Remove Conversion Descriptor ΓòÉΓòÉΓòÉ
  12114.  
  12115. iconv_close - Remove Conversion Descriptor 
  12116.  
  12117.  Syntax 
  12118.  
  12119.                     #include <iconv.h>
  12120.                     int iconv_close(iconv_t cd);
  12121.  
  12122.  Description 
  12123.  
  12124.           iconv_close deallocates the conversion descriptor cd and all other 
  12125.           associated resources allocated by the iconv_open function. 
  12126.  
  12127.  Returns 
  12128.  
  12129.           If successful, iconv_close returns 0.  Otherwise, iconv_close returns 
  12130.           -1 is returned and sets errno to indicate the cause of the error. If 
  12131.           cd is not a valid descriptor, an error occurs and iconv_close sets 
  12132.           errno to EBADF. 
  12133.  
  12134.  Example Code 
  12135.  
  12136.           This example shows how you would use iconv_close to remove a 
  12137.           conversion descriptor. 
  12138.  
  12139.                     #include <iconv.h>
  12140.                     #include <stdlib.h>
  12141.                     #include <stdio.h>
  12142.  
  12143.                     int main(void)
  12144.                     {
  12145.                        const char   fromcode[] = "IBM-850";
  12146.                        const char   tocode[] = "IBM-863";
  12147.                        iconv_t      cd;
  12148.  
  12149.                        if ((iconv_t)(-1) == (cd = iconv_open(tocode, fromcode))) {
  12150.                           printf("Failed to iconv_open %s to %s.\n", fromcode, tocode);
  12151.                           exit(EXIT_FAILURE);
  12152.                        }
  12153.                        if (-1 == iconv_close(cd)) {
  12154.                           printf("Fail to iconv_close.\n");
  12155.                           exit(EXIT_FAILURE);
  12156.                        }
  12157.                        return 0;
  12158.                     }
  12159.  
  12160.  Related Information 
  12161.  
  12162.               iconv 
  12163.               iconv_open 
  12164.               setlocale 
  12165.               "Internationalization Services" in the VisualAge C++ Programming 
  12166.                Guide 
  12167.  
  12168.  
  12169. ΓòÉΓòÉΓòÉ 3.109. iconv_open - Create Conversion Descriptor ΓòÉΓòÉΓòÉ
  12170.  
  12171. iconv_open - Create Conversion Descriptor 
  12172.  
  12173.  Syntax 
  12174.  
  12175.                     #include <iconv.h>
  12176.                     iconv_t iconv_open(const char *tocode, const char *fromcode);
  12177.  
  12178.  Description 
  12179.  
  12180.           iconv_open performs all the initialization needed to convert 
  12181.           characters from the encoded character set specified in the array 
  12182.           pointed to by fromcode to the encoded character set specified in the 
  12183.           array pointed to by tocode. It creates a conversion descriptor that 
  12184.           relates the two encoded character sets. You can then use the 
  12185.           conversion descriptor with the iconv function to convert characters 
  12186.           between the codesets. 
  12187.  
  12188.           The conversion descriptor remains valid until you close it with 
  12189.           iconv_close. 
  12190.  
  12191.           For information about the settings of fromcode, tocode, and their 
  12192.           permitted combinations, see the section on internationalization in 
  12193.           the VisualAge C++ Programming Guide. 
  12194.  
  12195.  Returns 
  12196.  
  12197.           If successful, iconv_open returns a conversion descriptor of type 
  12198.           iconv_t. Otherwise, it returns (iconv_t)-1, and sets errno to 
  12199.           indicate the error. If you cannot convert between the encoded 
  12200.           character sets specified, an error occurs and iconv_open sets errno 
  12201.           to EINVAL. 
  12202.  
  12203.  Example Code 
  12204.  
  12205.           This example shows how to use iconv_open, iconv, and iconv_close to 
  12206.           convert characters from one codeset to another. 
  12207.  
  12208.                     #include <iconv.h>
  12209.                     #include <stdlib.h>
  12210.                     #include <stdio.h>
  12211.  
  12212.                     int main(void)
  12213.                     {
  12214.                        const char   fromcode[] = "IBM-932";
  12215.                        const char   tocode[] = "IBM-930";
  12216.                        iconv_t      cd;
  12217.                        char         in[] = "\x81\x40\x81\x80";
  12218.                        size_t       in_size = sizeof(in);
  12219.                        char         *inptr = in;
  12220.                        char         out[100];
  12221.                        size_t       out_size = sizeof(out);
  12222.                        char         *outptr = out;
  12223.                        int          i;
  12224.  
  12225.                        if ((iconv_t)(-1) == (cd = iconv_open(tocode, fromcode))) {
  12226.                           printf("Failed to iconv_open %s to %s.\n", fromcode, tocode);
  12227.                           exit(EXIT_FAILURE);
  12228.                        }
  12229.                        if ((size_t)(-1) == iconv(cd, &inptr, &in_size, &outptr, &out_size)) {
  12230.                           printf("Fail to convert characters to new code set.\n");
  12231.                           exit(EXIT_FAILURE);
  12232.                        }
  12233.                        *outptr = '\0';
  12234.                        printf("The hex representation of string %s are:\n  In codepage %s ==> ",
  12235.                               in, fromcode);
  12236.                        for (i = 0; in[i] != '\0'; i++) {
  12237.                           printf("0x%02x ", in[i]);
  12238.                        }
  12239.                        printf("\n  In codepage %s ==> ", tocode);
  12240.                        for (i = 0; out[i] != '\0'; i++) {
  12241.                           printf("0x%02x ", out[i]);
  12242.                        }
  12243.                        if (-1 == iconv_close(cd)) {
  12244.                           printf("Fail to iconv_close.\n");
  12245.                           exit(EXIT_FAILURE);
  12246.                        }
  12247.                        return 0;
  12248.  
  12249.                        /****************************************************************************
  12250.                           The output should be similar to :
  12251.  
  12252.                           The hex representation of string ╨«@╨«Γöÿ are:
  12253.                             In codepage IBM-932 ==> 0x81 0x40 0x81 0x80
  12254.                             In codepage IBM-930 ==> 0x0e 0x40 0x40 0x44 0x7b 0x0f
  12255.                        ****************************************************************************/
  12256.                     }
  12257.  
  12258.  Related Information 
  12259.  
  12260.               iconv 
  12261.               iconv_close 
  12262.               setlocale 
  12263.               "Internationalization Services" in the VisualAge C++ Programming 
  12264.                Guide 
  12265.  
  12266.  
  12267. ΓòÉΓòÉΓòÉ 3.110. isalnum to isxdigit - Test Integer Value ΓòÉΓòÉΓòÉ
  12268.  
  12269. isalnum to isxdigit - Test Integer Value 
  12270.  
  12271.  Syntax 
  12272.  
  12273.                     #include <ctype.h>
  12274.                                                   /* test for:                            */
  12275.                     int isalnum(int c);  /* alphanumeric character               */
  12276.                     int isalpha(int c);  /* alphabetic character                 */
  12277.                     int iscntrl(int c);  /* control character                    */
  12278.                     int isdigit(int c);  /* decimal digit                        */
  12279.                     int isgraph(int c);  /* printable character, excluding space */
  12280.                     int islower(int c);  /* lowercase character                  */
  12281.                     int isprint(int c);  /* printable character, including space */
  12282.                     int ispunct(int c);  /* nonalphanumeric printable character, excluding space */
  12283.                     int isspace(int c);  /* whitespace character                 */
  12284.                     int isupper(int c);  /* uppercase character                  */
  12285.                     int isxdigit(int c); /* hexadecimal digit                    */
  12286.  
  12287.  Description 
  12288.  
  12289.           These functions test a given integer value c to determine if it has a 
  12290.           certain property as defined by the LC_CTYPE category of your current 
  12291.           locale. The value of c must be representable as an unsigned char, or 
  12292.           EOF. 
  12293.  
  12294.           The functions test for the following: 
  12295.  
  12296.           isalnum     Alphanumeric character (uppercase or lowercase letter, or 
  12297.                       decimal digit), as defined in the locale source file in 
  12298.                       the alnum class of the LC_CTYPE category of the current 
  12299.                       locale. 
  12300.  
  12301.           isalpha     Alphabetic character, as defined in the locale source 
  12302.                       file in the alpha class of the LC_CTYPE category of the 
  12303.                       current locale. 
  12304.  
  12305.           iscntrl     Control character, as defined in the locale source file 
  12306.                       in the cntrl class of the LC_CTYPE category of the 
  12307.                       current locale. 
  12308.  
  12309.           isdigit     Decimal digit (0 through 9), as defined in the locale 
  12310.                       source file in the digit class of the LC_CTYPE category 
  12311.                       of the current locale. 
  12312.  
  12313.           isgraph     Printable character, excluding the space character, as 
  12314.                       defined in the locale source file in the graph class of 
  12315.                       the LC_CTYPE category of the current locale. 
  12316.  
  12317.           islower     Lowercase letter, as defined in the locale source file in 
  12318.                       the lower class of the LC_CTYPE category of the current 
  12319.                       locale. 
  12320.  
  12321.           isprint     Printable character, including the space character, as 
  12322.                       defined in the locale source file in the print class of 
  12323.                       the LC_CTYPE category of the current locale. 
  12324.  
  12325.           ispunct     Nonalphanumeric printable character, excluding the space 
  12326.                       character, as defined in the locale source file in the 
  12327.                       punct class of the LC_CTYPE category of the current 
  12328.                       locale. 
  12329.  
  12330.           isspace     White-space character, as defined in the locale source 
  12331.                       file in the space class of the LC_CTYPE category of the 
  12332.                       current locale. 
  12333.  
  12334.           isupper     Uppercase letter, as defined in the locale source file in 
  12335.                       the upper class of the LC_CTYPE category of the current 
  12336.                       locale. 
  12337.  
  12338.           isxdigit    Hexadecimal digit (0 through 9, a through f, or A through 
  12339.                       F), as defined in the locale source file in the xdigit 
  12340.                       class of the LC_CTYPE category of the current locale. 
  12341.  
  12342.           You can redefine any character class in the LC_CTYPE category of the 
  12343.           current locale, with some restrictions. See the section about the 
  12344.           LC_CTYPE class in the VisualAge C++ Programming Guide for details 
  12345.           about these restrictions. 
  12346.  
  12347.  Returns 
  12348.  
  12349.           These functions return a nonzero value if the integer satisfies the 
  12350.           test condition, or 0 if it does not. 
  12351.  
  12352.  Example Code 
  12353.  
  12354.           This example analyzes all characters between 0x0 and 0xFF. The output 
  12355.           of this example is a 256-line table showing the characters from 0 to 
  12356.           255, indicating whether they have the properties tested for. 
  12357.  
  12358.                     #include <stdio.h>
  12359.                     #include <ctype.h>
  12360.                     #include <locale.h>
  12361.  
  12362.                     #define UPPER_LIMIT   0xFF
  12363.  
  12364.                     int main(void)
  12365.                     {
  12366.                        int ch;
  12367.  
  12368.                        setlocale(LC_ALL, "En_US");
  12369.  
  12370.                        for (ch = 0; ch <= UPPER_LIMIT; ++ch) {
  12371.                           printf("%#04x ", ch);
  12372.                           printf("%c", isprint(ch)  ? ch     : ' ');
  12373.                           printf("%s", isalnum(ch)  ? " AN"  : "   ");
  12374.                           printf("%s", isalpha(ch)  ? " A "  : "   ");
  12375.                           printf("%s", iscntrl(ch)  ? " C "  : "   ");
  12376.                           printf("%s", isdigit(ch)  ? " D "  : "   ");
  12377.                           printf("%s", isgraph(ch)  ? " G "  : "   ");
  12378.                           printf("%s", islower(ch)  ? " L "  : "   ");
  12379.                           printf("%s", ispunct(ch)  ? " PU"  : "   ");
  12380.                           printf("%s", isspace(ch)  ? " S "  : "   ");
  12381.                           printf("%s", isprint(ch)  ? " PR"  : "   ");
  12382.                           printf("%s", isupper(ch)  ? " U "  : "   ");
  12383.                           printf("%s", isxdigit(ch) ? " H "  : "   ");
  12384.                           putchar('\n');
  12385.                        }
  12386.                        return 0;
  12387.  
  12388.                        /****************************************************************************
  12389.                           The output should be similar to :
  12390.                           :
  12391.                           0x20                        S  PR
  12392.                           0x21 !             G     PU    PR
  12393.                           0x22 "             G     PU    PR
  12394.                           0x23 #             G     PU    PR
  12395.                           0x24 $             G     PU    PR
  12396.                           0x25 %             G     PU    PR
  12397.                           0x26 &             G     PU    PR
  12398.                           0x27 '             G     PU    PR
  12399.                           0x28 (             G     PU    PR
  12400.                           0x29 )             G     PU    PR
  12401.                           0x2a *             G     PU    PR
  12402.                           0x2b +             G     PU    PR
  12403.                           0x2c ,             G     PU    PR
  12404.                           0x2d -             G     PU    PR
  12405.                           0x2e .             G     PU    PR
  12406.                           0x2f /             G     PU    PR
  12407.                           0x30 0 AN       D  G           PR    H
  12408.                           0x31 1 AN       D  G           PR    H
  12409.                           0x32 2 AN       D  G           PR    H
  12410.                           0x33 3 AN       D  G           PR    H
  12411.                           0x34 4 AN       D  G           PR    H
  12412.                           0x35 5 AN       D  G           PR    H
  12413.                           0x36 6 AN       D  G           PR    H
  12414.                           0x37 7 AN       D  G           PR    H
  12415.                           0x38 8 AN       D  G           PR    H
  12416.                           0x39 9 AN       D  G           PR    H
  12417.                           :
  12418.                        ****************************************************************************/
  12419.                     }
  12420.  
  12421.  Related Information 
  12422.  
  12423.               isascii 
  12424.               iswalnum to iswxdigit 
  12425.               setlocale 
  12426.               tolower - toupper 
  12427.               _toascii - _tolower - _toupper 
  12428.  
  12429.  
  12430. ΓòÉΓòÉΓòÉ 3.111. isascii - Test Integer Values ΓòÉΓòÉΓòÉ
  12431.  
  12432. isascii - Test Integer Values 
  12433.  
  12434.  Syntax 
  12435.  
  12436.                     #include <ctype.h>
  12437.                     int isascii(int c);
  12438.  
  12439.  Description 
  12440.  
  12441.           isascii tests if an integer is within the ASCII range.  This macro 
  12442.           assumes that the system uses the ASCII character set. 
  12443.  
  12444.           Note:  In earlier releases of C Set ++, isascii began with an 
  12445.                  underscore (_isascii). Because it is defined by the X/Open 
  12446.                  standard, the underscore has been removed. For compatibility, 
  12447.                  The Developer's Toolkit will map _isascii to isascii for you. 
  12448.  
  12449.  Returns 
  12450.  
  12451.           isascii returns a nonzero value if the integer is within the ASCII 
  12452.           set, and 0 if it is not. 
  12453.  
  12454.  Example Code 
  12455.  
  12456.           This example tests the integers from 0x7c to 0x82, and prints the 
  12457.           corresponding ASCII character if the integer is within the ASCII 
  12458.           range. 
  12459.  
  12460.                     #include <stdio.h>
  12461.                     #include <ctype.h>
  12462.  
  12463.                     int main(void)
  12464.                     {
  12465.                        int ch;
  12466.  
  12467.                        for (ch = 0x7c; ch <= 0x82; ch++) {
  12468.                           printf("%#04x    ", ch);
  12469.                           if (isascii(ch))
  12470.                              printf("The ASCII character is %c\n", ch);
  12471.                           else
  12472.                              printf("Not an ASCII character\n");
  12473.                        }
  12474.                        return 0;
  12475.  
  12476.                        /****************************************************************************
  12477.                           The output should be:
  12478.  
  12479.                           0x7c    The ASCII character is |
  12480.                           0x7d    The ASCII character is }
  12481.                           0x7e    The ASCII character is ~
  12482.                           0x7f    The ASCII character is 
  12483.                           0x80    Not an ASCII character
  12484.                           0x81    Not an ASCII character
  12485.                           0x82    Not an ASCII character
  12486.                        ****************************************************************************/
  12487.                     }
  12488.  
  12489.  Related Information 
  12490.  
  12491.               isalnum to isxdigit 
  12492.               _iscsym - _iscsymf 
  12493.               iswalnum to iswxdigit 
  12494.               _toascii - _tolower - _toupper 
  12495.               tolower - toupper 
  12496.  
  12497.  
  12498. ΓòÉΓòÉΓòÉ 3.112. isatty - Test Handle for Character Device ΓòÉΓòÉΓòÉ
  12499.  
  12500. isatty - Test Handle for Character Device 
  12501.  
  12502.  Syntax 
  12503.  
  12504.                     #include <io.h>
  12505.                     int isatty(int handle);
  12506.  
  12507.  Description 
  12508.  
  12509.           isatty determines whether the given handle is associated with a 
  12510.           character device (a keyboard, display, or printer or serial port). 
  12511.  
  12512.           Note:  In earlier releases of C Set ++, isatty began with an 
  12513.                  underscore (_isatty). Because it is defined by the X/Open 
  12514.                  standard, the underscore has been removed. For compatibility, 
  12515.                  The Developer's Toolkit will map _isatty to isatty for you. 
  12516.  
  12517.  Returns 
  12518.  
  12519.           isatty returns a nonzero value if the device is a character device. 
  12520.           Otherwise, the return value is 0. 
  12521.  
  12522.  Example Code 
  12523.  
  12524.           This example opens the console and determines if it is a character 
  12525.           device: 
  12526.  
  12527.                     #include <io.h>
  12528.                     #include <stdio.h>
  12529.                     #include <stdlib.h>
  12530.                     #include <fcntl.h>
  12531.                     #include <sys\stat.h>
  12532.  
  12533.                     int main(void)
  12534.                     {
  12535.                        int fh,result;
  12536.  
  12537.                        if (-1 == (fh = open("CON", O_RDWR, (S_IREAD|S_IWRITE)))) {
  12538.                           perror("Error opening console\n");
  12539.                           return EXIT_FAILURE;
  12540.                        }
  12541.                        result = isatty(fh);
  12542.                        if (0 != result)
  12543.                           printf("CON is a character device.\n");
  12544.                        else
  12545.                           printf("CON is not a character device.\n");
  12546.                        close(fh);
  12547.                        return 0;
  12548.  
  12549.                        /****************************************************************************
  12550.                           The output should be:
  12551.  
  12552.                           CON is a character device.
  12553.                        ****************************************************************************/
  12554.                     }
  12555.  
  12556.  Related Information 
  12557.  
  12558.                none 
  12559.  
  12560.  
  12561. ΓòÉΓòÉΓòÉ 3.113. _iscsym - _iscsymf - Test Integer ΓòÉΓòÉΓòÉ
  12562.  
  12563. _iscsym - _iscsymf - Test Integer 
  12564.  
  12565.  Syntax 
  12566.  
  12567.                     #include <ctype.h>
  12568.                     int _iscsym(int c);
  12569.                     int _iscsymf(int c);
  12570.  
  12571.           These macros test if an integer is within a particular ASCII set. The 
  12572.           macros assume that the system uses the ASCII character set. 
  12573.  
  12574.           _iscsym tests if a character is alphabetic, a digit, or an underscore 
  12575.           (_). _iscsymf tests if a character is alphabetic or an underscore. 
  12576.  
  12577.  Returns 
  12578.  
  12579.           _iscsym and _iscsymf return a nonzero value if the integer is within 
  12580.           the ASCII set for which it tests, and 0 if it is not. 
  12581.  
  12582.  Example Code 
  12583.  
  12584.           This example uses _iscsym and _iscsymf to test the characters a, _, 
  12585.           and 1. If the character falls within the ASCII set tested for, the 
  12586.           macro returns TRUE. Otherwise, it returns FALSE. 
  12587.  
  12588.                     #include <stdio.h>
  12589.                     #include <ctype.h>
  12590.  
  12591.                     int main(void)
  12592.                     {
  12593.                        int ch[3] =  { 'a','_','1' };
  12594.                        int i;
  12595.  
  12596.                        for (i = 0; i < 3; i++) {
  12597.                           printf("_iscsym('%c') returns %s\n", ch[i], _iscsym(ch[i])?"TRUE":"FALSE");
  12598.                           printf("_iscsymf('%c') returns %s\n\n", ch[i], _iscsymf(ch[i])?"TRUE":
  12599.                              "FALSE");
  12600.                        }
  12601.                        return 0;
  12602.  
  12603.                        /****************************************************************************
  12604.                           The output should be:
  12605.  
  12606.                           _iscsym('a') returns TRUE
  12607.                           _iscsymf('a') returns TRUE
  12608.  
  12609.                           _iscsym('_') returns TRUE
  12610.                           _iscsymf('_') returns TRUE
  12611.  
  12612.                           iscsym('1') returns TRUE
  12613.                           iscsymf('1') returns FALSE
  12614.                        ****************************************************************************/
  12615.                     }
  12616.  
  12617.  Related Information 
  12618.  
  12619.               isalnum to isxdigit 
  12620.               isascii 
  12621.               iswalnum to iswxdigit 
  12622.               tolower - toupper 
  12623.               _toascii - _tolower - _toupper 
  12624.  
  12625.  
  12626. ΓòÉΓòÉΓòÉ 3.114. iswalnum to iswxdigit - Test Wide Integer Value ΓòÉΓòÉΓòÉ
  12627.  
  12628. iswalnum to iswxdigit - Test Wide Integer Value 
  12629.  
  12630.  Syntax 
  12631.  
  12632.                     #include <wctype.h>
  12633.                                                           /* test for:     */
  12634.                     int iswalnum(wint_t wc);  /* wide alphanumeric character */
  12635.                     int iswalpha(wint_t wc);  /* wide alphabetic character   */
  12636.                     int iswcntrl(wint_t wc);  /* wide control character      */
  12637.                     int iswdigit(wint_t wc);  /* wide decimal digit          */
  12638.                     int iswgraph(wint_t wc);  /* wide printable character, excluding space */
  12639.                     int iswlower(wint_t wc);  /* wide lowercase character    */
  12640.                     int iswprint(wint_t wc);  /* wide printable character, including space */
  12641.                     int iswpunct(wint_t wc);  /* wide punctuation character, excluding space */
  12642.                     int iswspace(wint_t wc);  /* wide whitespace character   */
  12643.                     int iswupper(wint_t wc);  /* wide uppercase character    */
  12644.                     int iswxdigit(wint_t wc); /* wide hexadecimal digit      */
  12645.  
  12646.  Description 
  12647.  
  12648.           These functions test a given wide integer value wc to determine 
  12649.           whether it has a certain property as defined by the LC_CTYPE category 
  12650.           of your current locale. The value of wc must be representable as a 
  12651.           wchar_t or WEOF. 
  12652.  
  12653.           The functions test for the following: 
  12654.  
  12655.           iswalnum    Wide alphanumeric character (uppercase or lowercase 
  12656.                       letter, or decimal digit), as defined in the locale 
  12657.                       source file in the alnum class of the LC_CTYPE category 
  12658.                       of the current locale. 
  12659.  
  12660.           iswalpha    Wide alphabetic character, as defined in the locale 
  12661.                       source file in the alpha class of the LC_CTYPE category 
  12662.                       of the current locale. 
  12663.  
  12664.           iswcntrl    Wide control character, as defined in the locale source 
  12665.                       file in the cntrl class of the LC_CTYPE category of the 
  12666.                       current locale. 
  12667.  
  12668.           iswdigit    Wide decimal digit (0 through 9), as defined in the 
  12669.                       locale source file in the digit class of the LC_CTYPE 
  12670.                       category of the current locale. 
  12671.  
  12672.           iswgraph    Wide printable character, excluding the space character, 
  12673.                       as defined in the locale source file in the graph class 
  12674.                       of the LC_CTYPE category of the current locale. 
  12675.  
  12676.           iswlower    Wide lowercase letter, as defined in the locale source 
  12677.                       file in the lower class of the LC_CTYPE category of the 
  12678.                       current locale. 
  12679.  
  12680.           iswprint    Wide printable character, including the space character, 
  12681.                       as defined in the locale source file in the print class 
  12682.                       of the LC_CTYPE category of the current locale. 
  12683.  
  12684.           iswpunct    Wide non-alphanumeric printable character, excluding the 
  12685.                       space character, as defined in the locale source file in 
  12686.                       the punct class of the LC_CTYPE category of the current 
  12687.                       locale. 
  12688.  
  12689.           iswspace    Wide white-space character, as defined in the locale 
  12690.                       source file in the space class of the LC_CTYPE category 
  12691.                       of the current locale. 
  12692.  
  12693.           iswupper    Wide uppercase letter, as defined in the locale source 
  12694.                       file in the upper class of the LC_CTYPE category of the 
  12695.                       current locale. 
  12696.  
  12697.           iswxdigit   Wide hexadecimal digit (0 through 9, a through f, or A 
  12698.                       through F), as defined in the locale source file in the 
  12699.                       xdigit class of the LC_CTYPE category of the current 
  12700.                       locale. 
  12701.           You can redefine any character class in the LC_CTYPE category of the 
  12702.           current locale.  For more information, see "Introduction to Locales" 
  12703.           in the VisualAge C++ Programming Guide. 
  12704.  
  12705.  Returns 
  12706.  
  12707.           These functions return a nonzero value if the wide integer satisfies 
  12708.           the test value; 0 if it does not. 
  12709.  
  12710.  Example Code 
  12711.  
  12712.           This example analyzes all characters between 0x0 and 0xFF. The output 
  12713.           of this example is a 256-line table showing the characters from 0 to 
  12714.           255 and indicates if the characters have the properties tested for. 
  12715.  
  12716.                     #include <locale.h>
  12717.                     #include <stdio.h>
  12718.                     #include <wctype.h>
  12719.  
  12720.                     #define UPPER_LIMIT   0xFF
  12721.  
  12722.                     int main(void)
  12723.                     {
  12724.                        wint_t wc;
  12725.  
  12726.                        setlocale(LC_ALL, "En_US");
  12727.  
  12728.                        for (wc = 0; wc <= UPPER_LIMIT; wc++) {
  12729.                           printf("%#4x ", wc);
  12730.                           printf("%lc", iswprint(wc) ? (wchar_t)wc    : " ");
  12731.                           printf("%s", iswalnum(wc)  ? " AN" : "   ");
  12732.                           printf("%s", iswalpha(wc)  ? " A " : "   ");
  12733.                           printf("%s", iswcntrl(wc)  ? " C " : "   ");
  12734.                           printf("%s", iswdigit(wc)  ? " D " : "   ");
  12735.                           printf("%s", iswgraph(wc)  ? " G " : "   ");
  12736.                           printf("%s", iswlower(wc)  ? " L " : "   ");
  12737.                           printf("%s", iswpunct(wc)  ? " PU" : "   ");
  12738.                           printf("%s", iswspace(wc)  ? " S " : "   ");
  12739.                           printf("%s", iswprint(wc)  ? " PR" : "   ");
  12740.                           printf("%s", iswupper(wc)  ? " U " : "   ");
  12741.                           printf("%s", iswxdigit(wc) ? " H " : "   ");
  12742.                           putchar('\n');
  12743.                        }
  12744.                        return 0;
  12745.  
  12746.                        /****************************************************************************
  12747.                           The output should be similar to :
  12748.                           :
  12749.                           0x20                        S  PR
  12750.                           0x21 !             G     PU    PR
  12751.                           0x22 "             G     PU    PR
  12752.                           0x23 #             G     PU    PR
  12753.                           0x24 $             G     PU    PR
  12754.                           0x25 %             G     PU    PR
  12755.                           0x26 &             G     PU    PR
  12756.                           0x27 '             G     PU    PR
  12757.                           0x28 (             G     PU    PR
  12758.                           0x29 )             G     PU    PR
  12759.                           0x2a *             G     PU    PR
  12760.                           0x2b +             G     PU    PR
  12761.                           0x2c ,             G     PU    PR
  12762.                           0x2d -             G     PU    PR
  12763.                           0x2e .             G     PU    PR
  12764.                           0x2f /             G     PU    PR
  12765.                           0x30 0 AN       D  G           PR    H
  12766.                           0x31 1 AN       D  G           PR    H
  12767.                           0x32 2 AN       D  G           PR    H
  12768.                           0x33 3 AN       D  G           PR    H
  12769.                           0x34 4 AN       D  G           PR    H
  12770.                           0x35 5 AN       D  G           PR    H
  12771.                           0x36 6 AN       D  G           PR    H
  12772.                           0x37 7 AN       D  G           PR    H
  12773.                           0x38 8 AN       D  G           PR    H
  12774.                           0x39 9 AN       D  G           PR    H
  12775.                           :
  12776.                        ****************************************************************************/
  12777.                     }
  12778.  
  12779.  Related Information 
  12780.  
  12781.               isalnum to isxdigit 
  12782.               isascii 
  12783.               iswctype 
  12784.  
  12785.  
  12786. ΓòÉΓòÉΓòÉ 3.115. iswctype - Test for Character Property ΓòÉΓòÉΓòÉ
  12787.  
  12788. iswctype - Test for Character Property 
  12789.  
  12790.  Syntax 
  12791.  
  12792.                     #include <wctype.h>
  12793.                     int iswctype(wint_t wc, wctype_t wc_prop);
  12794.  
  12795.  Description 
  12796.  
  12797.           iswctype determines whether the wide character wc has the property 
  12798.           wc_prop. It is similar in function to the iswalnum through isxdigit 
  12799.           functions, but with iswctype you can specify the property to check 
  12800.           for, or check for a property other than the standard ones. 
  12801.  
  12802.           You must obtain the wc_prop value from a call to wctype.  If you do 
  12803.           not, or if the LC_CTYPE category of the locale was modified after you 
  12804.           called wctype, the behavior of iswctype is undefined. 
  12805.  
  12806.           The value of wc must be representable as an unsigned wchar_t, or 
  12807.           WEOF. 
  12808.  
  12809.           The following strings correspond to the standard (basic) character 
  12810.           classes or properties: 
  12811.  
  12812.                      cols='15 15 15 15'.
  12813.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  12814.                     Γöé "                                       Γöé
  12815.                     Γöé "alnum"                                    Γöé
  12816.                     Γöé "alpha"                                    Γöé
  12817.                     Γöé "blank" "                                   Γöé
  12818.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12819.                     Γöé "                                       Γöé
  12820.                     Γöé "cntrl"                                    Γöé
  12821.                     Γöé "digit"                                    Γöé
  12822.                     Γöé "graph" "                                   Γöé
  12823.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12824.                     Γöé "                                       Γöé
  12825.                     Γöé "lower"                                    Γöé
  12826.                     Γöé "print"                                    Γöé
  12827.                     Γöé "punct" "                                   Γöé
  12828.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  12829.                     Γöé "                                       Γöé
  12830.                     Γöé "space"                                    Γöé
  12831.                     Γöé "upper"                                    Γöé
  12832.                     Γöé "xdigit" "                                  Γöé
  12833.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  12834.  
  12835.           The following shows calls to wctype and indicates the equivalent isw* 
  12836.           function: 
  12837.  
  12838.                     iswctype(wc, wctype("alnum"));   /* iswalnum(wc);  */
  12839.                     iswctype(wc, wctype("alpha"));   /* iswalpha(wc);  */
  12840.                     iswctype(wc, wctype("blank"));   /* iswblank(wc);  */
  12841.                     iswctype(wc, wctype("cntrl"));   /* iswcntrl(wc);  */
  12842.                     iswctype(wc, wctype("digit"));   /* iswdigit(wc);  */
  12843.                     iswctype(wc, wctype("graph"));   /* iswgraph(wc);  */
  12844.                     iswctype(wc, wctype("lower"));   /* iswlower(wc);  */
  12845.                     iswctype(wc, wctype("print"));   /* iswprint(wc);  */
  12846.                     iswctype(wc, wctype("punct"));   /* iswpunct(wc);  */
  12847.                     iswctype(wc, wctype("space"));   /* iswspace(wc);  */
  12848.                     iswctype(wc, wctype("upper"));   /* iswupper(wc);  */
  12849.                     iswctype(wc, wctype("xdigit"));  /* iswxdigit(wc); */
  12850.  
  12851.  Returns 
  12852.  
  12853.           iswctype returns a nonzero value if the wide character has the 
  12854.           property tested for. If the value for wc or wc_prop is not valid, the 
  12855.           behavior is undefined. 
  12856.  
  12857.  Example Code 
  12858.  
  12859.           This example analyzes all characters between 0x0 and 0xFF. The output 
  12860.           of this example is a 256-line table showing the characters from 0 to 
  12861.           255, indicating whether they have the properties tested for. 
  12862.  
  12863.                     #include <locale.h>
  12864.                     #include <stdio.h>
  12865.                     #include <wctype.h>
  12866.  
  12867.                     #define UPPER_LIMIT   0xFF
  12868.  
  12869.                     int main(void)
  12870.                     {
  12871.                        wint_t wc;
  12872.  
  12873.                        setlocale(LC_ALL, "En_US");
  12874.  
  12875.                        for (wc = 0; wc <= UPPER_LIMIT; wc++) {
  12876.                           printf("%#4x ", wc);
  12877.                           printf("%lc", iswctype(wc, wctype("print"))  ? (wchart)wc    : ' ');
  12878.                           printf("%s", iswctype(wc, wctype("alnum"))  ? " AN" : "   ");
  12879.                           printf("%s", iswctype(wc, wctype("alpha"))  ? " A " : "   ");
  12880.                           printf("%s", iswctype(wc, wctype("blank"))  ? " B " : "   ");
  12881.                           printf("%s", iswctype(wc, wctype("cntrl"))  ? " C " : "   ");
  12882.                           printf("%s", iswctype(wc, wctype("digit"))  ? " D " : "   ");
  12883.                           printf("%s", iswctype(wc, wctype("graph"))  ? " G " : "   ");
  12884.                           printf("%s", iswctype(wc, wctype("lower"))  ? " L " : "   ");
  12885.                           printf("%s", iswctype(wc, wctype("punct"))  ? " PU" : "   ");
  12886.                           printf("%s", iswctype(wc, wctype("space"))  ? " S " : "   ");
  12887.                           printf("%s", iswctype(wc, wctype("print"))  ? " PR" : "   ");
  12888.                           printf("%s", iswctype(wc, wctype("upper"))  ? " U " : "   ");
  12889.                           printf("%s", iswctype(wc, wctype("xdigit")) ? " H " : "   ");
  12890.                           putchar('\n');
  12891.                        }
  12892.                        return 0;
  12893.  
  12894.                        /****************************************************************************
  12895.                           The output should be similar to :
  12896.                            :
  12897.                           0x1e            C
  12898.                           0x1f            C
  12899.                           0x20         B                 S  PR
  12900.                           0x21 !                G     PU    PR
  12901.                           0x22 "                G     PU    PR
  12902.                           0x23 #                G     PU    PR
  12903.                           0x24 $                G     PU    PR
  12904.                           0x25 %                G     PU    PR
  12905.                            :
  12906.                           0x30 0 AN          D  G           PR    H
  12907.                           0x31 1 AN          D  G           PR    H
  12908.                           0x32 2 AN          D  G           PR    H
  12909.                           0x33 3 AN          D  G           PR    H
  12910.                           0x34 4 AN          D  G           PR    H
  12911.                           0x35 5 AN          D  G           PR    H
  12912.                            :
  12913.                           0x43 C AN A           G           PR U  H
  12914.                           0x44 D AN A           G           PR U  H
  12915.                           0x45 E AN A           G           PR U  H
  12916.                           0x46 F AN A           G           PR U  H
  12917.                           0x47 G AN A           G           PR U
  12918.                            :
  12919.                        ****************************************************************************/
  12920.                     }
  12921.  
  12922.  Related Information 
  12923.  
  12924.               isalnum to isxdigit 
  12925.               isascii 
  12926.               iswalnum to iswxdigit 
  12927.               iswalnum to iswxdigit 
  12928.               wctype 
  12929.  
  12930.  
  12931. ΓòÉΓòÉΓòÉ 3.116. _itoa - Convert Integer to String ΓòÉΓòÉΓòÉ
  12932.  
  12933. _itoa - Convert Integer to String 
  12934.  
  12935.  Syntax 
  12936.  
  12937.                     #include <stdlib.h>
  12938.                     char *_itoa(int value, char * string, int radix);
  12939.  
  12940.  Description 
  12941.  
  12942.           _itoa converts the digits of the given value to a character string 
  12943.           that ends with a null character and stores the result in string. The 
  12944.           radix argument specifies the base of value; it must be in the range 2 
  12945.           to 36. If radix equals 10 and value is negative, the first character 
  12946.           of the stored string is the minus sign (-). 
  12947.  
  12948.           Note:  The space reserved for string must be large enough to hold the 
  12949.                  returned string. The function can return up to 33 bytes 
  12950.                  including the null character (\0). 
  12951.  
  12952.  Returns 
  12953.  
  12954.           _itoa returns a pointer to string. There is no error return value. 
  12955.  
  12956.  Example Code 
  12957.  
  12958.           This example converts the integer value -255 to a decimal, a binary, 
  12959.           and a hex number, storing its character representation in the array 
  12960.           buffer. 
  12961.  
  12962.                     #include <stdio.h>
  12963.                     #include <stdlib.h>
  12964.  
  12965.                     int main(void)
  12966.                     {
  12967.                        char buffer[35];
  12968.                        char *p;
  12969.  
  12970.                        p = _itoa(-255, buffer, 10);
  12971.                        printf("The result of _itoa(-255) with radix of 10 is %s\n", p);
  12972.                        p = _itoa(-255, buffer, 2);
  12973.                        printf("The result of _itoa(-255) with radix of 2\n    is %s\n", p);
  12974.                        p = _itoa(-255, buffer, 16);
  12975.                        printf("The result of _itoa(-255) with radix of 16 is %s\n", p);
  12976.                        return 0;
  12977.  
  12978.                        /****************************************************************************
  12979.                           The output should be:
  12980.  
  12981.                           The result of _itoa(-255) with radix of 10 is -255
  12982.                           The result of _itoa(-255) with radix of 2
  12983.                               is 11111111111111111111111100000001
  12984.                           The result of _itoa(-255) with radix of 16 is ffffff01
  12985.                        ****************************************************************************/
  12986.                     }
  12987.  
  12988.  Related Information 
  12989.  
  12990.               _ecvt 
  12991.               _fcvt 
  12992.               _gcvt 
  12993.               _ltoa 
  12994.               _ultoa 
  12995.  
  12996.  
  12997. ΓòÉΓòÉΓòÉ 3.117. _kbhit - Test for Keystroke ΓòÉΓòÉΓòÉ
  12998.  
  12999. _kbhit - Test for Keystroke 
  13000.  
  13001.  Syntax 
  13002.  
  13003.                     include <conio.h>
  13004.                     int _kbhit(void);
  13005.  
  13006.  Description 
  13007.  
  13008.           _kbhit tests if a key has been pressed on the keyboard.  If the 
  13009.           result is nonzero, a keystroke is waiting in the buffer. You can read 
  13010.           in the keystroke using the _getch or _getche function. If you call 
  13011.           _getch or _getche without first calling _kbhit, the program waits for 
  13012.           a key to be pressed. 
  13013.  
  13014.  Returns 
  13015.  
  13016.           _kbhit returns a nonzero value if a key has been pressed. Otherwise, 
  13017.           it returns 0. 
  13018.  
  13019.  Example Code 
  13020.  
  13021.           This example uses _kbhit to test for the pressing of a key on the 
  13022.           keyboard and to print a statement with the test result. 
  13023.  
  13024.                     #include <conio.h>
  13025.                     #include <stdio.h>
  13026.  
  13027.                     int main(void)
  13028.                     {
  13029.                        int ch;
  13030.  
  13031.                        printf("Type in some letters.\n");
  13032.                        printf("If you type in an 'x', the program ends.\n");
  13033.  
  13034.                        for (; ; ) {
  13035.                           while (0==_kbhit()){
  13036.                           /* Processing without waiting for a key to be pressed */
  13037.                           }
  13038.  
  13039.                           ch = getch();
  13040.                           printf("You have pressed the '%c' key.\n",ch);
  13041.  
  13042.                           if ('x' == ch)
  13043.                              break;
  13044.                        }
  13045.                        return 0;
  13046.  
  13047.                        /****************************************************************************
  13048.                           The output should be similar to:
  13049.  
  13050.                           Type in some letters.
  13051.                           If you type in an 'x', the program ends.
  13052.                           You have pressed the 'f' key.
  13053.                           You have pressed the 'e' key.
  13054.                           You have pressed the 'l' key.
  13055.                           You have pressed the 'i' key.
  13056.                           You have pressed the 'x' key.
  13057.                        ****************************************************************************/
  13058.                     }
  13059.  
  13060.  Related Information 
  13061.  
  13062.               _getch - _getche 
  13063.  
  13064.  
  13065. ΓòÉΓòÉΓòÉ 3.118. labs - Calculate Absolute Value of Long Integer ΓòÉΓòÉΓòÉ
  13066.  
  13067. labs - Calculate Absolute Value of Long Integer 
  13068.  
  13069.  Syntax 
  13070.  
  13071.                     #include <stdlib.h>
  13072.                     long int labs(long int n);
  13073.  
  13074.  Description 
  13075.  
  13076.           labs produces the absolute value of its long integer argument n. The 
  13077.           result may be undefined when the argument is equal to LONG_MIN, the 
  13078.           smallest available long integer (-2 147 483 647). The value LONG_MIN 
  13079.           is defined in the <limits.h> include file. 
  13080.  
  13081.  Returns 
  13082.  
  13083.           labs returns the absolute value of n. There is no error return value. 
  13084.  
  13085.  Example Code 
  13086.  
  13087.           This example computes y as the absolute value of the long integer 
  13088.           -41567. 
  13089.  
  13090.                     #include <stdlib.h>
  13091.  
  13092.                     int main(void)
  13093.                     {
  13094.                        long x,y;
  13095.  
  13096.                        x = -41567L;
  13097.                        y = labs(x);
  13098.                        printf("The absolute value of %ld is %ld\n", x, y);
  13099.                        return 0;
  13100.  
  13101.                        /****************************************************************************
  13102.                           The output should be:
  13103.  
  13104.                           The absolute value of -41567 is 41567
  13105.                        ****************************************************************************/
  13106.                     }
  13107.  
  13108.  Related Information 
  13109.  
  13110.               abs 
  13111.               fabs 
  13112.  
  13113.  
  13114. ΓòÉΓòÉΓòÉ 3.119. ldexp - Multiply by a Power of Two ΓòÉΓòÉΓòÉ
  13115.  
  13116. ldexp - Multiply by a Power of Two 
  13117.  
  13118.  Syntax 
  13119.  
  13120.                     #include <math.h>
  13121.                     double ldexp(double x, int exp);
  13122.  
  13123.  Description 
  13124.  
  13125.           ldexp calculates the value of x * (2exp). 
  13126.  
  13127.  Returns 
  13128.  
  13129.           ldexp returns the value of x*(2exp). If an overflow results, the 
  13130.           function returns +HUGE_VAL for a large result or -HUGE_VAL for a 
  13131.           small result, and sets errno to ERANGE. 
  13132.  
  13133.  Example Code 
  13134.  
  13135.           This example computes y as 1.5 times 2 to the fifth power (1.5*25): 
  13136.  
  13137.                     #include <math.h>
  13138.  
  13139.                     int main(void)
  13140.                     {
  13141.                        double x,y;
  13142.                        int p;
  13143.  
  13144.                        x = 1.5;
  13145.                        p = 5;
  13146.                        y = ldexp(x, p);
  13147.                        printf("%lf times 2 to the power of %d is %lf\n", x, p, y);
  13148.                        return 0;
  13149.  
  13150.                        /****************************************************************************
  13151.                           The output should be:
  13152.  
  13153.                           1.500000 times 2 to the power of 5 is 48.000000
  13154.                        ****************************************************************************/
  13155.                     }
  13156.  
  13157.  Related Information 
  13158.  
  13159.               exp 
  13160.               frexp 
  13161.               modf 
  13162.  
  13163.  
  13164. ΓòÉΓòÉΓòÉ 3.120. ldiv - Perform Long Division ΓòÉΓòÉΓòÉ
  13165.  
  13166. ldiv - Perform Long Division 
  13167.  
  13168.  Syntax 
  13169.  
  13170.                     #include <stdlib.h>
  13171.                     ldiv_t ldiv(long int numerator, long int denominator);
  13172.  
  13173.  Description 
  13174.  
  13175.           ldiv calculates the quotient and remainder of the division of 
  13176.           numerator by denominator. 
  13177.  
  13178.  Returns 
  13179.  
  13180.           ldiv returns a structure of type ldiv_t, containing both the quotient 
  13181.           (long int quot) and the remainder (long int rem).  If the value 
  13182.           cannot be represented, the return value is undefined. If denominator 
  13183.           is 0, an exception is raised. 
  13184.  
  13185.  Example Code 
  13186.  
  13187.           This example uses ldiv to calculate the quotients and remainders for 
  13188.           a set of two dividends and two divisors. 
  13189.  
  13190.                     #include <stdio.h>
  13191.                     #include <stdlib.h>
  13192.  
  13193.                     int main(void)
  13194.                     {
  13195.                        long int num[2] =  { 45,-45 };
  13196.                        long int den[2] =  { 7,-7 };
  13197.                        ldiv_t ans;       /* ldiv_t is a struct type containing two long ints:
  13198.                                             'quot' stores quotient; 'rem' stores remainder  */
  13199.                        short i,j;
  13200.  
  13201.                        printf("Results of long division:\n");
  13202.                        for (i = 0; i < 2; i++)
  13203.                           for (j = 0; j < 2; j++) {
  13204.                              ans = ldiv(num[i], den[j]);
  13205.                              printf("Dividend: %6ld  Divisor: %6ld", num[i], den[j]);
  13206.                              printf("  Quotient: %6ld  Remainder: %6ld\n", ans.quot, ans.rem);
  13207.                           }
  13208.                        return 0;
  13209.  
  13210.                        /****************************************************************************
  13211.                           The output should be:
  13212.  
  13213.                           Results of long division:
  13214.                           Dividend:  45  Divisor:   7  Quotient:   6  Remainder:   3
  13215.                           Dividend:  45  Divisor:  -7  Quotient:  -6  Remainder:   3
  13216.                           Dividend: -45  Divisor:   7  Quotient:  -6  Remainder:  -3
  13217.                           Dividend: -45  Divisor:  -7  Quotient:   6  Remainder:  -3
  13218.                        ****************************************************************************/
  13219.                     }
  13220.  
  13221.  Related Information 
  13222.  
  13223.               div 
  13224.  
  13225.  
  13226. ΓòÉΓòÉΓòÉ 3.121. lfind - lsearch - Find Key in Array ΓòÉΓòÉΓòÉ
  13227.  
  13228. lfind - lsearch - Find Key in Array 
  13229.  
  13230.  Syntax 
  13231.  
  13232.                     #include <search.h>
  13233.                     char *lfind(char *search_key, char *base,
  13234.                                  unsigned int *num, unsigned int *width,
  13235.                                  int (*compare)(const void *key, const void *element));
  13236.                     char *lsearch(char *search_key, char *base,
  13237.                                    unsigned int *num, unsigned int *width,
  13238.                                    int (*compare)(const void *key, const void *element));
  13239.  
  13240.  Description 
  13241.  
  13242.           lfind and lsearch perform a linear search for the value search_key in 
  13243.           an array of num elements, each of width bytes in size.  Unlike 
  13244.           bsearch, lsearch and lfind do not require that you sort the array 
  13245.           first.  The argument base points to the base of the array to be 
  13246.           searched. 
  13247.  
  13248.           If lsearch does not find the search_key, it adds the search_key to 
  13249.           the end of the array and increments num by one. If lfind does not 
  13250.           find the search_key, it does not add the search_key to the array. 
  13251.  
  13252.           The compare argument is a pointer to a function you must supply that 
  13253.           takes a pointer to the key argument and to an array element, in that 
  13254.           order. Both lfind and lsearch call this function one or more times 
  13255.           during the search. The function must compare the key and the element 
  13256.           and return one of the following values: 
  13257.  
  13258.           Value          Meaning 
  13259.           Nonzero        key and element are different. 
  13260.           0              key and element are identical. 
  13261.  
  13262.           Note:  In earlier releases of C Set ++, lfind and lsearch began with 
  13263.                  an underscore (_lfind and _lsearch). Because they are defined 
  13264.                  by the X/Open standard, the underscore has been removed. For 
  13265.                  compatibility, The Developer's Toolkit will map _lfind and 
  13266.                  _lsearch to lfind and lsearch for you. 
  13267.  
  13268.  Returns 
  13269.  
  13270.           If search_key is found, both lsearch and lfind return a pointer to 
  13271.           that element of the array to which base points. If search_key is not 
  13272.           found, lsearch returns a pointer to a newly added item at the end of 
  13273.           the array, while lfind returns NULL. 
  13274.  
  13275.  Example Code 
  13276.  
  13277.           This example uses lfind to search for the keyword PATH in the 
  13278.           command-line arguments. 
  13279.  
  13280.                     #include <search.h>
  13281.                     #include <string.h>
  13282.                     #include <stdio.h>
  13283.  
  13284.                     #define  CNT           2
  13285.  
  13286.                     int compare(const void *arg1,const void *arg2)
  13287.                     {
  13288.                        return (strncmp(*(char **)arg1, *(char **)arg2, strlen(*(char **)arg1)));
  13289.                     }
  13290.  
  13291.                     int main(void)
  13292.                     {
  13293.                        char **result;
  13294.                        char *key = "PATH";
  13295.                        unsigned int num = CNT;
  13296.                        char *string[CNT] =  {
  13297.                           "PATH = d:\\david\\matthew\\heather\\ed\\simon","LIB = PATH\\abc" };
  13298.  
  13299.                        /* The following statement finds the argument that starts with "PATH"      */
  13300.  
  13301.                        if ((result = (char **)lfind((char *)&key, (char *)string, &num,
  13302.                                       sizeof(char *), compare)) != NULL)
  13303.                           printf("%s found\n", *result);
  13304.                        else
  13305.                           printf("PATH not found \n");
  13306.                        return 0;
  13307.  
  13308.                        /****************************************************************************
  13309.                           The output should be:
  13310.  
  13311.                           PATH = d:\david\matthew\heather\ed\simon found
  13312.                        ****************************************************************************/
  13313.                     }
  13314.  
  13315.  Related Information 
  13316.  
  13317.               bsearch 
  13318.               qsort 
  13319.  
  13320.  
  13321. ΓòÉΓòÉΓòÉ 3.122. localeconv - Retrieve Information from the Environment ΓòÉΓòÉΓòÉ
  13322.  
  13323. localeconv - Retrieve Information from the Environment 
  13324.  
  13325.  Syntax 
  13326.  
  13327.                     #include <locale.h>
  13328.                     struct lconv *localeconv(void);
  13329.  
  13330.  Description 
  13331.  
  13332.           localeconv retrieves information about the environment for the 
  13333.           current locale and places the information in a structure of type 
  13334.           struct lconv. Subsequent calls to localeconv, or to setlocale with 
  13335.           the argument LC_ALL, LC_MONETARY, or LC_NUMERIC, can overwrite the 
  13336.           structure. 
  13337.  
  13338.           The structure contains the members listed below. Pointers to strings 
  13339.           with a value of "" indicate that the value is not available in this 
  13340.           locale or is of zero length. Character types with a value of CHAR_MAX 
  13341.           indicate that the value is not available in this locale. 
  13342.  
  13343.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13344.                     Γöé Element        Γöé Purpose of Element            Γöé
  13345.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13346.                     Γöé "char         Γöé Decimal-point character for formatting  Γöé
  13347.                     Γöé *decimal_point"    Γöé nonmonetary quantities.          Γöé
  13348.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13349.                     Γöé "char         Γöé Character used to separate groups of   Γöé
  13350.                     Γöé *thousands_sep"    Γöé digits to the left of the decimal-point  Γöé
  13351.                     Γöé            Γöé character in formatted nonmonetary quan- Γöé
  13352.                     Γöé            Γöé tities.                  Γöé
  13353.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13354.                     Γöé "char *grouping"   Γöé Size of each group of digits in for-   Γöé
  13355.                     Γöé            Γöé matted nonmonetary quantities.  The    Γöé
  13356.                     Γöé            Γöé value of each character in the string   Γöé
  13357.                     Γöé            Γöé determines the number of digits in a   Γöé
  13358.                     Γöé            Γöé group.  "CHAR_MAX" indicates that there  Γöé
  13359.                     Γöé            Γöé are no further groupings.  If the last  Γöé
  13360.                     Γöé            Γöé integer is not "CHAR_MAX", then the size Γöé
  13361.                     Γöé            Γöé of the previous group will be used for  Γöé
  13362.                     Γöé            Γöé the remainder of the digits.       Γöé
  13363.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13364.                     Γöé "char         Γöé International currency symbol.  The    Γöé
  13365.                     Γöé *int_curr_symbol"   Γöé first three characters contain the    Γöé
  13366.                     Γöé            Γöé alphabetic international currency     Γöé
  13367.                     Γöé            Γöé symbol.  The fourth character (usually a Γöé
  13368.                     Γöé            Γöé space) separates the international cur-  Γöé
  13369.                     Γöé            Γöé rency symbol from the monetary quantity. Γöé
  13370.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13371.                     Γöé "char         Γöé Local currency symbol.          Γöé
  13372.                     Γöé *currency_symbol"   Γöé                      Γöé
  13373.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13374.                     Γöé "char         Γöé Decimal-point character for formatting  Γöé
  13375.                     Γöé *mon_decimal_point"  Γöé monetary quantities.           Γöé
  13376.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13377.                     Γöé "char         Γöé Separator for digits in formatted mone-  Γöé
  13378.                     Γöé *mon_thousands_sep"  Γöé tary quantities.             Γöé
  13379.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13380.                     Γöé "char *mon_grouping" Γöé Size of each group of digits in for-   Γöé
  13381.                     Γöé            Γöé matted monetary quantities.  The value  Γöé
  13382.                     Γöé            Γöé of each character in the string deter-  Γöé
  13383.                     Γöé            Γöé mines the number of digits in a group.  Γöé
  13384.                     Γöé            Γöé "CHAR_MAX" indicates that there are no  Γöé
  13385.                     Γöé            Γöé further groupings.  If the last integer  Γöé
  13386.                     Γöé            Γöé is not "CHAR_MAX", then the size of the  Γöé
  13387.                     Γöé            Γöé previous group will be used for the    Γöé
  13388.                     Γöé            Γöé remainder of the digits.         Γöé
  13389.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13390.                     Γöé "char         Γöé Positive sign used in monetary quanti-  Γöé
  13391.                     Γöé *positive_sign"    Γöé ties.                   Γöé
  13392.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13393.                     Γöé "char         Γöé Negative sign used in monetary quanti-  Γöé
  13394.                     Γöé *negative_sign"    Γöé ties.                   Γöé
  13395.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13396.                     Γöé "char         Γöé Mumber of displayed digits to the right  Γöé
  13397.                     Γöé int_frac_digits"   Γöé of the decimal place for internationally Γöé
  13398.                     Γöé            Γöé formatted monetary quantities.      Γöé
  13399.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13400.                     Γöé "char frac_digits"  Γöé Number of digits to the right of the   Γöé
  13401.                     Γöé            Γöé decimal place in monetary quantities.   Γöé
  13402.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13403.                     Γöé "char p_cs_precedes" Γöé 1 if the "currency_symbol" precedes the  Γöé
  13404.                     Γöé            Γöé value for a nonnegative formatted mone-  Γöé
  13405.                     Γöé            Γöé tary quantity; "0" if it does not.    Γöé
  13406.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13407.                     Γöé "char         Γöé 1 if the "currency_symbol" is separated  Γöé
  13408.                     Γöé p_sep_by_space"    Γöé by a space from the value of a nonnega-  Γöé
  13409.                     Γöé            Γöé tive formatted monetary quantity;  "0"  Γöé
  13410.                     Γöé            Γöé if it is not.               Γöé
  13411.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13412.                     Γöé "char n_cs_precedes" Γöé 1 if the "currency_symbol" precedes the  Γöé
  13413.                     Γöé            Γöé value for a negative formatted monetary  Γöé
  13414.                     Γöé            Γöé quantity; "0" if it does not.       Γöé
  13415.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13416.                     Γöé "char         Γöé 1 if the "currency_symbol" is separated  Γöé
  13417.                     Γöé n_sep_by_space"    Γöé by a space from the value of a negative  Γöé
  13418.                     Γöé            Γöé formatted monetary quantity;  "0" if it  Γöé
  13419.                     Γöé            Γöé is not.                  Γöé
  13420.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13421.                     Γöé "char p_sign_posn"  Γöé Position of the "positive_sign" for a   Γöé
  13422.                     Γöé            Γöé nonnegative formatted monetary quantity. Γöé
  13423.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13424.                     Γöé "char n_sign_posn"  Γöé Position of the "negative_sign" for a   Γöé
  13425.                     Γöé            Γöé negative formatted monetary quantity.   Γöé
  13426.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13427.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  13428.                     Γöé "char         Γöé Symbol to appear to the left of a     Γöé
  13429.                     Γöé *left_parenthesis"  Γöé negative-valued monetary symbol (such as Γöé
  13430.                     Γöé            Γöé a loss or deficit).            Γöé
  13431.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13432.                     Γöé "char         Γöé Symbol to appear to the right of a    Γöé
  13433.                     Γöé *right_parenthesis"  Γöé negative-valued monetary symbol (such as Γöé
  13434.                     Γöé            Γöé a loss or deficit).            Γöé
  13435.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13436.                     Γöé "char *debit_sign"  Γöé String to indicate a non-negative-valued Γöé
  13437.                     Γöé            Γöé formatted monetary quantity.       Γöé
  13438.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  13439.                     Γöé "char *credit_sign"  Γöé String to indicate a negative-valued   Γöé
  13440.                     Γöé            Γöé formatted monetary quantity.       Γöé
  13441.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  13442.  
  13443.           The grouping and mon_grouping members can have the following values: 
  13444.  
  13445.           Value        Meaning 
  13446.           CHAR_MAX     No further grouping is to be performed. 
  13447.           0            The previous element is to be repeatedly used for the 
  13448.                        rest of the digits. 
  13449.           other        The number of digits that comprise the current group. 
  13450.                        The next element is examined to determine the size of 
  13451.                        the next group of digits before the current group. 
  13452.  
  13453.           The n_sign_posn and p_sign_posn elements can have the following 
  13454.           values: 
  13455.  
  13456.           Value Meaning 
  13457.            0    The quantity and currency_symbol are enclosed in parentheses. 
  13458.            1    The sign precedes the quantity and currency_symbol. 
  13459.            2    The sign follows the quantity and currency_symbol. 
  13460.            3    The sign precedes the currency_symbol. 
  13461.            4    The sign follows the currency_symbol. 
  13462.  
  13463.  Returns 
  13464.  
  13465.           localeconv returns a pointer to the lconv structure. Calls to 
  13466.           setlocale with the categories LC_ALL, LC_MONETARY, or LC_NUMERIC may 
  13467.           overwrite the contents of the structure. 
  13468.  
  13469.  Example Code 
  13470.  
  13471.           This example prints out the default decimal point for your locale and 
  13472.           then the decimal point for the Fr_FR.IBM-850 locale. 
  13473.  
  13474.                     #include <stdio.h>
  13475.                     #include <locale.h>
  13476.  
  13477.                     int main(void)
  13478.                     {
  13479.                        struct lconv *mylocale;
  13480.  
  13481.                        mylocale = localeconv();
  13482.                        printf("Default decimal point is a %s\n", mylocale->decimal_point);
  13483.  
  13484.                        if (NULL != setlocale(LC_ALL, Fr_FR.IBM-850)) {
  13485.                           mylocale = localeconv();
  13486.                           printf("France's decimal point is a %s\n", mylocale->decimal_point);
  13487.                        } else {
  13488.                           printf("setlocale(LC_ALL, Fr_FR.IBM-850) returned <NULL>\n");
  13489.                         }
  13490.                        return 0;
  13491.  
  13492.                        /****************************************************************************
  13493.                           The output should be similar to :
  13494.  
  13495.                           Default decimal point is a .
  13496.                           France's decimal point is a ,
  13497.                        ****************************************************************************/
  13498.                     }
  13499.  
  13500.  Related Information 
  13501.  
  13502.               setlocale 
  13503.  
  13504.  
  13505. ΓòÉΓòÉΓòÉ 3.123. localtime - Convert Time ΓòÉΓòÉΓòÉ
  13506.  
  13507. localtime - Convert Time 
  13508.  
  13509.  Syntax 
  13510.  
  13511.                     #include <time.h>
  13512.                     struct tm *localtime(const time_t *timeval);
  13513.  
  13514.  Description 
  13515.  
  13516.           localtime breaks down timeval, corrects for the local time zone and 
  13517.           Daylight Saving Time, if appropriate, and stores the corrected time 
  13518.           in a structure of type tm.  See gmtime for a description of the 
  13519.           fields in a tm structure. 
  13520.  
  13521.           The time value is usually obtained by a call to the time function. 
  13522.  
  13523.           Note: 
  13524.  
  13525.               gmtime and localtime may use a common, statically allocated 
  13526.                buffer for the conversion.  Each call to one of these functions 
  13527.                may alter the result of the previous call. 
  13528.  
  13529.               The time and date functions begin at 00:00:00 Coordinated 
  13530.                Universal Time, January 1, 1970. 
  13531.  
  13532.  Returns 
  13533.  
  13534.           localtime returns a pointer to the structure result. If unsuccessful, 
  13535.           it returns NULL. 
  13536.  
  13537.  Example Code 
  13538.  
  13539.           This example queries the system clock and displays the local time. 
  13540.  
  13541.                     #include <time.h>
  13542.                     #include <stdio.h>
  13543.  
  13544.                     int main(void)
  13545.                     {
  13546.                        struct tm *newtime;
  13547.                        time_t ltime;
  13548.  
  13549.                        time(<ime);
  13550.                        newtime = localtime(<ime);
  13551.                        printf("The date and time is %s", asctime(newtime));
  13552.                        return 0;
  13553.  
  13554.                        /****************************************************************************
  13555.                           The output should be similar to:
  13556.  
  13557.                           The date and time is Wed Oct 31 15:00:00 1995
  13558.                        ****************************************************************************/
  13559.                     }
  13560.  
  13561.  Related Information 
  13562.  
  13563.               asctime 
  13564.               ctime 
  13565.               gmtime 
  13566.               mktime 
  13567.               time 
  13568.  
  13569.  
  13570. ΓòÉΓòÉΓòÉ 3.124. log - Calculate Natural Logarithm ΓòÉΓòÉΓòÉ
  13571.  
  13572. log - Calculate Natural Logarithm 
  13573.  
  13574.  Syntax 
  13575.  
  13576.                     #include <math.h>
  13577.                     double log(double x);
  13578.  
  13579.  Description 
  13580.  
  13581.           log calculates the natural logarithm (base e) of x. 
  13582.  
  13583.  Returns 
  13584.  
  13585.           log returns the computed value.  If x is negative, log sets errno to 
  13586.           EDOM and may return the value -HUGE_VAL. If x is zero, log returns 
  13587.           the value -HUGE_VAL, and may set errno to ERANGE. 
  13588.  
  13589.  Example Code 
  13590.  
  13591.           This example calculates the natural logarithm of 1000.0. 
  13592.  
  13593.                     #include <math.h>
  13594.  
  13595.                     int main(void)
  13596.                     {
  13597.                        double x = 1000.0,y;
  13598.  
  13599.                        y = log(x);
  13600.                        printf("The natural logarithm of %lf is %lf\n", x, y);
  13601.                        return 0;
  13602.  
  13603.                        /****************************************************************************
  13604.                           The output should be:
  13605.  
  13606.                           The natural logarithm of 1000.000000 is 6.907755
  13607.                        ****************************************************************************/
  13608.                     }
  13609.  
  13610.  Related Information 
  13611.  
  13612.               exp 
  13613.               log10 
  13614.               pow 
  13615.  
  13616.  
  13617. ΓòÉΓòÉΓòÉ 3.125. log10 - Calculate Base 10 Logarithm ΓòÉΓòÉΓòÉ
  13618.  
  13619. log10 - Calculate Base 10 Logarithm 
  13620.  
  13621.  Syntax 
  13622.  
  13623.                     #include <math.h>
  13624.                     double log10(double x);
  13625.  
  13626.  Description 
  13627.  
  13628.           log10 calculates the base 10 logarithm of x. 
  13629.  
  13630.  Returns 
  13631.  
  13632.           log10 returns the computed value. If x is negative, log10 sets errno 
  13633.           to EDOM and may return the value -HUGE_VAL. If x is zero, log10 
  13634.           returns the value -HUGE_VAL, and may set errno to ERANGE. 
  13635.  
  13636.  Example Code 
  13637.  
  13638.           This example calculates the base 10 logarithm of 1000.0. 
  13639.  
  13640.                     #include <math.h>
  13641.  
  13642.                     int main(void)
  13643.                     {
  13644.                        double x = 1000.0,y;
  13645.  
  13646.                        y = log10(x);
  13647.                        printf("The base 10 logarithm of %lf is %lf\n", x, y);
  13648.                        return 0;
  13649.  
  13650.                        /****************************************************************************
  13651.                           The output should be:
  13652.  
  13653.                           The base 10 logarithm of 1000.000000 is 3.000000
  13654.                        ****************************************************************************/
  13655.                     }
  13656.  
  13657.  Related Information 
  13658.  
  13659.               exp 
  13660.               log 
  13661.               pow 
  13662.  
  13663.  
  13664. ΓòÉΓòÉΓòÉ 3.126. longjmp - Restore Stack Environment ΓòÉΓòÉΓòÉ
  13665.  
  13666. longjmp - Restore Stack Environment 
  13667.  
  13668.  Syntax 
  13669.  
  13670.                     #include <setjmp.h>
  13671.                     void longjmp(jmp_buf env, int value);
  13672.  
  13673.  Description 
  13674.  
  13675.           longjmp restores a stack environment previously saved in env by 
  13676.           setjmp. setjmp and longjmp provide a way to perform a nonlocal goto. 
  13677.           They are often used in signal handlers. 
  13678.  
  13679.           A call to setjmp causes the current stack environment to be saved in 
  13680.           env.  A subsequent call to longjmp restores the saved environment and 
  13681.           returns control to a point in the program corresponding to the setjmp 
  13682.           call.  Execution resumes as if the setjmp call had just returned the 
  13683.           given value. 
  13684.  
  13685.           All variables (except register variables) that are accessible to the 
  13686.           function that receives control contain the values they had when 
  13687.           longjmp was called. The values of variables that are allocated to 
  13688.           registers by the compiler are unpredictable. Because any auto 
  13689.           variable could be allocated to a register in optimized code, you 
  13690.           should consider the values of all auto variables to be unpredictable 
  13691.           after a longjmp call. 
  13692.  
  13693.           Note:  Ensure that the function that calls setjmp does not return 
  13694.                  before you call the corresponding longjmp function. Calling 
  13695.                  longjmp after the function calling setjmp returns causes 
  13696.                  unpredictable program behavior. 
  13697.  
  13698.           The value argument must be nonzero. If you give a zero argument for 
  13699.           value, longjmp substitutes 1 in its place. 
  13700.  
  13701.           C++ Considerations  When you call setjmp in a C++ program, ensure 
  13702.                               that that part of the program does not also 
  13703.                               create C++ objects that need to be destroyed. 
  13704.                               When you call longjmp, objects existing at the 
  13705.                               time of the setjmp call will still exist, but any 
  13706.                               destructors called after setjmp are not called. 
  13707.                               For example, given the following program: 
  13708.  
  13709.                     #include <stdio.h>
  13710.                     #include <setjmp.h>
  13711.  
  13712.                     class A {
  13713.                        int i;
  13714.                        public:
  13715.                           A(int I) {i = I; printf("Constructed at line %d\n", i);}
  13716.                           ~A() {printf("Destroying object constructed at line %d\n",i);}
  13717.                        };
  13718.                     jmp_buf jBuf;
  13719.  
  13720.                     int main(void) {
  13721.                        A a1(__LINE__);
  13722.                        if (!setjmp(jBuf)) {
  13723.                          A a2(__LINE__);
  13724.                          printf("Press y (and Enter) to longjmp; anything else to return norm
  13725.                          char c = getchar();
  13726.                          if (c == 'y')
  13727.                             longjmp(jBuf, 1);
  13728.                        }
  13729.                        A a3(__LINE__);
  13730.                        return 0;
  13731.                     }
  13732.  
  13733.           If you return normally, the output would be: 
  13734.  
  13735.                     Constructed at line 13
  13736.                     Constructed at line 15
  13737.                     Press y (and Enter) to longjmp; anything else to return normally
  13738.                     x
  13739.                     Destroying object constructed at line 15
  13740.                     Constructed at line 21
  13741.                     Destroying object constructed at line 21
  13742.                     Destroying object constructed at line 13
  13743.  
  13744.           If you called longjmp, the output would be: 
  13745.  
  13746.                     Constructed at line 13
  13747.                     Constructed at line 15
  13748.                     Press y (and Enter) to longjmp; anything else to return normally
  13749.                     y
  13750.                     Constructed at line 21
  13751.                     Destroying object constructed at line 21
  13752.                     Destroying object constructed at line 13
  13753.  
  13754.           Notice that the object from line 15 is not destroyed. 
  13755.  
  13756.  Returns 
  13757.  
  13758.           longjmp does not use the normal function call and return mechanisms; 
  13759.           it has no return value. 
  13760.  
  13761.  Example Code 
  13762.  
  13763.           This example saves the stack environment at the statement: 
  13764.  
  13765.                        if(setjmp(mark) != 0) ...
  13766.  
  13767.           When the system first performs the if statement, it saves the 
  13768.           environment in mark and sets the condition to FALSE because setjmp 
  13769.           returns a 0 when it saves the environment. The program prints the 
  13770.           message: 
  13771.  
  13772.                        setjmp has been called
  13773.  
  13774.           The subsequent call to function p tests for a local error condition, 
  13775.           which can cause it to call longjmp.  Then, control returns to the 
  13776.           original setjmp function using the environment saved in mark.  This 
  13777.           time, the condition is TRUE because -1 is the return value from 
  13778.           longjmp. The example then performs the statements in the block, 
  13779.           prints longjmp has been called, calls recover, and leaves the 
  13780.           program. 
  13781.  
  13782.                     #include <stdio.h>
  13783.                     #include <setjmp.h>
  13784.  
  13785.                     jmp_buf mark;
  13786.  
  13787.                     int main(void)
  13788.                     {
  13789.                        if (setjmp(mark) != 0) {
  13790.                           printf("longjmp has been called\n");
  13791.                           recover();
  13792.                           exit(1);
  13793.                        }
  13794.                        printf("setjmp has been called\n");
  13795.  
  13796.                        p();
  13797.  
  13798.                        return 0;
  13799.  
  13800.                        /****************************************************************************
  13801.                           The output should be:
  13802.  
  13803.                           setjmp has been called
  13804.                           longjmp has been called
  13805.                        ****************************************************************************/
  13806.                     }
  13807.  
  13808.                     int p(void)
  13809.                     {
  13810.                        int error = 0;
  13811.  
  13812.                        error = 9;
  13813.  
  13814.                        if (error != 0)
  13815.                           longjmp(mark, -1);
  13816.  
  13817.                     }
  13818.  
  13819.                     int recover(void)
  13820.                     {
  13821.                     }
  13822.  
  13823.  Related Information 
  13824.  
  13825.               setjmp 
  13826.               goto in the Language Reference 
  13827.  
  13828.  
  13829. ΓòÉΓòÉΓòÉ 3.127. lseek - Move File Pointer ΓòÉΓòÉΓòÉ
  13830.  
  13831. lseek - Move File Pointer 
  13832.  
  13833.  Syntax 
  13834.  
  13835.                     #include <io.h>  /* constants in <stdio.h> */
  13836.                     long lseek(int handle, long offset, int origin);
  13837.  
  13838.  Description 
  13839.  
  13840.           lseek moves any file pointer associated with handle to a new location 
  13841.           that is offset bytes from the origin. The next operation on the file 
  13842.           takes place at the new location. The origin must be one of the 
  13843.           following constants, defined in <stdio.h>:  compact break=fit. 
  13844.  
  13845.           Origin         Definition 
  13846.  
  13847.           SEEK_SET       Beginning of file 
  13848.  
  13849.           SEEK_CUR       Current position of file pointer 
  13850.  
  13851.           SEEK_END       End of file. 
  13852.  
  13853.           lseek can reposition the pointer anywhere in a file. The pointer can 
  13854.           also be positioned beyond the end of the file; the data between the 
  13855.           EOF and the new file position is undefined. (See chsize for more 
  13856.           information on extending the length of the file.) An attempt to 
  13857.           position the pointer before the beginning of the file causes an 
  13858.           error. 
  13859.  
  13860.           Note:  In earlier releases of C Set ++, lseek began with an 
  13861.                  underscore (_lseek). Because it is defined by the X/Open 
  13862.                  standard, the underscore has been removed. For compatibility, 
  13863.                  The Developer's Toolkit will map _lseek to lseek for you. 
  13864.  
  13865.  Returns 
  13866.  
  13867.           lseek returns the offset, in bytes, of the new position from the 
  13868.           beginning of the file. A return value of -1L indicates an error, and 
  13869.           lseek sets errno to one of the following values:  compact break=fit. 
  13870.  
  13871.           Value        Meaning 
  13872.  
  13873.           EBADF        The file handle is incorrect. 
  13874.  
  13875.           EINVAL       The value for origin is incorrect, or the position 
  13876.                        specified by offset is before the beginning of the file. 
  13877.  
  13878.           EOS2ERR      The call to the operating system was not successful. 
  13879.  
  13880.           On devices incapable of seeking (such as keyboards and printers), 
  13881.           lseek returns -1 and sets errno to EOS2ERR. 
  13882.  
  13883.  Example Code 
  13884.  
  13885.           This example opens the file sample.dat and, if successful, moves the 
  13886.           file pointer to the eighth position in the file. The example then 
  13887.           attempts to read bytes from the file, starting at the new pointer 
  13888.           position, and reads them into the buffer. 
  13889.  
  13890.                     #include <io.h>
  13891.                     #include <stdio.h>
  13892.                     #include <stdlib.h>
  13893.                     #include <fcntl.h>
  13894.                     #include <string.h>
  13895.  
  13896.                     int main(void)
  13897.                     {
  13898.                        long length;
  13899.                        int fh;
  13900.                        char buffer[20];
  13901.  
  13902.                        memset(buffer, '\0', 20);               /* Initialize the buffer           */
  13903.                        printf("\nCreating sample.dat.\n");
  13904.                        system("echo Sample Program > sample.dat");
  13905.                        if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
  13906.                           perror("Unable to open sample.dat.");
  13907.                           exit(EXIT_FAILURE);
  13908.                        }
  13909.                        if (-1 == lseek(fh, 7, SEEK_SET)) {     /* place the file pointer at the   */
  13910.                           perror("Unable to lseek");           /* eighth position in the file     */
  13911.                           close(fh);
  13912.                           return EXIT_FAILURE;
  13913.                        }
  13914.                        if (8 != read(fh, buffer, 8)) {
  13915.                           perror("Unable to read from sample.dat.");
  13916.                           close(fh);
  13917.                           return EXIT_FAILURE;
  13918.                        }
  13919.                        printf("Successfully read in the following:\n%s.\n", buffer);
  13920.                        close(fh);
  13921.                        return 0;
  13922.  
  13923.                        /****************************************************************************
  13924.                           The output should be:
  13925.  
  13926.                           Creating sample.dat.
  13927.                           Successfully read in the following:
  13928.                           Program .
  13929.                        ****************************************************************************/
  13930.                     }
  13931.  
  13932.  Related Information 
  13933.  
  13934.               chsize 
  13935.               fseek 
  13936.               _tell 
  13937.  
  13938.  
  13939. ΓòÉΓòÉΓòÉ 3.128. _ltoa - Convert Long Integer to String ΓòÉΓòÉΓòÉ
  13940.  
  13941. _ltoa - Convert Long Integer to String 
  13942.  
  13943.  Syntax 
  13944.  
  13945.                     #include <stdlib.h>
  13946.                     char *_ltoa(long value, char *string, int radix);
  13947.  
  13948.  Description 
  13949.  
  13950.           _ltoa converts the digits of the given long integer value to a 
  13951.           character string that ends with a null character and stores the 
  13952.           result in string. The radix argument specifies the base of value; it 
  13953.           must be in the range 2 to 36. If radix equals 10 and value is 
  13954.           negative, the first character of the stored string is the minus sign 
  13955.           (-). 
  13956.  
  13957.           Note:  The space allocated for string must be large enough to hold 
  13958.                  the returned string. The function can return up to 33 bytes, 
  13959.                  including the null character (\0). 
  13960.  
  13961.  Returns 
  13962.  
  13963.           _ltoa returns a pointer to string. There is no error return value. 
  13964.  
  13965.  Example Code 
  13966.  
  13967.           This example converts the long integer -255L to a decimal, binary, 
  13968.           and hex value, and stores its character representation in the array 
  13969.           buffer. 
  13970.  
  13971.                     #include <stdio.h>
  13972.                     #include <stdlib.h>
  13973.  
  13974.                     int main(void)
  13975.                     {
  13976.                        char buffer[35];
  13977.                        char *p;
  13978.  
  13979.                        p = _ltoa(-255L, buffer, 10);
  13980.                        printf("The result of _ltoa(-255) with radix of 10 is %s\n", p);
  13981.                        p = _ltoa(-255L, buffer, 2);
  13982.                        printf("The result of _ltoa(-255) with radix of 2\n    is %s\n", p);
  13983.                        p = _ltoa(-255L, buffer, 16);
  13984.                        printf("The result of _ltoa(-255) with radix of 16 is %s\n", p);
  13985.                        return 0;
  13986.  
  13987.                        /****************************************************************************
  13988.                           The output should be:
  13989.  
  13990.                           The result of _ltoa(-255) with radix of 10 is -255
  13991.                           The result of _ltoa(-255) with radix of 2
  13992.                               is 11111111111111111111111100000001
  13993.                           The result of _ltoa(-255) with radix of 16 is ffffff01
  13994.                        ****************************************************************************/
  13995.                     }
  13996.  
  13997.  Related Information 
  13998.  
  13999.               atol 
  14000.               _ecvt 
  14001.               _fcvt 
  14002.               _gcvt 
  14003.               _itoa 
  14004.               strtol 
  14005.               _ultoa 
  14006.               wcstol 
  14007.  
  14008.  
  14009. ΓòÉΓòÉΓòÉ 3.129. _makepath - Create Path ΓòÉΓòÉΓòÉ
  14010.  
  14011. _makepath - Create Path 
  14012.  
  14013.  Syntax 
  14014.  
  14015.                     #include <stdlib.h>
  14016.                     void _makepath(char *path, char *drive, char *dir, char *fname, char *ext);
  14017.  
  14018.  Description 
  14019.  
  14020.           _makepath creates a single path name, composed of a drive letter, 
  14021.           directory path, file name, and file name extension. 
  14022.  
  14023.           The path argument should point to an empty buffer large enough to 
  14024.           hold the complete path name. The constant _MAX_PATH, defined in 
  14025.           <stdlib.h>, specifies the maximum size allowed for path. The other 
  14026.           arguments point to the following buffers containing the path name 
  14027.           elements: 
  14028.  
  14029.           drive   A letter (A, B, ...) corresponding to the desired drive and 
  14030.                   an optional following colon. _makepath inserts the colon 
  14031.                   automatically in the composite path name if it is missing. 
  14032.                   If drive is a null character or an empty string, no drive 
  14033.                   letter or colon appears in the composite path string. 
  14034.  
  14035.           dir     The path of directories, not including the drive designator 
  14036.                   or the actual file name.  The trailing slash is optional, and 
  14037.                   either slash (/) or backslash (\) or both can be used in a 
  14038.                   single dir argument.  If a trailing slash or backslash is not 
  14039.                   specified, it is inserted automatically.  If dir is a null 
  14040.                   character or an empty string, no slash is inserted in the 
  14041.                   composite path string. 
  14042.  
  14043.           fname   The base file name without any extensions. 
  14044.  
  14045.           ext     The actual file name extension, with or without a leading 
  14046.                   period. _makepath inserts the period automatically if it does 
  14047.                   not appear in ext.  If ext is a null character or an empty 
  14048.                   string, no period is inserted in the composite path string. 
  14049.  
  14050.           The size limits on the above four fields are those specified by the 
  14051.           constants _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, and _MAX_EXT, which are 
  14052.           defined in <stdlib.h>. The composite path should be no larger than 
  14053.           the _MAX_PATH constant also defined in <stdlib.h>; otherwise, the 
  14054.           operating system does not handle it correctly. 
  14055.  
  14056.           Note:  No checking is done to see if the syntax of the file name is 
  14057.                  correct. 
  14058.  
  14059.  Returns 
  14060.  
  14061.           There is no return value. 
  14062.  
  14063.  Example Code 
  14064.  
  14065.           This example builds a file name path from the specified components: 
  14066.  
  14067.                     #include <stdio.h>
  14068.                     #include <stdlib.h>
  14069.  
  14070.                     int main(void)
  14071.                     {
  14072.                        char path_buffer[_MAX_PATH];
  14073.                        char drive[_MAX_DRIVE];
  14074.                        char dir[_MAX_DIR];
  14075.                        char fname[_MAX_FNAME];
  14076.                        char ext[_MAX_EXT];
  14077.  
  14078.                        _makepath(path_buffer, "c", "qc\\bob\\eclibref\\e", "makepath", "c");
  14079.                        printf("Path created with _makepath: %s\n\n", path_buffer);
  14080.                        _splitpath(path_buffer, drive, dir, fname, ext);
  14081.                        printf("Path extracted with _splitpath:\n");
  14082.                        printf("drive: %s\n", drive);
  14083.                        printf("directory: %s\n", dir);
  14084.                        printf("file name: %s\n", fname);
  14085.                        printf("extension: %s\n", ext);
  14086.                        return 0;
  14087.  
  14088.                        /****************************************************************************
  14089.                           The output should be:
  14090.  
  14091.                           Path created with _makepath: c:qc\bob\eclibref\e\makepath.c
  14092.  
  14093.                           Path extracted with _splitpath:
  14094.                           drive: c:
  14095.                           directory: qc\bob\eclibref\e\
  14096.                           file name: makepath
  14097.                           extension: .c
  14098.                        ****************************************************************************/
  14099.                     }
  14100.  
  14101.  Related Information 
  14102.  
  14103.               _fullpath 
  14104.               _splitpath 
  14105.  
  14106.  
  14107. ΓòÉΓòÉΓòÉ 3.130. malloc - Reserve Storage Block ΓòÉΓòÉΓòÉ
  14108.  
  14109. malloc - Reserve Storage Block 
  14110.  
  14111.  Syntax 
  14112.  
  14113.                     #include <stdlib.h>  /* also in <malloc.h> */
  14114.                     void *malloc(size_t size);
  14115.  
  14116.  Description 
  14117.  
  14118.           malloc reserves a block of storage of size bytes. Unlike calloc, 
  14119.           malloc does not initialize all elements to 0. 
  14120.  
  14121.           Heap-specific and debug versions of this function (_umalloc and 
  14122.           _debug_malloc) are also available. malloc always operates on the 
  14123.           default heap. For more information about memory management, see 
  14124.           "Managing Memory" in the VisualAge C++ Programming Guide. 
  14125.  
  14126.  Returns 
  14127.  
  14128.           malloc returns a pointer to the reserved space. The storage space to 
  14129.           which the return value points is suitably aligned for storage of any 
  14130.           type of object. The return value is NULL if not enough storage is 
  14131.           available, or if size was specified as zero. 
  14132.  
  14133.  Example Code 
  14134.  
  14135.           This example prompts for the number of array entries you want and 
  14136.           then reserves enough space in storage for the entries. If malloc was 
  14137.           successful, the example assigns values to the entries and prints out 
  14138.           each entry;  otherwise, it prints out an error. 
  14139.  
  14140.                     #include <stdio.h>
  14141.                     #include <stdlib.h>
  14142.  
  14143.                     int main(void)
  14144.                     {
  14145.                        long *array;                              /* start of the array            */
  14146.                        long *index;                                           /* index variable   */
  14147.                        int i;                                                 /* index variable   */
  14148.                        int num;                             /* number of entries of the array     */
  14149.  
  14150.                        printf("Enter the size of the array\n");
  14151.                        scanf("%i", &num);
  14152.  
  14153.                        /* allocate num entries                                                    */
  14154.  
  14155.                        if ((index = array = malloc(num *sizeof(long))) != NULL) {
  14156.                           for (i = 0; i < num; ++i)             /* put values in array            */
  14157.                              *index++ = i;                      /* using pointer notation         */
  14158.                           for (i = 0; i < num; ++i)             /* print the array out            */
  14159.                              printf("array[ %i ] = %i\n", i, array[i]);
  14160.                        }
  14161.                        else {                                                 /* malloc error     */
  14162.                           perror("Out of storage");
  14163.                           abort();
  14164.                        }
  14165.                        return 0;
  14166.  
  14167.                        /****************************************************************************
  14168.                           The output should be similar to:
  14169.  
  14170.                           Enter the size of the array
  14171.                           5
  14172.                           array[ 0 ] = 0
  14173.                           array[ 1 ] = 1
  14174.                           array[ 2 ] = 2
  14175.                           array[ 3 ] = 3
  14176.                           array[ 4 ] = 4
  14177.                        ****************************************************************************/
  14178.                     }
  14179.  
  14180.  Related Information 
  14181.  
  14182.               calloc 
  14183.               free 
  14184.               _mheap 
  14185.               _msize 
  14186.               realloc 
  14187.               _umalloc 
  14188.  
  14189.  
  14190. ΓòÉΓòÉΓòÉ 3.131. _matherr - Process Math Library Errors ΓòÉΓòÉΓòÉ
  14191.  
  14192. _matherr - Process Math Library Errors 
  14193.  
  14194.  Syntax 
  14195.  
  14196.                     #include <math.h>
  14197.                     int _matherr(struct exception *x);
  14198.  
  14199.  Description 
  14200.  
  14201.           _matherr processes errors generated by the functions in the math 
  14202.           library. The math functions call _matherr whenever they detect an 
  14203.           error. The _matherr function supplied with The Developer's Toolkit 
  14204.           library performs no error handling and returns 0 to the calling 
  14205.           function. 
  14206.  
  14207.           You can provide a different definition of _matherr to carry out 
  14208.           special error handling. Be sure to use the /NOE link option, if you 
  14209.           are using your own _matherr function. For The Developer's Toolkit 
  14210.           compiler, you can use the /B option on the icc command line to pass 
  14211.           the /NOE option to the linker, as in the following: 
  14212.  
  14213.                        icc /B"/NOE" yourfile.c
  14214.  
  14215.           When an error occurs in a math routine, _matherr is called with a 
  14216.           pointer to the following structure (defined in <math.h>) as an 
  14217.           argument: 
  14218.  
  14219.                        struct exception {
  14220.                            int type;
  14221.                            char *name;
  14222.                            double arg1, arg2, retval;
  14223.                        };
  14224.  
  14225.           The type field specifies the type of math error. It has one of the 
  14226.           following values, defined in <math.h>:  compact break=fit. 
  14227.  
  14228.           Value          Meaning 
  14229.  
  14230.           DOMAIN         Argument domain error 
  14231.  
  14232.           OVERFLOW       Overflow range error 
  14233.  
  14234.           UNDERFLOW      Underflow range error 
  14235.  
  14236.           TLOSS          Total loss of significance 
  14237.  
  14238.           PLOSS          Partial loss of significance 
  14239.  
  14240.           SING           Argument singularity. 
  14241.  
  14242.           PLOSS is provided for compatibility with other compilers; The 
  14243.           Developer's Toolkit does not generate this value. 
  14244.  
  14245.           The name is a pointer to a null-ended string containing the name of 
  14246.           the function that caused the error. The arg1 and arg2 fields specify 
  14247.           the argument values that caused the error. If only one argument is 
  14248.           given, it is stored in arg1. The retval is the default return value; 
  14249.           you can change it. 
  14250.  
  14251.  Returns 
  14252.  
  14253.           The return value from _matherr must specify whether or not an error 
  14254.           actually occurred. If _matherr returns 0, an error message appears, 
  14255.           and errno is set to an appropriate error value. If _matherr returns a 
  14256.           nonzero value, no error message appears and errno remains unchanged. 
  14257.  
  14258.  Example Code 
  14259.  
  14260.           This example provides a _matherr function to handle errors from the 
  14261.           log or log10 functions. The arguments to these logarithmic functions 
  14262.           must be positive double values. _matherr processes a negative value 
  14263.           in an argument (a domain error) by returning the log of its absolute 
  14264.           value. It suppresses the error message normally displayed when this 
  14265.           error occurs.  If the error is a zero argument or if some other 
  14266.           routine produced the error, the example takes the default actions. 
  14267.  
  14268.                     #include <math.h>
  14269.                     #include <string.h>
  14270.                     #include <stdio.h>
  14271.                     #include <stdlib.h>
  14272.  
  14273.                     int main(void)
  14274.                     {
  14275.                        int value;
  14276.  
  14277.                        printf("Trying to evaluate log10(-1000.00) will create a math exception.\n");
  14278.                        value = log10(-1000.00);
  14279.                        printf("The _matherr() exception handler evaluates the expression to\n");
  14280.                        printf("log10(-1000.00) = %d\n", value);
  14281.                        return 0;
  14282.  
  14283.                        /****************************************************************************
  14284.                           The output should be:
  14285.  
  14286.                           Trying to evaluate log10(-1000.00) will create a math exception.
  14287.                           inside _matherr
  14288.                           The _matherr() exception handler evaluates the expression to
  14289.                           log10(-1000.00) = 3
  14290.                        ****************************************************************************/
  14291.                     }
  14292.  
  14293.                     int _matherr(struct exception *x)
  14294.                     {
  14295.                        printf("inside _matherr\n");
  14296.                        if (DOMAIN == x->type) {
  14297.                           if (0 == strcmp(x->name, "log")) {
  14298.                              x->retval = log(-(x->arg1));
  14299.                              return EXIT_FAILURE;
  14300.                           }
  14301.                           else
  14302.                              if (0 == strcmp(x->name, "log10")) {
  14303.                                 x->retval = log10(-(x->arg1));
  14304.                                 return EXIT_FAILURE;
  14305.                              }
  14306.                        }
  14307.                        return 0;                                  /* Use default actions          */
  14308.                     }
  14309.  
  14310.  Related Information 
  14311.  
  14312.               log 
  14313.               log10 
  14314.  
  14315.  
  14316. ΓòÉΓòÉΓòÉ 3.132. max - Return Larger of Two Values ΓòÉΓòÉΓòÉ
  14317.  
  14318. max - Return Larger of Two Values 
  14319.  
  14320.  Syntax 
  14321.  
  14322.                     #include <stdlib.h>
  14323.                     type max(type a, type b);
  14324.  
  14325.  Description 
  14326.  
  14327.           max compares two values and determines the larger of the two. The 
  14328.           data type can be any arithmetic data type, signed or unsigned.  Both 
  14329.           arguments must have the same type for each call to max. 
  14330.  
  14331.           Note:  Because max is a macro, if the evaluation of the arguments 
  14332.                  contains side effects (post-increment operators, for example), 
  14333.                  the results of both the side effects and the macro will be 
  14334.                  undefined. 
  14335.  
  14336.  Returns 
  14337.  
  14338.           max returns the larger of the two values. 
  14339.  
  14340.  Example Code 
  14341.  
  14342.           This example prints the larger of the two values, a and b. 
  14343.  
  14344.                     #include <stdlib.h>
  14345.                     #include <stdio.h>
  14346.  
  14347.                     int main(void)
  14348.                     {
  14349.                        int a = 10;
  14350.                        int b = 21;
  14351.  
  14352.                        printf("The larger of %d and %d is %d\n", a, b, max(a, b));
  14353.                        return 0;
  14354.  
  14355.                        /****************************************************************************
  14356.                           The output should be:
  14357.  
  14358.                           The larger of 10 and 21 is 21
  14359.                        ****************************************************************************/
  14360.                     }
  14361.  
  14362.  Related Information 
  14363.  
  14364.               min 
  14365.  
  14366.  
  14367. ΓòÉΓòÉΓòÉ 3.133. mblen - Determine Length of Multibyte Character ΓòÉΓòÉΓòÉ
  14368.  
  14369. mblen - Determine Length of Multibyte Character 
  14370.  
  14371.  Syntax 
  14372.  
  14373.                     #include <stdlib.h>
  14374.                     int mblen(const char *string, size_t n);
  14375.  
  14376.  Description 
  14377.  
  14378.           mblen determines the length in bytes of the multibyte character 
  14379.           pointed to by string. A maximum of n bytes is examined. 
  14380.  
  14381.           The behavior of mblen is affected by the LC_CTYPE category of the 
  14382.           current locale. 
  14383.  
  14384.  Returns 
  14385.  
  14386.           If string is NULL, mblen returns 0. 
  14387.  
  14388.           If string is not NULL, mblen returns: 
  14389.  
  14390.               0 if string points to the null character 
  14391.               The number of bytes comprising the multibyte character 
  14392.               The value -1 if string does not point to a valid multibyte 
  14393.                character. 
  14394.  
  14395.  Example Code 
  14396.  
  14397.           This example uses mblen and mbtowc to convert a multibyte character 
  14398.           into a single wide character. 
  14399.  
  14400.                     #include <stdio.h>
  14401.                     #include <stdlib.h>
  14402.                     #include <wchar.h>
  14403.                     #include <locale.h>
  14404.  
  14405.                     int main(void)
  14406.                     {
  14407.                        char     mb_string[] = "\x81\x41\x81\xc2" "b";
  14408.                        int      length;
  14409.                        wchar_t  widechar;
  14410.  
  14411.                        if (NULL == setlocale(LC_ALL, "ja_jp.ibm-932")) {
  14412.                           printf("setlocale failed.\n");
  14413.                           exit(EXIT_FAILURE);
  14414.                        }
  14415.                        length = mblen(mb_string, MB_CUR_MAX);
  14416.                        mbtowc(&widechar, mb_string, length);
  14417.                        printf("The wide character %lc has length of %d.\n", widechar, length);
  14418.                        return 0;
  14419.  
  14420.                        /****************************************************************************
  14421.                           The output should be similar to :
  14422.  
  14423.                           The wide character ╨«A has length of 2.
  14424.                        ****************************************************************************/
  14425.                     }
  14426.  
  14427.  Related Information 
  14428.  
  14429.               mbstowcs 
  14430.               mbtowc 
  14431.               setlocale 
  14432.               strlen 
  14433.               wcslen 
  14434.               wctomb 
  14435.  
  14436.  
  14437. ΓòÉΓòÉΓòÉ 3.134. mbstowcs - Convert Multibyte String to Wide-Character String ΓòÉΓòÉΓòÉ
  14438.  
  14439. mbstowcs - Convert Multibyte String to Wide-Character String 
  14440.  
  14441.  Syntax 
  14442.  
  14443.                     #include <stdlib.h>
  14444.                     size_t mbstowcs(wchar_t *dest, const char *string, size_t len);
  14445.  
  14446.  Description 
  14447.  
  14448.           mbstowcs converts the multibyte character string pointed to by string 
  14449.           into the wide-character array pointed to by dest. Depending on the 
  14450.           encoding scheme used by the code set, the multibyte character string 
  14451.           can contain any combination of single-byte or double-byte characters. 
  14452.  
  14453.           The conversion stops after len wide-characters in dest are filled or 
  14454.           after a null byte is encountered. The terminating null character is 
  14455.           converted to a wide character with the value 0; characters that 
  14456.           follow it are not processed. 
  14457.  
  14458.           The behavior of mbstowcs is affected by the LC_CTYPE category of the 
  14459.           current locale. 
  14460.  
  14461.  Returns 
  14462.  
  14463.           If successful, mbstowcs returns the number of characters converted 
  14464.           and stored in dest, not counting the terminating null character. The 
  14465.           string pointed to by dest ends with a null character unless mbstowcs 
  14466.           returns the value len. 
  14467.  
  14468.           If it encounters an invalid multibyte character, mbstowcs returns 
  14469.           (size_t)-1. If dest is a null pointer, the value of len is ignored 
  14470.           and mbstowcs returns the number of wide characters required for the 
  14471.           converted multibyte characters. 
  14472.  
  14473.  Example Code 
  14474.  
  14475.           This example uses mbstowcs to convert the multibyte character mbs to 
  14476.           a wide character string and store it in wcs. 
  14477.  
  14478.                     #include <wchar.h>
  14479.                     #include <stdio.h>
  14480.                     #include <stdlib.h>
  14481.                     #include <locale.h>
  14482.  
  14483.                     #define SIZE 10
  14484.  
  14485.                     int main(void)
  14486.                     {
  14487.                        char        mbs[] = "\x81\x41" "m" "\x81\x42";
  14488.                        wchar_t     wcs[SIZE];
  14489.  
  14490.                        if (NULL == setlocale(LC_ALL, "ja_jp.ibm-932")) {
  14491.                           printf("setlocale failed.\n");
  14492.                           exit(EXIT_FAILURE);
  14493.                        }
  14494.                        mbstowcs(wcs, mbs, SIZE);
  14495.                        printf("The wide character string is %ls.\n", wcs);
  14496.                        return 0;
  14497.  
  14498.                        /****************************************************************************
  14499.                           The output should be similiar to :
  14500.  
  14501.                           The wide character string is ╨«Am╨«B.
  14502.                        ****************************************************************************/
  14503.                     }
  14504.  
  14505.  Related Information 
  14506.  
  14507.               mblen 
  14508.               mbtowc 
  14509.               setlocale 
  14510.               wcslen 
  14511.               wcstombs 
  14512.  
  14513.  
  14514. ΓòÉΓòÉΓòÉ 3.135. mbtowc - Convert Multibyte Character to Wide Character ΓòÉΓòÉΓòÉ
  14515.  
  14516. mbtowc - Convert Multibyte Character to Wide Character 
  14517.  
  14518.  Syntax 
  14519.  
  14520.                     #include <stdlib.h>
  14521.                     int mbtowc(wchar_t *pwc, const char *string, size_t n);
  14522.  
  14523.  Description 
  14524.  
  14525.           mbtowc first determines the length of the multibyte character pointed 
  14526.           to by string. It then converts the multibyte character to the 
  14527.           corresponding wide character, and stores it in the location pointed 
  14528.           to by pwc, if pwc is not a null pointer. mbtowc examines a maximum of 
  14529.           n bytes from string. 
  14530.  
  14531.           If pwc is a null pointer, the multibyte character is not converted. 
  14532.  
  14533.           The behavior of mbtowc is affected by the LC_CTYPE category of the 
  14534.           current locale. 
  14535.  
  14536.  Returns 
  14537.  
  14538.           If string is NULL, mbtowc returns 0. If string is not NULL, mbtowc 
  14539.           returns: 
  14540.  
  14541.               The number of bytes comprising the converted multibyte 
  14542.                character, if n or fewer bytes form a valid multibyte character. 
  14543.               0 if string points to the null character. 
  14544.               -1 if string does not point to a valid multibyte character, and 
  14545.                the next n bytes do not form a valid multibyte character. 
  14546.  
  14547.  Example Code 
  14548.  
  14549.           This example uses mbtowc to convert the second multibyte character in 
  14550.           mbs to a wide character. 
  14551.  
  14552.                     #include <stdio.h>
  14553.                     #include <stdlib.h>
  14554.                     #include <wchar.h>
  14555.                     #include <locale.h>
  14556.  
  14557.                     int main(void)
  14558.                     {
  14559.                        char     mb_string[] = "\x81\x41\x81\x42" "c" "\x00";
  14560.                        int      length;
  14561.                        wchar_t  widechar;
  14562.  
  14563.                        if (NULL == setlocale(LC_ALL, "ja_jp.ibm-932")) {
  14564.                           printf("setlocale failed.\n");
  14565.                           exit(EXIT_FAILURE);
  14566.                        }
  14567.                        length = mblen(mb_string, MB_CUR_MAX);
  14568.                        length = mbtowc(&widechar, mb_string + length, MB_CUR_MAX);
  14569.                        printf("The wide character %lc has length of %d.\n", widechar, length);
  14570.                        return 0;
  14571.  
  14572.                        /****************************************************************************
  14573.                           The output should be similar to :
  14574.  
  14575.                           The wide character ╨«B has length of 2.
  14576.                        ****************************************************************************/
  14577.                     }
  14578.  
  14579.  Related Information 
  14580.  
  14581.               mblen 
  14582.               mbstowcs 
  14583.               setlocale 
  14584.               wcslen 
  14585.               wctomb 
  14586.  
  14587.  
  14588. ΓòÉΓòÉΓòÉ 3.136. memchr - Search Buffer ΓòÉΓòÉΓòÉ
  14589.  
  14590. memchr - Search Buffer 
  14591.  
  14592.  Syntax 
  14593.  
  14594.                     #include <string.h>  /* also in <memory.h> */
  14595.                     void *memchr(const void *buf, int c, size_t count);
  14596.  
  14597.  Description 
  14598.  
  14599.           memchr searches the first count bytes of buf for the first occurrence 
  14600.           of c converted to an unsigned char. The search continues until it 
  14601.           finds c or examines count bytes. 
  14602.  
  14603.  Returns 
  14604.  
  14605.           memchr returns a pointer to the location of c in buf. It returns NULL 
  14606.           if c is not within the first count bytes of buf. 
  14607.  
  14608.  Example Code 
  14609.  
  14610.           This example finds the first occurrence of "x" in the string that you 
  14611.           provide. If it is found, the string that starts with that character 
  14612.           is printed. 
  14613.  
  14614.                     #include <stdio.h>
  14615.                     #include <string.h>
  14616.  
  14617.                     int main(int argc,char **argv)
  14618.                     {
  14619.                        char *result;
  14620.  
  14621.                        if (argc != 2)
  14622.                           printf("Usage: %s string\n", argv[0]);
  14623.                        else {
  14624.                           if ((result = memchr(argv[1], 'x', strlen(argv[1]))) != NULL)
  14625.                              printf("The string starting with x is %s\n", result);
  14626.                           else
  14627.                              printf("The letter x cannot be found in the string\n");
  14628.                        }
  14629.                        return 0;
  14630.  
  14631.                        /****************************************************************************
  14632.                           If the program is passed the argumrnt boxing, the output should be:
  14633.  
  14634.                           The string starting with x is xing
  14635.                        ****************************************************************************/
  14636.                     }
  14637.  
  14638.  Related Information 
  14639.  
  14640.               memcmp 
  14641.               memcpy 
  14642.               memicmp 
  14643.               memmove 
  14644.               memset 
  14645.               strchr 
  14646.  
  14647.  
  14648. ΓòÉΓòÉΓòÉ 3.137. memcmp - Compare Buffers ΓòÉΓòÉΓòÉ
  14649.  
  14650. memcmp - Compare Buffers 
  14651.  
  14652.  Syntax 
  14653.  
  14654.                     #include <string.h>  /* also in <memory.h> */
  14655.                     int memcmp(const void *buf1, const void *buf2, size_t count);
  14656.  
  14657.  Description 
  14658.  
  14659.           memcmp compares the first count bytes of buf1 and buf2. 
  14660.  
  14661.  Returns 
  14662.  
  14663.           memcmp returns a value indicating the relationship between the two 
  14664.           buffers as follows:  compact break=fit. 
  14665.  
  14666.           Value               Meaning 
  14667.  
  14668.           Less than 0         buf1 less than buf2 
  14669.  
  14670.           0                   buf1 identical to buf2 
  14671.  
  14672.           Greater than 0      buf1 greater than buf2 
  14673.  
  14674.  Example Code 
  14675.  
  14676.           This example compares first and second arguments passed to main to 
  14677.           determine which, if either, is greater. 
  14678.  
  14679.                     #include <stdio.h>
  14680.                     #include <string.h>
  14681.  
  14682.                     int main(int argc,char **argv)
  14683.                     {
  14684.                        int len;
  14685.                        int result;
  14686.  
  14687.                        if (argc != 3) {
  14688.                           printf("Usage: %s string1 string2\n", argv[0]);
  14689.                        }
  14690.                        else {
  14691.  
  14692.                           /* Determine the length to be used for comparison                       */
  14693.  
  14694.                           if (strlen(argv[1]) < strlen(argv[2]))
  14695.                              len = strlen(argv[1]);
  14696.                           else
  14697.                              len = strlen(argv[2]);
  14698.                           result = memcmp(argv[1], argv[2], len);
  14699.                           printf("When the first %i characters are compared,\n", len);
  14700.                           if (0 == result)
  14701.                              printf("\"%s\" is identical to \"%s\"\n", argv[1], argv[2]);
  14702.                           else
  14703.                              if (result < 0)
  14704.  
  14705.                                 printf("\"%s\" is less than \"%s\"\n", argv[1], argv[2]);
  14706.                              else
  14707.                                 printf("\"%s\" is greater than \"%s\"\n", argv[1], argv[2]);
  14708.                        }
  14709.                        return 0;
  14710.  
  14711.                        /****************************************************************************
  14712.                           If the program is passed the arguments "firststring secondstring",
  14713.                           the output should be:
  14714.  
  14715.                           When the first 11 characters are compared,
  14716.                           "firststring" is less than "secondstring"
  14717.                        ****************************************************************************/
  14718.                     }
  14719.  
  14720.  Related Information 
  14721.  
  14722.               memchr 
  14723.               memcpy 
  14724.               memicmp 
  14725.               memmove 
  14726.               memset 
  14727.               strcmp 
  14728.  
  14729.  
  14730. ΓòÉΓòÉΓòÉ 3.138. memcpy - Copy Bytes ΓòÉΓòÉΓòÉ
  14731.  
  14732. memcpy - Copy Bytes 
  14733.  
  14734.  Syntax 
  14735.  
  14736.                     #include <string.h>  /* also <memory.h> */
  14737.                     void *memcpy(void *dest, const void *src, size_t count);
  14738.  
  14739.  Description 
  14740.  
  14741.           memcpy copies count bytes of src to dest. The behavior is undefined 
  14742.           if copying takes place between objects that overlap. (The memmove 
  14743.           function allows copying between objects that may overlap.) 
  14744.  
  14745.  Returns 
  14746.  
  14747.           memcpy returns a pointer to dest. 
  14748.  
  14749.  Example Code 
  14750.  
  14751.           This example copies the contents of source to target. 
  14752.  
  14753.                     #include <string.h>
  14754.                     #include <stdio.h>
  14755.  
  14756.                     #define  MAX_LEN       80
  14757.                     char source[MAX_LEN] = "This is the source string";
  14758.                     char target[MAX_LEN] = "This is the target string";
  14759.  
  14760.                     int main(void)
  14761.                     {
  14762.                        printf("Before memcpy, target is \"%s\"\n", target);
  14763.                        memcpy(target, source, sizeof(source));
  14764.                        printf("After memcpy, target becomes \"%s\"\n", target);
  14765.                        return 0;
  14766.  
  14767.                        /****************************************************************************
  14768.                           The output should be:
  14769.  
  14770.                           Before memcpy, target is "This is the target string"
  14771.                           After memcpy, target becomes "This is the source string"
  14772.                        ****************************************************************************/
  14773.                     }
  14774.  
  14775.  Related Information 
  14776.  
  14777.               memchr 
  14778.               memcmp 
  14779.               memmove 
  14780.               memset 
  14781.               strcpy 
  14782.  
  14783.  
  14784. ΓòÉΓòÉΓòÉ 3.139. memicmp - Compare Bytes ΓòÉΓòÉΓòÉ
  14785.  
  14786. memicmp - Compare Bytes 
  14787.  
  14788.  Syntax 
  14789.  
  14790.                     #include <string.h>    /* also in <memory.h> */
  14791.                     int memicmp(void *buf1, void *buf2, unsigned int cnt);
  14792.  
  14793.  Description 
  14794.  
  14795.           memicmp compares the first cnt bytes of buf1 and buf2 without regard 
  14796.           to the case of letters in the two buffers.  The function converts all 
  14797.           uppercase characters into lowercase and then performs the comparison. 
  14798.  
  14799.  Returns 
  14800.  
  14801.           The return value of memicmp indicates the result as follows:  compact 
  14802.           break=fit. 
  14803.  
  14804.           Value               Meaning 
  14805.  
  14806.           Less than 0         buf1 less than buf2 
  14807.  
  14808.           0                   buf1 identical to buf2 
  14809.  
  14810.           Greater than 0      buf1 greater than buf2. 
  14811.  
  14812.  Example Code 
  14813.  
  14814.           This example copies two strings that each contain a substring of 29 
  14815.           characters that are the same except for case. The example then 
  14816.           compares the first 29 bytes without regard to case. 
  14817.  
  14818.                     #include <stdio.h>
  14819.                     #include <string.h>
  14820.  
  14821.                     char first[100],second[100];
  14822.  
  14823.                     int main(void)
  14824.                     {
  14825.                        int result;
  14826.  
  14827.                        strcpy(first, "Those Who Will Not Learn From History");
  14828.                        strcpy(second, "THOSE WHO WILL NOT LEARN FROM their mistakes");
  14829.                        printf("Comparing the first 29 characters of two strings.\n");
  14830.                        result = memicmp(first, second, 29);
  14831.                        printf("The first 29 characters of String 1 are ");
  14832.                        if (result < 0)
  14833.                           printf("less than String 2.\n");
  14834.                        else
  14835.                           if (0 == result)
  14836.                              printf("equal to String 2.\n");
  14837.                           else
  14838.                              printf("greater than String 2.\n");
  14839.                        return 0;
  14840.  
  14841.                        /****************************************************************************
  14842.                           The output should be:
  14843.  
  14844.                           Comparing the first 29 characters of two strings.
  14845.                           The first 29 characters of String 1 are equal to String 2
  14846.                        ****************************************************************************/
  14847.                     }
  14848.  
  14849.  Related Information 
  14850.  
  14851.               memchr 
  14852.               memcmp 
  14853.               memcpy 
  14854.               memmove 
  14855.               memset 
  14856.               strcmp 
  14857.  
  14858.  
  14859. ΓòÉΓòÉΓòÉ 3.140. memmove - Copy Bytes ΓòÉΓòÉΓòÉ
  14860.  
  14861. memmove - Copy Bytes 
  14862.  
  14863.  Syntax 
  14864.  
  14865.                     #include <string.h>  /* also in <memory.h> */
  14866.                     void *memmove(void *dest, const void *src, size_t count);
  14867.  
  14868.  Description 
  14869.  
  14870.           memmove copies count bytes of src to dest. memmove allows copying 
  14871.           between objects that may overlap as if src is first copied into a 
  14872.           temporary array. 
  14873.  
  14874.  Returns 
  14875.  
  14876.           memmove returns a pointer to dest. 
  14877.  
  14878.  Example Code 
  14879.  
  14880.           This example copies the word shiny from position target + 2 to 
  14881.           position target + 8. 
  14882.  
  14883.                     #include <string.h>
  14884.                     #include <stdio.h>
  14885.  
  14886.                     #define  SIZE          21
  14887.                     char target[SIZE] = "a shiny white sphere";
  14888.  
  14889.                     int main(void)
  14890.                     {
  14891.                        char *p = target+8;                    /* p points at the starting character
  14892.                                                                  of the word we want to replace   */
  14893.                        char *source = target+2;                               /* start of "shiny" */
  14894.  
  14895.                        printf("Before memmove, target is \"%s\"\n", target);
  14896.                        memmove(p, source, 5);
  14897.                        printf("After memmove, target becomes \"%s\"\n", target);
  14898.                        return 0;
  14899.  
  14900.                        /****************************************************************************
  14901.                           The output should be:
  14902.  
  14903.                           Before memmove, target is "a shiny white sphere"
  14904.                           After memmove, target becomes "a shiny shiny sphere"
  14905.                        ****************************************************************************/
  14906.                     }
  14907.  
  14908.  Related Information 
  14909.  
  14910.               memchr 
  14911.               memcmp 
  14912.               memcpy 
  14913.               memset 
  14914.               strcpy 
  14915.  
  14916.  
  14917. ΓòÉΓòÉΓòÉ 3.141. memset - Set Bytes to Value ΓòÉΓòÉΓòÉ
  14918.  
  14919. memset - Set Bytes to Value 
  14920.  
  14921.  Syntax 
  14922.  
  14923.                     #include <string.h>  /* also in <memory.h> */
  14924.                     void *memset(void *dest, int c, size_t count);
  14925.  
  14926.  Description 
  14927.  
  14928.           memset sets the first count bytes of dest to the value c. The value 
  14929.           of c is converted to an unsigned char. 
  14930.  
  14931.  Returns 
  14932.  
  14933.           memset returns a pointer to dest. 
  14934.  
  14935.  Example Code 
  14936.  
  14937.           This example sets 10 bytes of the buffer to A and the next 10 bytes 
  14938.           to B. 
  14939.  
  14940.                     #include <string.h>
  14941.                     #include <stdio.h>
  14942.  
  14943.                     #define  BUF_SIZE      20
  14944.  
  14945.                     int main(void)
  14946.                     {
  14947.                        char buffer[BUF_SIZE+1];
  14948.                        char *string;
  14949.  
  14950.                        memset(buffer, 0, sizeof(buffer));
  14951.                        string = memset(buffer, 'A', 10);
  14952.                        printf("\nBuffer contents: %s\n", string);
  14953.                        memset(buffer+10, 'B', 10);
  14954.                        printf("\nBuffer contents: %s\n", buffer);
  14955.                        return 0;
  14956.  
  14957.                        /****************************************************************************
  14958.                           The output should be:
  14959.  
  14960.                           Buffer contents: AAAAAAAAAA
  14961.                           Buffer contents: AAAAAAAAAABBBBBBBBBB
  14962.                        ****************************************************************************/
  14963.                     }
  14964.  
  14965.  Related Information 
  14966.  
  14967.               memchr 
  14968.               memcmp 
  14969.               memcpy 
  14970.               memicmp 
  14971.               memmove 
  14972.               strnset - strset 
  14973.  
  14974.  
  14975. ΓòÉΓòÉΓòÉ 3.142. _mheap - Query Memory Heap for Allocated Object ΓòÉΓòÉΓòÉ
  14976.  
  14977. _mheap - Query Memory Heap for Allocated Object 
  14978.  
  14979.  Syntax 
  14980.  
  14981.                     #include <umalloc.h>
  14982.                     Heap_t _mheap(void *ptr);
  14983.  
  14984.  Description 
  14985.  
  14986.           _mheap determines from which heap the object specified by ptr was 
  14987.           allocated. The ptr must be a valid pointer that was returned from a 
  14988.           run-time allocation function (_ucalloc, malloc, realloc, and so on). 
  14989.           If the pointer is not valid, the results of _mheap are undefined. 
  14990.  
  14991.           For more information about creating and using heaps, see the chapter 
  14992.           on Managing Memory in the VisualAge C++ Programming Guide. 
  14993.  
  14994.  Returns 
  14995.  
  14996.           _mheap returns the handle of the heap from which the object was 
  14997.           allocated.  If the object was allocated from the run-time heap, 
  14998.           _mheap returns _RUNTIME_HEAP. If the object passed to _mheap is NULL, 
  14999.           _mheap returns NULL. If the object is not valid, _mheap either 
  15000.           returns NULL (depending on how closely the storage pointed to 
  15001.           resembles a valid object), or an exception occurs. 
  15002.  
  15003.  Example Code 
  15004.  
  15005.           This example allocates a block of memory from the heap, then uses 
  15006.           _mheap to determine which heap the block came from. 
  15007.  
  15008.                     #include <stdlib.h>
  15009.                     #include <stdio.h>
  15010.                     #include <umalloc.h>
  15011.  
  15012.                     int main(void)
  15013.                     {
  15014.                        char  *ptr;
  15015.  
  15016.                        if (NULL == (ptr = malloc(10))) {
  15017.                           puts("Could not allocate memory block.");
  15018.                           exit(EXIT_FAILURE);
  15019.                        }
  15020.                        printf("Handle of heap used is 0x%x\n", _mheap(ptr));
  15021.                        return 0;
  15022.  
  15023.                        /****************************************************************************
  15024.                           The output should be similar to :
  15025.  
  15026.                           Handle of heap used is 0x70000
  15027.                        ****************************************************************************/
  15028.                     }
  15029.  
  15030.  Related Information 
  15031.  
  15032.               "Managing Memory" in the VisualAge C++ Programming Guide 
  15033.               _msize 
  15034.               _ucreate 
  15035.               _ustats 
  15036.  
  15037.  
  15038. ΓòÉΓòÉΓòÉ 3.143. min - Return Lesser of Two Values ΓòÉΓòÉΓòÉ
  15039.  
  15040. min - Return Lesser of Two Values 
  15041.  
  15042.  Syntax 
  15043.  
  15044.                     #include <stdlib.h>
  15045.                     type min(type a, type b);
  15046.  
  15047.  Description 
  15048.  
  15049.           min compares two values and determines the smaller of the two. The 
  15050.           data type can be any arithmetic data type, signed or unsigned.  The 
  15051.           type must be the same for both arguments to min. 
  15052.  
  15053.           Note:  Because min is a macro, if the evaluation of the arguments 
  15054.                  contains side effects (post-increment operators, for example), 
  15055.                  the results of both the side effects and the macro will be 
  15056.                  undefined. 
  15057.  
  15058.  Returns 
  15059.  
  15060.           min returns the smaller of the two values. 
  15061.  
  15062.  Example Code 
  15063.  
  15064.           This example prints the smaller of the two values, a and b. 
  15065.  
  15066.                     #include <stdlib.h>
  15067.                     #include <stdio.h>
  15068.  
  15069.                     int main(void)
  15070.                     {
  15071.                        int a = 10;
  15072.                        int b = 21;
  15073.  
  15074.                        printf("The smaller of %d and %d is %d\n", a, b, min(a, b));
  15075.                        return 0;
  15076.  
  15077.                        /****************************************************************************
  15078.                           The output should be:
  15079.  
  15080.                           The smaller of 10 and 21 is 10
  15081.                        ****************************************************************************/
  15082.                     }
  15083.  
  15084.  Related Information 
  15085.  
  15086.               max 
  15087.  
  15088.  
  15089. ΓòÉΓòÉΓòÉ 3.144. mkdir - Create New Directory ΓòÉΓòÉΓòÉ
  15090.  
  15091. mkdir - Create New Directory 
  15092.  
  15093.  Syntax 
  15094.  
  15095.                     #include <direct.h>
  15096.                     int mkdir(char *pathname);
  15097.  
  15098.  Description 
  15099.  
  15100.           mkdir creates a new directory with the specified pathname.  Because 
  15101.           only one directory can be created at a time, only the last component 
  15102.           of pathname can name a new directory. 
  15103.  
  15104.  Returns 
  15105.  
  15106.           mkdir returns the value 0 if the directory was created.  A return 
  15107.           value of -1 indicates an error, and errno is set to one of the 
  15108.           following values:  compact break=fit. 
  15109.  
  15110.           Value          Meaning 
  15111.  
  15112.           EACCESS        The directory was not created;  the given name is the 
  15113.                          name of an existing file, directory, or device. 
  15114.  
  15115.           ENOENT         The pathname was not found. 
  15116.  
  15117.  Example Code 
  15118.  
  15119.           This example creates two new directories:  one at the root on drive 
  15120.           C:, and one in the tmp subdirectory of the current working directory. 
  15121.  
  15122.                     #include <stdio.h>
  15123.                     #include <direct.h>
  15124.                     #include <string.h>
  15125.  
  15126.                     int main(void)
  15127.                     {
  15128.                        char *dir1,*dir2;
  15129.  
  15130.                      /*  Create the directory "aleng" in the root directory of the C: drive.      */
  15131.  
  15132.                        dir1 = "c:\\aleng";
  15133.                        if (0 == (mkdir(dir1)))
  15134.                           printf("%s directory was created.\n", dir1);
  15135.                        else
  15136.                           printf("%s directory was not created.\n", dir1);
  15137.  
  15138.                      /*  Create the subdirectory "simon" in the current directory.                */
  15139.  
  15140.                        dir2 = "simon";
  15141.                        if (0 == (mkdir(dir2)))
  15142.                           printf("%s directory was created.\n", dir2);
  15143.                        else
  15144.                           printf("%s directory was not created.\n", dir2);
  15145.  
  15146.                      /*  Remove the directory "aleng" from the root directory of the C: drive.    */
  15147.  
  15148.                        printf("Removing directory 'aleng' from the root directory.\n");
  15149.                        if (rmdir(dir1))
  15150.                           perror(NULL);
  15151.                        else
  15152.                           printf("%s directory was removed.\n", dir1);
  15153.  
  15154.                      /*  Remove the subdirectory "simon" from the current directory.              */
  15155.  
  15156.                        printf("Removing subdirectory 'simon' from the current directory.\n");
  15157.                        if (rmdir(dir2))
  15158.                           perror(NULL);
  15159.                        else
  15160.                           printf("%s directory was removed.\n", dir2);
  15161.                        return 0;
  15162.  
  15163.                        /****************************************************************************
  15164.                           The output should be:
  15165.  
  15166.                           c:\aleng directory was created.
  15167.                           simon directory was created.
  15168.                           Removing directory 'aleng' from the root directory.
  15169.                           c:\aleng directory was removed.
  15170.                           Removing subdirectory 'simon' from the current directory.
  15171.                           simon directory was removed.
  15172.                        ****************************************************************************/
  15173.                     }
  15174.  
  15175.  Related Information 
  15176.  
  15177.               chdir 
  15178.               _getcwd 
  15179.               _getdcwd 
  15180.               rmdir 
  15181.  
  15182.  
  15183. ΓòÉΓòÉΓòÉ 3.145. mktime - Convert Local Time ΓòÉΓòÉΓòÉ
  15184.  
  15185. mktime - Convert Local Time 
  15186.  
  15187.  Syntax 
  15188.  
  15189.                     #include <time.h>
  15190.                     time_t mktime(struct tm *time);
  15191.  
  15192.  Description 
  15193.  
  15194.           mktime converts local time, stored as a tm structure pointed to by 
  15195.           time, into a time_t structure suitable for use with other time 
  15196.           functions. The values of some structure elements pointed to by time 
  15197.           are not restricted to the ranges shown for gmtime. 
  15198.  
  15199.           The values of tm_wday and tm_yday passed to mktime are ignored and 
  15200.           are assigned their correct values on return. 
  15201.  
  15202.           Note:  The time and date functions begin at 00:00:00 Coordinated 
  15203.                  Universal Time, January 1, 1970. 
  15204.  
  15205.  Returns 
  15206.  
  15207.           mktime returns the calendar time having type time_t.  The value 
  15208.           (time_t)(-1) is returned if the calendar time cannot be represented. 
  15209.  
  15210.  Example Code 
  15211.  
  15212.           This example prints the day of the week that is 40 days and 16 hours 
  15213.           from the current date. 
  15214.  
  15215.                     #include <stdio.h>
  15216.                     #include <time.h>
  15217.  
  15218.                     char *wday[] =  { "Sunday", "Monday", "Tuesday", "Wednesday",
  15219.                                       "Thursday", "Friday", "Saturday" } ;
  15220.  
  15221.                     int main(void)
  15222.                     {
  15223.                        time_t t1,t3;
  15224.                        struct tm *t2;
  15225.  
  15226.                        t1 = time(NULL);
  15227.                        t2 = localtime(&t1);
  15228.                        t2->tm_mday += 40;
  15229.                        t2->tm_hour += 16;
  15230.                        t3 = mktime(t2);
  15231.                        printf("40 days and 16 hours from now, it will be a %9s \n", wday[t2->tm_wday
  15232.                           ]);
  15233.                        return 0;
  15234.  
  15235.                        /****************************************************************************
  15236.                           The output should be similar to:
  15237.  
  15238.                           40 days and 16 hours from now, it will be a Sunday
  15239.                        ****************************************************************************/
  15240.                     }
  15241.  
  15242.  Related Information 
  15243.  
  15244.               asctime 
  15245.               ctime 
  15246.               gmtime 
  15247.               localtime 
  15248.               time 
  15249.  
  15250.  
  15251. ΓòÉΓòÉΓòÉ 3.146. modf - Separate Floating-Point Value ΓòÉΓòÉΓòÉ
  15252.  
  15253. modf - Separate Floating-Point Value 
  15254.  
  15255.  Syntax 
  15256.  
  15257.                     #include <math.h>
  15258.                     double modf(double x, double *intptr);
  15259.  
  15260.  Description 
  15261.  
  15262.           modf breaks down the floating-point value x into fractional and 
  15263.           integral parts.  The signed fractional portion of x is returned.  The 
  15264.           integer portion is stored as a double value pointed to by intptr. 
  15265.           Both the fractional and integral parts are given the same sign as x. 
  15266.  
  15267.  Returns 
  15268.  
  15269.           modf returns the signed fractional portion of x. 
  15270.  
  15271.  Example Code 
  15272.  
  15273.           This example breaks the floating-point number -14.876 into its 
  15274.           fractional and integral components. 
  15275.  
  15276.                     #include <math.h>
  15277.  
  15278.                     int main(void)
  15279.                     {
  15280.                        double x,y,d;
  15281.  
  15282.                        x = -14.876;
  15283.                        y = modf(x, &d);
  15284.                        printf("x = %lf\n", x);
  15285.                        printf("Integral part = %lf\n", d);
  15286.                        printf("Fractional part = %lf\n", y);
  15287.                        return 0;
  15288.  
  15289.                        /****************************************************************************
  15290.                           The output should be:
  15291.  
  15292.                           x = -14.876000
  15293.                           Integral part = -14.000000
  15294.                           Fractional part = -0.876000
  15295.                        ****************************************************************************/
  15296.                     }
  15297.  
  15298.  Related Information 
  15299.  
  15300.               fmod 
  15301.               frexp 
  15302.               ldexp 
  15303.  
  15304.  
  15305. ΓòÉΓòÉΓòÉ 3.147. _msize - Return Number of Bytes Allocated ΓòÉΓòÉΓòÉ
  15306.  
  15307. _msize - Return Number of Bytes Allocated 
  15308.  
  15309.  Syntax 
  15310.  
  15311.                     #include <stdlib.h>  /* also in <malloc.h> */
  15312.                     size_t _msize(void *ptr)
  15313.  
  15314.  Description 
  15315.  
  15316.           _msize determines the number of bytes that were allocated to the 
  15317.           pointer argument ptr. The ptr must have been returned from one of the 
  15318.           run-time memory allocation functions (_ucalloc, malloc, _trealloc, 
  15319.           and so on). 
  15320.  
  15321.           You cannot pass the argument of an object that has been freed. 
  15322.  
  15323.  Returns 
  15324.  
  15325.           _msize returns the number of bytes allocated. If the argument is not 
  15326.           a valid pointer returned from a memory allocation function, the 
  15327.           return value is undefined. If NULL is passed, _msize returns 0. 
  15328.  
  15329.  Example Code 
  15330.  
  15331.           This example displays the size of an allocated object from malloc. 
  15332.  
  15333.                     #include <stdlib.h>
  15334.                     #include <stdio.h>
  15335.  
  15336.                     int main(void)
  15337.                     {
  15338.                        char *ptr;
  15339.  
  15340.                        if (NULL == (ptr = malloc(10))) {
  15341.                           puts("Could not allocate memory block.");
  15342.                           exit(EXIT_FAILURE);
  15343.                        }
  15344.                        memset(ptr, 'x', 5);
  15345.                        printf("The size of the allocated object is %u.\n",_msize(ptr));
  15346.                        return 0;
  15347.  
  15348.                        /****************************************************************************
  15349.                           The output should be similar to :
  15350.  
  15351.                           The size of the allocated object is 10.
  15352.                        ****************************************************************************/
  15353.                     }
  15354.  
  15355.  Related Information 
  15356.  
  15357.               calloc 
  15358.               malloc 
  15359.               realloc 
  15360.  
  15361.  
  15362. ΓòÉΓòÉΓòÉ 3.148. nl_langinfo - Retrieve Locale Information ΓòÉΓòÉΓòÉ
  15363.  
  15364. nl_langinfo - Retrieve Locale Information 
  15365.  
  15366.  Syntax 
  15367.  
  15368.                     #include <langinfo.h>
  15369.                     char *nl_langinfo(nl_item item);
  15370.  
  15371.  Description 
  15372.  
  15373.           nl_langinfo retrieves from the current locale the string that 
  15374.           describes the requested information specified by item. 
  15375.  
  15376.           The constant names and values for item are defined in <langinfo.h> 
  15377.           which includes <ulsitem.h>, the header file that actually contains 
  15378.           the constant names and values. 
  15379.  
  15380.  Returns 
  15381.  
  15382.           nl_langinfo returns a pointer to a null-terminated string containing 
  15383.           information about the active language or cultural area. The active 
  15384.           language or cultural area is determined by the most recent setlocale 
  15385.           call. Subsequent calls to the function may modify the array that the 
  15386.           return value points to. Your own code cannot modify the array. 
  15387.  
  15388.           If item is not valid, nl_langinfo returns a pointer to an empty 
  15389.           string. 
  15390.  
  15391.  Example Code 
  15392.  
  15393.           This example uses nl_langinfo to retrieve the current codeset name. 
  15394.  
  15395.                     #include <langinfo.h>
  15396.                     #include <stdio.h>
  15397.  
  15398.                     int main(void)
  15399.                     {
  15400.                        printf("Current codeset is %s\n", nl_langinfo(CODESET));
  15401.                        return 0;
  15402.  
  15403.                        /****************************************************************************
  15404.                           The output should be similar to :
  15405.  
  15406.                           Current codeset is IBM-850
  15407.                        ****************************************************************************/
  15408.                     }
  15409.  
  15410.  Related Information 
  15411.  
  15412.               localeconv 
  15413.               setlocale 
  15414.  
  15415.  
  15416. ΓòÉΓòÉΓòÉ 3.149. _onexit - Record Termination Function ΓòÉΓòÉΓòÉ
  15417.  
  15418. _onexit - Record Termination Function 
  15419.  
  15420.  Syntax 
  15421.  
  15422.                     #include <stdlib.h>
  15423.                     onexit_t _onexit(onexit_t func);
  15424.  
  15425.  Description 
  15426.  
  15427.           _onexit records the address of a function func to call when the 
  15428.           program ends normally.  Successive calls to _onexit create a stack of 
  15429.           functions that run in a last-in-first-out order. The functions passed 
  15430.           to _onexit cannot take parameters. 
  15431.  
  15432.           You can record up to 32 termination functions with calls to _onexit 
  15433.           and atexit. If you exceed 32 functions, _onexit returns the value 
  15434.           NULL. 
  15435.  
  15436.           Note:  For portability, use the ANSI/ISO standard atexit function, 
  15437.                  which is equivalent to _onexit. 
  15438.  
  15439.  Returns 
  15440.  
  15441.           If successful, _onexit returns a pointer to the function; otherwise, 
  15442.           it returns a NULL value. 
  15443.  
  15444.  Example Code 
  15445.  
  15446.           This example specifies and defines four distinct functions that run 
  15447.           consecutively at the completion of main. 
  15448.  
  15449.                     #include <stdio.h>
  15450.                     #include <stdlib.h>
  15451.  
  15452.                     int fn1(void)
  15453.                     {
  15454.                        printf("next.\n");
  15455.                     }
  15456.  
  15457.                     int fn2(void)
  15458.                     {
  15459.                        printf("run ");
  15460.                     }
  15461.  
  15462.                     int fn3(void)
  15463.                     {
  15464.                        printf("is ");
  15465.                     }
  15466.  
  15467.                     int fn4(void)
  15468.                     {
  15469.                        printf("This ");
  15470.                     }
  15471.  
  15472.                     int main(void)
  15473.                     {
  15474.                        _onexit(fn1);
  15475.                        _onexit(fn2);
  15476.                        _onexit(fn3);
  15477.                        _onexit(fn4);
  15478.                        printf("This is run first.\n");
  15479.                        return 0;
  15480.  
  15481.                        /****************************************************************************
  15482.                           The output should be:
  15483.  
  15484.                           This is run first.
  15485.                           This is run next.
  15486.                        ****************************************************************************/
  15487.                     }
  15488.  
  15489.  Related Information 
  15490.  
  15491.               abort 
  15492.               atexit 
  15493.               exit 
  15494.               _exit 
  15495.  
  15496.  
  15497. ΓòÉΓòÉΓòÉ 3.150. open - Open File ΓòÉΓòÉΓòÉ
  15498.  
  15499. open - Open File 
  15500.  
  15501.  Syntax 
  15502.  
  15503.                     #include <io.h>
  15504.                     #include <fcntl.h>
  15505.                     #include <sys\stat.h>
  15506.                     int open(char *pathname, int oflag, int pmode);
  15507.  
  15508.  Description 
  15509.  
  15510.           open opens the file specified by pathname and prepares the file for 
  15511.           subsequent reading or writing as defined by oflag. open can also 
  15512.           prepare the file for reading and writing. 
  15513.  
  15514.           The oflag is an integer expression formed by combining one or more of 
  15515.           the following constants, defined in <fcntl.h>. To specify more than 
  15516.           one constant, join the constants with the bitwise OR operator (|); 
  15517.           for example, O_CREAT | O_TEXT. 
  15518.  
  15519.           Oflag         Meaning 
  15520.           O_APPEND      Reposition the file pointer to the end of the file 
  15521.                         before every write operation. 
  15522.           O_CREAT       Create and open a new file.  This flag has no effect if 
  15523.                         the file specified by pathname exists. 
  15524.           O_EXCL        Return an error value if the file specified by pathname 
  15525.                         exists. This flag applies only when used with O_CREAT. 
  15526.           O_RDONLY      Open the file for reading only.  If this flag is given, 
  15527.                         neither O_RDWR nor O_WRONLY can be given. 
  15528.           O_RDWR        Open the file for reading and writing.  If this flag is 
  15529.                         given, neither O_RDONLY nor O_WRONLY can be given. 
  15530.           O_TRUNC       Open and truncate an existing file to 0 length. The 
  15531.                         file must have write permission. The contents of the 
  15532.                         file are destroyed, and O_TRUNC cannot be specified 
  15533.                         with O_RDONLY. 
  15534.           O_WRONLY      Open the file for writing only.  If this flag is given, 
  15535.                         neither O_RDONLY nor O_RDWR can be given. 
  15536.           O_BINARY      Open the file in binary (untranslated) mode. 
  15537.           O_TEXT        Open the file in text (translated) mode. 
  15538.  
  15539.           If neither O_BINARY or O_TEXT is specified, the default will be 
  15540.           O_TEXT; it is an error to specify both O_BINARY and O_TEXT. You must 
  15541.           specify one of the access mode flags, O_RDONLY, O_WRONLY, or O_RDWR. 
  15542.           There is no default. 
  15543.  
  15544.           Warning: Use O_TRUNC with care; it destroys the complete contents of 
  15545.           an existing file. 
  15546.  
  15547.           For more details on text and binary modes and their differences, see 
  15548.           "Stream Processing" in the VisualAge C++ Programming Guide. 
  15549.  
  15550.           The pmode argument is an integer expression containing one or both of 
  15551.           the constants S_IWRITE and S_IREAD, defined in <sys\stat.h>. The 
  15552.           pmode is required only when O_CREAT is specified. If the file exists, 
  15553.           pmode is ignored. Otherwise, pmode specifies the permission settings 
  15554.           for the file. These are set when the new file is closed for the first 
  15555.           time. The meaning of the pmode argument is as follows:  compact 
  15556.           break=fit. 
  15557.  
  15558.           Value                   Meaning 
  15559.  
  15560.           S_IWRITE                Writing permitted 
  15561.  
  15562.           S_IREAD                 Reading permitted 
  15563.  
  15564.           S_IREAD | S_IWRITE      Reading and writing permitted. 
  15565.  
  15566.           If write permission is not given, the file is read-only. Under the 
  15567.           OS/2 operating system, all files are readable; you cannot give 
  15568.           write-only permission. The modes S_IWRITE and S_IREAD | S_IWRITE are 
  15569.           equivalent. 
  15570.  
  15571.           open applies the current file permission mask to pmode before setting 
  15572.           the permissions. (See umask.) 
  15573.  
  15574.           Note:  In earlier releases of C Set ++, open began with an underscore 
  15575.                  (_open). Because it is defined by the X/Open standard, the 
  15576.                  underscore has been removed. For compatibility, The 
  15577.                  Developer's Toolkit will map _open to open for you. 
  15578.  
  15579.  Returns 
  15580.  
  15581.           open returns a file handle for the opened file. A return value of -1 
  15582.           indicates an error, and errno is set to one of the following values: 
  15583.           compact break=fit. 
  15584.  
  15585.           Value          Meaning 
  15586.  
  15587.           EACCESS        The given pathname is a directory; or the file is 
  15588.                          read-only but an open for writing was attempted; or a 
  15589.                          sharing violation occurred. 
  15590.  
  15591.           EEXIST         The O_CREAT and O_EXCL flags are specified, but the 
  15592.                          named file already exists. 
  15593.  
  15594.           EMFILE         No more file handles are available. 
  15595.  
  15596.           EINVAL         An incorrect argument was passed. 
  15597.  
  15598.           ENOENT         The file or pathname were not found. 
  15599.  
  15600.           EOS2ERR        The call to the operating system was not successful. 
  15601.  
  15602.  Example Code 
  15603.  
  15604.           This example opens the file edopen.dat by creating it as a new file, 
  15605.           truncating it if it exists, and opening it so it can be read and 
  15606.           written to. The open command issued also grants permission to read 
  15607.           from and write to the file. 
  15608.  
  15609.                     #include <io.h>
  15610.                     #include <stdio.h>
  15611.                     #include <fcntl.h>
  15612.                     #include <sys\stat.h>
  15613.                     #include <stdlib.h>
  15614.  
  15615.                     int main(void)
  15616.                     {
  15617.                        int fh;
  15618.  
  15619.                        if (-1 == (fh = open("edopen.dat", O_CREAT|O_TRUNC|O_RDWR,
  15620.                                              S_IREAD|S_IWRITE))) {
  15621.                           perror("Unable to open edopen.dat");
  15622.                           return EXIT_FAILURE;
  15623.                        }
  15624.                        printf("File was successfully opened.\n");
  15625.                        if (-1 == close(fh)) {
  15626.                           perror("close error");
  15627.                           return EXIT_FAILURE;
  15628.                        }
  15629.                        return 0;
  15630.  
  15631.                        /****************************************************************************
  15632.                           The output should be:
  15633.  
  15634.                           File was successfully opened.
  15635.                        ****************************************************************************/
  15636.                     }
  15637.  
  15638.  Related Information 
  15639.  
  15640.               close 
  15641.               creat 
  15642.               fdopen 
  15643.               fopen 
  15644.               _sopen 
  15645.               umask 
  15646.  
  15647.  
  15648. ΓòÉΓòÉΓòÉ 3.151. perror - Print Error Message ΓòÉΓòÉΓòÉ
  15649.  
  15650. perror - Print Error Message 
  15651.  
  15652.  Syntax 
  15653.  
  15654.                     #include <stdio.h>
  15655.                     void perror(const char *string);
  15656.  
  15657.  Description 
  15658.  
  15659.           perror prints an error message to stderr.  If string is not NULL and 
  15660.           does not point to a null character, the string pointed to by string 
  15661.           is printed to the standard error stream, followed by a colon and a 
  15662.           space.  The message associated with the value in errno is then 
  15663.           printed followed by a new-line character. 
  15664.  
  15665.           To produce accurate results, you should ensure that perror is called 
  15666.           immediately after a library function returns with an error; 
  15667.           otherwise, subsequent calls may alter the errno value. 
  15668.  
  15669.  Returns 
  15670.  
  15671.           There is no return value. 
  15672.  
  15673.  Example Code 
  15674.  
  15675.           This example tries to open a stream.  If fopen fails, the example 
  15676.           prints a message and ends the program. 
  15677.  
  15678.                     #include <stdio.h>
  15679.                     #include <stdlib.h>
  15680.                     int main(void)
  15681.                     {
  15682.                        FILE *fh;
  15683.  
  15684.                        if (NULL == (fh = fopen("myfile.mjq", "r"))) {
  15685.                           perror("Could not open data file");
  15686.                           abort();
  15687.                        }
  15688.                        return 0;
  15689.  
  15690.                        /****************************************************************************
  15691.                           The output should be:
  15692.  
  15693.                           Could not open data file: The file cannot be found.
  15694.                        ****************************************************************************/
  15695.                     }
  15696.  
  15697.  Related Information 
  15698.  
  15699.               clearerr 
  15700.               ferror 
  15701.               strerror 
  15702.               _strerror 
  15703.  
  15704.  
  15705. ΓòÉΓòÉΓòÉ 3.152. pow - Compute Power ΓòÉΓòÉΓòÉ
  15706.  
  15707. pow - Compute Power 
  15708.  
  15709.  Syntax 
  15710.  
  15711.                     #include <math.h>
  15712.                     double pow(double x, double y);
  15713.  
  15714.  Description 
  15715.  
  15716.           pow calculates the value of x to the power of y. 
  15717.  
  15718.  Returns 
  15719.  
  15720.           If y is 0, pow returns the value 1. If x is 0 and y is negative, pow 
  15721.           sets errno to EDOM and returns 0. If both x and y are 0, or if x is 
  15722.           negative and y is not an integer, pow sets errno to EDOM, and returns 
  15723.           0. 
  15724.  
  15725.           If an overflow results, pow sets errno to ERANGE and returns 
  15726.           +HUGE_VAL for a large result or -HUGE_VAL for a small result. 
  15727.  
  15728.  Example Code 
  15729.  
  15730.           This example calculates the value of 2Γäû. 
  15731.  
  15732.                     #include <stdio.h>
  15733.                     #include <math.h>
  15734.  
  15735.                     int main(void)
  15736.                     {
  15737.                        double x,y,z;
  15738.  
  15739.                        x = 2.0;
  15740.                        y = 3.0;
  15741.                        z = pow(x, y);
  15742.                        printf("%lf to the power of %lf is %lf\n", x, y, z);
  15743.                        return 0;
  15744.  
  15745.                        /****************************************************************************
  15746.                           The output should be:
  15747.  
  15748.                           2.000000 to the power of 3.000000 is 8.000000
  15749.                        ****************************************************************************/
  15750.                     }
  15751.  
  15752.  Related Information 
  15753.  
  15754.               exp 
  15755.               log 
  15756.               log10 
  15757.               sqrt 
  15758.  
  15759.  
  15760. ΓòÉΓòÉΓòÉ 3.153. printf - Print Formatted Characters ΓòÉΓòÉΓòÉ
  15761.  
  15762. printf - Print Formatted Characters 
  15763.  
  15764.  Syntax 
  15765.  
  15766.                     #include <stdio.h>
  15767.                     int printf(const char *format-string, argument-list);
  15768.  
  15769.  Description 
  15770.  
  15771.           printf formats and prints a series of characters and values to the 
  15772.           standard output stream stdout. The format-string consists of ordinary 
  15773.           characters, escape sequences, and format specifications. The ordinary 
  15774.           characters are copied in order of their appearance to stdout. Format 
  15775.           specifications, beginning with a percent sign (%), determine the 
  15776.           output format for any argument-list following the format-string. 
  15777.  
  15778.           The format-string is read left to right. When the first format 
  15779.           specification is found, the value of the first argument after the 
  15780.           format-string is converted and output according to the format 
  15781.           specification. The second format specification causes the second 
  15782.           argument after the format-string to be converted and output, and so 
  15783.           on through the end of the format-string. If there are more arguments 
  15784.           than there are format specifications, the extra arguments are 
  15785.           evaluated and ignored. The results are undefined if there are not 
  15786.           enough arguments for all the format specifications. A format 
  15787.           specification has the following form: 
  15788.  
  15789.                     >>ΓöÇΓöÇ%ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇtypeΓöÇΓöÇ><
  15790.                         ΓööΓöÇn$ΓöÇΓöÿ  ΓööΓöÇflagsΓöÇΓöÿ  ΓööΓöÇwidthΓöÇΓöÿ  ΓööΓöÇ.ΓöÇΓöÇprecisionΓöÇΓöÿ  Γö£ΓöÇhΓöÇΓöñ
  15791.                                                 Γö£ΓöÇlΓöÇΓöñ
  15792.                                                 ΓööΓöÇLΓöÇΓöÿ
  15793.  
  15794.           Each field of the format specification is a single character or 
  15795.           number signifying a particular format option. The type character, 
  15796.           which appears after the last optional format field, determines 
  15797.           whether the associated argument is interpreted as a character, a 
  15798.           string, a number, or pointer. The simplest format specification 
  15799.           contains only the percent sign and a type character (for example, 
  15800.           %s). 
  15801.  
  15802.           The %n$ syntax should always be used when format strings are stored 
  15803.           in translatable text such as message catalog files.  This is 
  15804.           necessary because sentence structures and order of arguments could 
  15805.           vary in different languages.  For example, in the statement: printf ( 
  15806.           format, month, day, year ) 
  15807.  
  15808.               In US English, format should be %1$s %2$d, %3$d which results in 
  15809.                July 14, 1995. 
  15810.  
  15811.               In German, format should be %2$d. %1$s, %3$d which results in 
  15812.                14. July, 1995. 
  15813.  
  15814.           The following optional fields control other aspects of the 
  15815.           formatting: 
  15816.  
  15817.           Field       Description 
  15818.  
  15819.           flags       Justification of output and printing of signs, blanks, 
  15820.                       decimal points, octal, and hexadecimal prefixes, and the 
  15821.                       semantics for wchar_t precision unit. 
  15822.  
  15823.           width       Minimum number of bytes output. 
  15824.  
  15825.           precision   Maximum number of bytes printed for all or part of the 
  15826.                       output field, or minimum number of digits printed for 
  15827.                       integer values. 
  15828.  
  15829.           h, l, L     Size of argument expected:  compact break=fit. 
  15830.  
  15831.                       h           A prefix with the integer types d, i, o, u, 
  15832.                                   x, X, and n that specifies that the argument 
  15833.                                   is short int or unsigned short int. 
  15834.  
  15835.                       l           A prefix with d, i, o, u, x, X, and n types 
  15836.                                   that specifies that the argument is a long 
  15837.                                   int or unsigned long int. 
  15838.  
  15839.                       L           A prefix with e, E, f, g, or G types that 
  15840.                                   specifies that the argument is long double. 
  15841.  
  15842.           Each field of the format specification is discussed in detail below. 
  15843.           To print a percent sign character, use %%. 
  15844.  
  15845.           In extended mode, printf also converts floating-point values of NaN 
  15846.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  15847.           "infinity". The case and sign of the string is determined by the 
  15848.           format specifiers.  See Infinity and NaN Support for more information 
  15849.           on infinity and NaN values. 
  15850.  
  15851.           The type characters and their meanings are given in the following 
  15852.           table: 
  15853.  
  15854.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15855.                     Γöé Char-   Γöé Argument    Γöé Output Format              Γöé
  15856.                     Γöé acter   Γöé         Γöé                     Γöé
  15857.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15858.                     Γöé d, i   Γöé Integer     Γöé Signed decimal integer.         Γöé
  15859.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15860.                     Γöé o     Γöé Integer     Γöé Unsigned octal integer.         Γöé
  15861.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15862.                     Γöé u     Γöé Integer     Γöé Unsigned decimal integer.        Γöé
  15863.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15864.                     Γöé x     Γöé Integer     Γöé Unsigned hexadecimal integer, using   Γöé
  15865.                     Γöé      Γöé         Γöé abcdef.                 Γöé
  15866.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15867.                     Γöé X     Γöé Integer     Γöé Unsigned hexadecimal integer, using   Γöé
  15868.                     Γöé      Γöé         Γöé ABCDEF.                 Γöé
  15869.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15870.                     Γöé f     Γöé Double     Γöé Signed value having the form      Γöé
  15871.                     Γöé      Γöé         Γöé [-]dddd.dddd, where dddd is one or   Γöé
  15872.                     Γöé      Γöé         Γöé more decimal digits.  The number of   Γöé
  15873.                     Γöé      Γöé         Γöé digits before the decimal point     Γöé
  15874.                     Γöé      Γöé         Γöé depends on the magnitude of the     Γöé
  15875.                     Γöé      Γöé         Γöé number.  The number of digits after   Γöé
  15876.                     Γöé      Γöé         Γöé the decimal point is equal to the    Γöé
  15877.                     Γöé      Γöé         Γöé requested precision.  NaN and infinity Γöé
  15878.                     Γöé      Γöé         Γöé values are printed in lowercase ("nan" Γöé
  15879.                     Γöé      Γöé         Γöé and "infinity").            Γöé
  15880.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15881.                     Γöé F     Γöé Double     Γöé In extended mode,identical to the "f"  Γöé
  15882.                     Γöé      Γöé         Γöé format except that NaN and infinity   Γöé
  15883.                     Γöé      Γöé         Γöé values are printed in uppercase ("NAN" Γöé
  15884.                     Γöé      Γöé         Γöé and "INFINITY").  In modes other than  Γöé
  15885.                     Γöé      Γöé         Γöé extended, "F" is treated like any    Γöé
  15886.                     Γöé      Γöé         Γöé other character not included in this  Γöé
  15887.                     Γöé      Γöé         Γöé table.                 Γöé
  15888.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15889.                     Γöé e     Γöé Double     Γöé Signed value having the form      Γöé
  15890.                     Γöé      Γöé         Γöé [-]d.dddd"e"[sign] ddd, where d is a  Γöé
  15891.                     Γöé      Γöé         Γöé single-decimal digit, dddd is one or  Γöé
  15892.                     Γöé      Γöé         Γöé more decimal digits, ddd is 2 or 3   Γöé
  15893.                     Γöé      Γöé         Γöé decimal digits, and sign is + or -.   Γöé
  15894.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15895.                     Γöé E     Γöé Double     Γöé Identical to the "e" format except   Γöé
  15896.                     Γöé      Γöé         Γöé that "E" introduces the exponent    Γöé
  15897.                     Γöé      Γöé         Γöé instead of "e".             Γöé
  15898.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15899.                     Γöé g     Γöé Double     Γöé Signed value printed in "f" or "e"   Γöé
  15900.                     Γöé      Γöé         Γöé format.  The "e" format is used only  Γöé
  15901.                     Γöé      Γöé         Γöé when the exponent of the value is less Γöé
  15902.                     Γöé      Γöé         Γöé than -4 or greater than precision.   Γöé
  15903.                     Γöé      Γöé         Γöé Trailing zeros are truncated, and the  Γöé
  15904.                     Γöé      Γöé         Γöé decimal point appears only if one or  Γöé
  15905.                     Γöé      Γöé         Γöé more digits follow it.         Γöé
  15906.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15907.                     Γöé G     Γöé Double     Γöé Identical to the "g" format except   Γöé
  15908.                     Γöé      Γöé         Γöé that "G" introduces the exponent    Γöé
  15909.                     Γöé      Γöé         Γöé (where appropriate) instead of "g".   Γöé
  15910.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15911.                     Γöé c     Γöé Character    Γöé Single character.  The "int" argument  Γöé
  15912.                     Γöé      Γöé         Γöé is converted to an unsigned character. Γöé
  15913.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15914.                     Γöé lc, C   Γöé Wide character Γöé Multibyte character (converted as if  Γöé
  15915.                     Γöé      Γöé         Γöé by a call to wctomb) pointer to an   Γöé
  15916.                     Γöé      Γöé         Γöé array of "char".            Γöé
  15917.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15918.                     Γöé s     Γöé String     Γöé Characters printed up to the first   Γöé
  15919.                     Γöé      Γöé         Γöé null character (\"0") or until preci-  Γöé
  15920.                     Γöé      Γöé         Γöé sion is reached.  If you specify a   Γöé
  15921.                     Γöé      Γöé         Γöé null string, "(NULL)" is printed.    Γöé
  15922.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15923.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15924.                     Γöé ls, S   Γöé Wide-character Γöé Multibyte characters, printed up to   Γöé
  15925.                     Γöé      Γöé string     Γöé the first "wchar_t" null character   Γöé
  15926.                     Γöé      Γöé         Γöé ("L\0") is encountered in the wide-   Γöé
  15927.                     Γöé      Γöé         Γöé character string, or until the speci-  Γöé
  15928.                     Γöé      Γöé         Γöé fied precision is reached.  Conversion Γöé
  15929.                     Γöé      Γöé         Γöé takes place as if by a call to     Γöé
  15930.                     Γöé      Γöé         Γöé wcstombs.  The displayed result does  Γöé
  15931.                     Γöé      Γöé         Γöé not include the terminating null char- Γöé
  15932.                     Γöé      Γöé         Γöé acter.  If you do not specify the pre- Γöé
  15933.                     Γöé      Γöé         Γöé cision, you must end the        Γöé
  15934.                     Γöé      Γöé         Γöé wide-character string with a null    Γöé
  15935.                     Γöé      Γöé         Γöé character.  A partial multibyte char-  Γöé
  15936.                     Γöé      Γöé         Γöé acter cannot be written.  If you    Γöé
  15937.                     Γöé      Γöé         Γöé specify a null string, "(NULL)" is   Γöé
  15938.                     Γöé      Γöé         Γöé printed.                Γöé
  15939.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15940.                     Γöé n     Γöé Pointer to   Γöé Number of characters successfully    Γöé
  15941.                     Γöé      Γöé integer     Γöé written so far to the stream or     Γöé
  15942.                     Γöé      Γöé         Γöé buffer; this value is stored in the   Γöé
  15943.                     Γöé      Γöé         Γöé integer whose address is given as the  Γöé
  15944.                     Γöé      Γöé         Γöé argument.                Γöé
  15945.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15946.                     Γöé p     Γöé Pointer     Γöé Pointer to void converted to a     Γöé
  15947.                     Γöé      Γöé         Γöé sequence of printable characters.    Γöé
  15948.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15949.                     Γöé %     Γöé `%'       Γöé Use to print a "%" symbol.       Γöé
  15950.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  15951.  
  15952.           The flag characters and their meanings are as follows (notice that 
  15953.           more than one flag can appear in a format specification): 
  15954.  
  15955.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  15956.                     Γöé Flag    Γöé Meaning             Γöé Default        Γöé
  15957.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15958.                     Γöé -     Γöé Left-justify the result within  Γöé Right-justify.    Γöé
  15959.                     Γöé      Γöé the field width.         Γöé            Γöé
  15960.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15961.                     Γöé +     Γöé Prefix the output value with a  Γöé Sign appears only   Γöé
  15962.                     Γöé      Γöé sign (+ or -) if the output   Γöé for negative signed  Γöé
  15963.                     Γöé      Γöé value is of a signed type.    Γöé values (-).      Γöé
  15964.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15965.                     Γöé blank(' ')Γöé Prefix the output value with a  Γöé No blank.       Γöé
  15966.                     Γöé      Γöé blank if the output value is   Γöé            Γöé
  15967.                     Γöé      Γöé signed and positive.  The "+"  Γöé            Γöé
  15968.                     Γöé      Γöé flag overrides the blank flag  Γöé            Γöé
  15969.                     Γöé      Γöé if both appear, and a positive  Γöé            Γöé
  15970.                     Γöé      Γöé signed value will be output   Γöé            Γöé
  15971.                     Γöé      Γöé with a sign.           Γöé            Γöé
  15972.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15973.                     Γöé #     Γöé When used with the "o", "x", or Γöé No prefix.      Γöé
  15974.                     Γöé      Γöé "X" formats, the "#" flag pre-  Γöé            Γöé
  15975.                     Γöé      Γöé fixes any nonzero output value  Γöé            Γöé
  15976.                     Γöé      Γöé with "0", "0"x, or "0"X,     Γöé            Γöé
  15977.                     Γöé      Γöé respectively.          Γöé            Γöé
  15978.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15979.                     Γöé #     Γöé When used with the "f", "F",   Γöé Decimal point     Γöé
  15980.                     Γöé      Γöé "e", or "E" formats, the "#"   Γöé appears only if    Γöé
  15981.                     Γöé      Γöé flag forces the output value to Γöé digits follow it.   Γöé
  15982.                     Γöé      Γöé contain a decimal point in all  Γöé            Γöé
  15983.                     Γöé      Γöé cases.              Γöé            Γöé
  15984.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15985.                     Γöé #     Γöé When used with the "g" or "G"  Γöé Decimal point     Γöé
  15986.                     Γöé      Γöé formats, the "#" flag forces   Γöé appears only if    Γöé
  15987.                     Γöé      Γöé the output value to contain a  Γöé digits follow it;   Γöé
  15988.                     Γöé      Γöé decimal point in all cases and  Γöé trailing zeros are  Γöé
  15989.                     Γöé      Γöé prevents the truncation of    Γöé truncated.      Γöé
  15990.                     Γöé      Γöé trailing zeros.         Γöé            Γöé
  15991.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15992.                     Γöé #     Γöé When used with the "ls" format, Γöé Precision indicates  Γöé
  15993.                     Γöé      Γöé the "#" flag causes precision  Γöé the maximum number  Γöé
  15994.                     Γöé      Γöé to be measured in "wchar_t"   Γöé of bytes to be    Γöé
  15995.                     Γöé      Γöé characters.           Γöé output.        Γöé
  15996.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  15997.                     Γöé "0"    Γöé When used with the "d", "i",   Γöé Space padding.    Γöé
  15998.                     Γöé      Γöé "o", "u", "x", "X", "e", "E",  Γöé            Γöé
  15999.                     Γöé      Γöé "f", "F"" g", or "G" formats,  Γöé            Γöé
  16000.                     Γöé      Γöé the "0" flag causes leading   Γöé            Γöé
  16001.                     Γöé      Γöé "0"'s to pad the output to the  Γöé            Γöé
  16002.                     Γöé      Γöé field width.  The "0" flag is  Γöé            Γöé
  16003.                     Γöé      Γöé ignored if precision is speci-  Γöé            Γöé
  16004.                     Γöé      Γöé fied for an integer or if the  Γöé            Γöé
  16005.                     Γöé      Γöé `"-"' flag is specified.     Γöé            Γöé
  16006.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16007.                     Γöé '     Γöé Formats with the thousands    Γöé No grouping char-   Γöé
  16008.                     Γöé      Γöé grouping character of the    Γöé acter.        Γöé
  16009.                     Γöé      Γöé appropriate locale for the    Γöé            Γöé
  16010.                     Γöé      Γöé decimal conversions (%i, %d,   Γöé            Γöé
  16011.                     Γöé      Γöé %u, %f, %g, or %G).       Γöé            Γöé
  16012.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16013.  
  16014.           The # flag should not be used with c, lc, d, i, u, s, or p types. 
  16015.  
  16016.           Width is a nonnegative decimal integer controlling the minimum number 
  16017.           of characters printed.  If the number of characters in the output 
  16018.           value is less than the specified width, blanks are added on the left 
  16019.           or the right (depending on whether the - flag is specified) until the 
  16020.           minimum width is reached. 
  16021.  
  16022.           Width never causes a value to be truncated;  if the number of 
  16023.           characters in the output value is greater than the specified width, 
  16024.           or width is not given, all characters of the value are printed 
  16025.           (subject to the precision specification). 
  16026.  
  16027.           For the ls type, width is specified in bytes. If the number of bytes 
  16028.           in the output value is less than the specified width, single-byte 
  16029.           blanks are added on the left or the right (depending on whether the - 
  16030.           flag is specified) until the minimum width is reached. 
  16031.  
  16032.           The width specification can be an asterisk (* or *n$), in which case 
  16033.           an argument from the argument list supplies the value. The width 
  16034.           argument must precede the value being formatted in the argument list. 
  16035.  
  16036.           Precision is a nonnegative decimal integer preceded by a period, 
  16037.           which specifies the number of characters to be printed or the number 
  16038.           of decimal places. Unlike the width specification, the precision can 
  16039.           cause truncation of the output value or rounding of a floating-point 
  16040.           value. 
  16041.  
  16042.           The precision specification can be an asterisk (* or *n$), in which 
  16043.           case an argument from the argument list supplies the value. The 
  16044.           precision argument must precede the value being formatted in the 
  16045.           argument list. 
  16046.  
  16047.           The interpretation of the precision value and the default when the 
  16048.           precision is omitted depend upon the type, as shown in the following 
  16049.           table: 
  16050.  
  16051.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  16052.                     Γöé Type  Γöé Meaning              Γöé Default         Γöé
  16053.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16054.                     Γöé i    Γöé Precision specifies the minimum  Γöé If precision is "0" or Γöé
  16055.                     Γöé d    Γöé number of digits to be printed.  Γöé omitted entirely, or  Γöé
  16056.                     Γöé u    Γöé If the number of digits in the  Γöé if the period (.)    Γöé
  16057.                     Γöé o    Γöé argument is less than precision, Γöé appears without a    Γöé
  16058.                     Γöé x    Γöé the output value is padded on   Γöé number following it,  Γöé
  16059.                     Γöé X    Γöé the left with zeros.  The value  Γöé the precision is set  Γöé
  16060.                     Γöé     Γöé is not truncated when the number Γöé to 1.          Γöé
  16061.                     Γöé     Γöé of digits exceeds precision.   Γöé             Γöé
  16062.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16063.                     Γöé f    Γöé Precision specifies the number  Γöé Default precision is  Γöé
  16064.                     Γöé F    Γöé of digits to be printed after   Γöé six.  If precision is  Γöé
  16065.                     Γöé e    Γöé the decimal point.  The last   Γöé "0" or the period    Γöé
  16066.                     Γöé E    Γöé digit printed is rounded.     Γöé appears without a    Γöé
  16067.                     Γöé     Γöé                  Γöé number following it,  Γöé
  16068.                     Γöé     Γöé                  Γöé no decimal point is   Γöé
  16069.                     Γöé     Γöé                  Γöé printed.        Γöé
  16070.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16071.                     Γöé g    Γöé Precision specifies the maximum  Γöé All significant digits Γöé
  16072.                     Γöé G    Γöé number of significant digits   Γöé are printed.      Γöé
  16073.                     Γöé     Γöé printed.             Γöé             Γöé
  16074.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16075.                     Γöé c    Γöé No effect.            Γöé The character is    Γöé
  16076.                     Γöé     Γöé                  Γöé printed.        Γöé
  16077.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16078.                     Γöé lc, C  Γöé No effect.            Γöé The "wchar_t" char-   Γöé
  16079.                     Γöé     Γöé                  Γöé acter is printed.    Γöé
  16080.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16081.                     Γöé s    Γöé Precision specifies the maximum  Γöé Characters are printed Γöé
  16082.                     Γöé     Γöé number of characters to be    Γöé until a null character Γöé
  16083.                     Γöé     Γöé printed.  Characters in excess  Γöé is encountered.     Γöé
  16084.                     Γöé     Γöé of precision are not printed.   Γöé             Γöé
  16085.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  16086.                     Γöé ls, S  Γöé Precision specifies the maximum  Γöé "wchar_t" characters  Γöé
  16087.                     Γöé     Γöé number of bytes to be printed.  Γöé are printed until a   Γöé
  16088.                     Γöé     Γöé Bytes in excess of precision are Γöé null character is    Γöé
  16089.                     Γöé     Γöé not printed; however, multibyte  Γöé encountered.      Γöé
  16090.                     Γöé     Γöé integrity is always preserved.  Γöé             Γöé
  16091.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  16092.  
  16093.  Returns 
  16094.  
  16095.           The printf function returns the number of bytes printed. 
  16096.  
  16097.  Example Code 
  16098.  
  16099.           This example prints data in a variety of formats. 
  16100.  
  16101.                     #include <stdio.h>
  16102.  
  16103.                     int main(void)
  16104.                     {
  16105.                        char ch = 'h',*string = "computer";
  16106.                        int count = 234,hex = 0x10,oct = 010,dec = 10;
  16107.                        double fp = 251.7366;
  16108.  
  16109.                        printf("%d   %+d    %06d     %X    %x     %o\n\n", count, count, count, count
  16110.                           , count, count);
  16111.                        printf("1234567890123%n4567890123456789\n\n", &count);
  16112.                        printf("Value of count should be 13; count = %d\n\n", count);
  16113.                        printf("%10c%5c\n\n", ch, ch);
  16114.                        printf("%25s\n%25.4s\n\n", string, string);
  16115.                        printf("%f    %.2f    %e    %E\n\n", fp, fp, fp, fp);
  16116.                        printf("%i    %i     %i\n\n", hex, oct, dec);
  16117.                        return 0;
  16118.  
  16119.                        /****************************************************************************
  16120.                           The output should be:
  16121.  
  16122.                           234   +234    000234     EA    ea     352
  16123.  
  16124.                           12345678901234567890123456789
  16125.  
  16126.                           Value of count should be 13; count = 13
  16127.  
  16128.                                    h    h
  16129.  
  16130.                                            computer
  16131.                                                comp
  16132.  
  16133.                           251.736600    251.74    2.517366e+02    2.517366E+02
  16134.  
  16135.                           16    8     10
  16136.                        ****************************************************************************/
  16137.                     }
  16138.  
  16139.  Related Information 
  16140.  
  16141.               _cprintf 
  16142.               fprintf 
  16143.               fscanf 
  16144.               scanf 
  16145.               sprintf 
  16146.               sscanf 
  16147.               vfprintf 
  16148.               vprintf 
  16149.               vsprintf 
  16150.  
  16151.  
  16152. ΓòÉΓòÉΓòÉ 3.154. putc - putchar - Write a Byte ΓòÉΓòÉΓòÉ
  16153.  
  16154. putc - putchar - Write a Byte 
  16155.  
  16156.  Syntax 
  16157.  
  16158.                     #include <stdio.h>
  16159.                     int putc(int c, FILE *stream);
  16160.                     int putchar(int c);
  16161.  
  16162.  Description 
  16163.  
  16164.           putc converts c to unsigned char and then writes c to the output 
  16165.           stream at the current position. putchar is equivalent to putc(c, 
  16166.           stdout). 
  16167.  
  16168.           putc is equivalent to fputc except that, if it is implemented as a 
  16169.           macro, putc can evaluate stream more than once. Therefore, the stream 
  16170.           argument to putc should not be an expression with side effects. 
  16171.  
  16172.  Returns 
  16173.  
  16174.           putc and putchar return the value written. A return value of EOF 
  16175.           indicates an error. 
  16176.  
  16177.  Example Code 
  16178.  
  16179.           This example writes the contents of a buffer to a data stream. In 
  16180.           this example, the body of the for statement is null because the 
  16181.           example carries out the writing operation in the test expression. 
  16182.  
  16183.                     #include <stdio.h>
  16184.  
  16185.                     #define  LENGTH        80
  16186.  
  16187.                     int main(void)
  16188.                     {
  16189.                        FILE *stream = stdout;
  16190.                        int i,ch;
  16191.                        char buffer[LENGTH+1] = "Hello world";
  16192.  
  16193.                         /* This could be replaced by using the fwrite routine                     */
  16194.  
  16195.                        for (i = 0; (i < sizeof(buffer)) && ((ch = putc(buffer[i], stream)) != EOF);
  16196.                           ++i)
  16197.                           ;
  16198.                        return 0;
  16199.  
  16200.                        /****************************************************************************
  16201.                           The output should be:
  16202.  
  16203.                           Hello world
  16204.                        ****************************************************************************/
  16205.                     }
  16206.  
  16207.  Related Information 
  16208.  
  16209.               fputc 
  16210.               fwrite 
  16211.               getc - getchar 
  16212.               _putch 
  16213.               puts 
  16214.               write 
  16215.  
  16216.  
  16217. ΓòÉΓòÉΓòÉ 3.155. _putch - Write Character to Screen ΓòÉΓòÉΓòÉ
  16218.  
  16219. _putch - Write Character to Screen 
  16220.  
  16221.  Syntax 
  16222.  
  16223.                     #include <conio.h>
  16224.                     int _putch(int c);
  16225.  
  16226.  Description 
  16227.  
  16228.           _putch writes the character c directly to the screen. 
  16229.  
  16230.  Returns 
  16231.  
  16232.           If successful, _putch returns c. If an error occurs, _putch returns 
  16233.           EOF. 
  16234.  
  16235.  Example Code 
  16236.  
  16237.           This example defines a function gchar that is similar to _getche 
  16238.           using the _putch and _getch functions: 
  16239.  
  16240.                     #include <conio.h>
  16241.  
  16242.                     int gchar(void)
  16243.                     {
  16244.                        int ch;
  16245.  
  16246.                        ch = _getch();
  16247.                        _putch(ch);
  16248.                        return (ch);
  16249.                     }
  16250.  
  16251.  Related Information 
  16252.  
  16253.               _cputs 
  16254.               _cprintf 
  16255.               fputc 
  16256.               _getch - _getche 
  16257.               putc - putchar 
  16258.               puts 
  16259.               write 
  16260.  
  16261.  
  16262. ΓòÉΓòÉΓòÉ 3.156. putenv - Modify Environment Variables ΓòÉΓòÉΓòÉ
  16263.  
  16264. putenv - Modify Environment Variables 
  16265.  
  16266.  Syntax 
  16267.  
  16268.                     #include <stdlib.h>
  16269.                     int putenv(char *envstring);
  16270.  
  16271.  Description 
  16272.  
  16273.           putenv adds new environment variables or modifies the values of 
  16274.           existing environment variables. Environment variables define the 
  16275.           environment in which a process runs (for example, the default search 
  16276.           path for libraries to be linked with a program). 
  16277.  
  16278.           The envstring argument must be a pointer to a string with the form: 
  16279.  
  16280.                        varname=string
  16281.           where varname is the name of the environment variable to be added or 
  16282.           modified and string is the value of the variable. See the Notes 
  16283.           below. 
  16284.  
  16285.           If varname is already part of the environment, string replaces its 
  16286.           current value; if not, the new varname is added to the environment 
  16287.           with the value string. To set a variable to an empty value, specify 
  16288.           an empty string. A variable can be removed from the environment by 
  16289.           specifying varname only, for example: 
  16290.  
  16291.                        putenv("PATH");
  16292.  
  16293.           Do not free the envstring pointer while the entry it points to is in 
  16294.           use, or the environment variable will point into freed space. A 
  16295.           similar problem can occur if you pass a pointer to a local variable 
  16296.           to putenv and then exit from the function in which the variable is 
  16297.           declared. Once you have added the envstring with putenv, any change 
  16298.           to the entry it points to changes the environment used by your 
  16299.           program. 
  16300.  
  16301.           The environment manipulated by putenv is local to the process 
  16302.           currently running. You cannot enter new items in your command-level 
  16303.           environment using putenv.  When the program ends, the environment 
  16304.           reverts to the parent process environment. This environment is passed 
  16305.           on to some child processes created by the _spawn, exec, or system 
  16306.           functions, and they get any new environment variables added using 
  16307.           putenv. 
  16308.  
  16309.           DosScanEnv will not reflect any changes made using putenv, but getenv 
  16310.           will reflect the changes. 
  16311.  
  16312.           Note: 
  16313.  
  16314.               putenv can change the value of _environ, thus invalidating the 
  16315.                envp argument to the main function. 
  16316.  
  16317.               You cannot use %envvar%, where envvar is any OS/2 environment 
  16318.                variable, with putenv to concatenate new envstring and old 
  16319.                envstring. 
  16320.  
  16321.               In earlier releases of C Set ++, putenv began with an underscore 
  16322.                (_putenv). Because it is defined by the X/Open standard, the 
  16323.                underscore has been removed. For compatibility, The Developer's 
  16324.                Toolkit will map _putenv to putenv for you. 
  16325.  
  16326.  Returns 
  16327.  
  16328.           putenv returns 0 if it is successful. A return value of -1 indicates 
  16329.           an error. 
  16330.  
  16331.  Example Code 
  16332.  
  16333.           This example tries to change the environment variable PATH, and then 
  16334.           uses getenv to get the current path. If the call to putenv fails, the 
  16335.           example writes an error message. 
  16336.  
  16337.                     #include <stdlib.h>
  16338.                     #include <stdio.h>
  16339.  
  16340.                     int main(void)
  16341.                     {
  16342.                        char *pathvar;
  16343.  
  16344.                        if (-1 == putenv("PATH=a:\\bin;b:\\andy")) {
  16345.                           printf("putenv failed - out of memory\n");
  16346.                           return EXIT_FAILURE;
  16347.                        }
  16348.  
  16349.                        /* getting and printing the current environment path                       */
  16350.  
  16351.                        pathvar = getenv("PATH");
  16352.                        printf("The current path is: %s\n", pathvar);
  16353.                        return 0;
  16354.  
  16355.                        /****************************************************************************
  16356.                           The output should be:
  16357.  
  16358.                           The current path is: a:\bin;b:\andy
  16359.                        ****************************************************************************/
  16360.                     }
  16361.  
  16362.  Related Information 
  16363.  
  16364.               execl - _execvpe 
  16365.               getenv 
  16366.               _spawnl - _spawnvpe 
  16367.               system 
  16368.               "envp Parameter to main" in the VisualAge C++ Programming Guide 
  16369.  
  16370.  
  16371. ΓòÉΓòÉΓòÉ 3.157. puts - Write a String ΓòÉΓòÉΓòÉ
  16372.  
  16373. puts - Write a String 
  16374.  
  16375.  Syntax 
  16376.  
  16377.                     #include <stdio.h>
  16378.                     int puts(const char *string);
  16379.  
  16380.  Description 
  16381.  
  16382.           puts writes the given string to the standard output stream stdout; 
  16383.           it also appends a new-line character to the output.  The terminating 
  16384.           null character is not written. 
  16385.  
  16386.  Returns 
  16387.  
  16388.           puts returns EOF if an error occurs.  A nonnegative return value 
  16389.           indicates that no error has occurred. 
  16390.  
  16391.  Example Code 
  16392.  
  16393.           This example writes Hello World to stdout. 
  16394.  
  16395.                     #include <stdio.h>
  16396.  
  16397.                     int main(void)
  16398.                     {
  16399.                        if (EOF == puts("Hello World"))
  16400.                           printf("Error in puts\n");
  16401.                        return 0;
  16402.  
  16403.                        /****************************************************************************
  16404.                           The output should be:
  16405.  
  16406.                           Hello World
  16407.                        ****************************************************************************/
  16408.                     }
  16409.  
  16410.  Related Information 
  16411.  
  16412.               _cputs 
  16413.               fputs 
  16414.               gets 
  16415.               putc - putchar 
  16416.  
  16417.  
  16418. ΓòÉΓòÉΓòÉ 3.158. putwc - Write Wide Character ΓòÉΓòÉΓòÉ
  16419.  
  16420. putwc - Write Wide Character 
  16421.  
  16422.  Syntax 
  16423.  
  16424.                     #include <stdio.h>
  16425.                     #include <wchar.h>
  16426.                     wint_t putwc(wchar_t wc, FILE *stream);
  16427.  
  16428.  Description 
  16429.  
  16430.           putwc converts the wide character wc to a multibyte character, and 
  16431.           writes it to the stream at the current position. It also advances the 
  16432.           file position indicator for the stream appropriately. 
  16433.  
  16434.           putwc function is equivalent to fputwc except that, if it is 
  16435.           implemented as a macro, putwc can evaluate stream more than once. 
  16436.           Therefore, the stream argument to putwc should not be an expression 
  16437.           with side effects. 
  16438.  
  16439.           The behavior of putwc is affected by the LC_CTYPE category of the 
  16440.           current locale. 
  16441.  
  16442.           After calling putwc, flush the buffer or reposition the stream 
  16443.           pointer before calling a read function for the stream, unless EOF has 
  16444.           been reached. After a read operation on the stream, flush the buffer 
  16445.           or reposition the stream pointer before calling putwc. 
  16446.  
  16447.  Returns 
  16448.  
  16449.           putwc returns the wide character written. If a write error occurs, 
  16450.           putwc sets the error indicator for the stream and returns WEOF. If an 
  16451.           encoding error occurs when a wide character is converted to a 
  16452.           multibyte character, putwc sets errno to EILSEQ and returns WEOF. 
  16453.  
  16454.  Example Code 
  16455.  
  16456.           The following example uses putwc to convert the wide characters in 
  16457.           wcs to multibyte characters and write them to the file putwc.out. 
  16458.  
  16459.                     #include <stdio.h>
  16460.                     #include <wchar.h>
  16461.                     #include <stdlib.h>
  16462.                     #include <errno.h>
  16463.  
  16464.                     int main(void)
  16465.                     {
  16466.                        FILE    *stream;
  16467.                        wchar_t *wcs = L"A character string.";
  16468.                        int     i;
  16469.  
  16470.                        if (NULL == (stream = fopen("putwc.out", "w"))) {
  16471.                           printf("Unable to open: \"putwc.out\".\n");
  16472.                           exit(EXIT_FAILURE);
  16473.                        }
  16474.  
  16475.                        for (i = 0; wcs[i] != L'\0'; i++) {
  16476.                           errno = 0;
  16477.                           if (WEOF == putwc(wcs[i], stream)) {
  16478.                              printf("Unable to putwc() the wide character.\n"
  16479.                                     "wcs[%d] = 0x%lx\n", i, wcs[i]);
  16480.                              if (EILSEQ == errno)
  16481.                                 printf("An invalid wide character was encountered.\n");
  16482.                              exit(EXIT_FAILURE);
  16483.                           }
  16484.                        }
  16485.                        fclose(stream);
  16486.                        return 0;
  16487.  
  16488.                        /****************************************************************************
  16489.                           The output file putwc.out should contain :
  16490.  
  16491.                           A character string.
  16492.                        ****************************************************************************/
  16493.                     }
  16494.  
  16495.  Related Information 
  16496.  
  16497.               fputc 
  16498.               fputwc 
  16499.               getwc 
  16500.               putc - putchar 
  16501.               _putch 
  16502.               putwchar 
  16503.  
  16504.  
  16505. ΓòÉΓòÉΓòÉ 3.159. putwchar - Write Wide Character to stdout ΓòÉΓòÉΓòÉ
  16506.  
  16507. putwchar - Write Wide Character to stdout 
  16508.  
  16509.  Syntax 
  16510.  
  16511.                     #include <wchar.h>
  16512.                     wint_t putwchar(wchar_t wc);
  16513.  
  16514.  Description 
  16515.  
  16516.           putwchar converts the wide character wc to a multibyte character and 
  16517.           writes it to stdout. A call to putwchar is equivalent to putwc(wc, 
  16518.           stdout). 
  16519.  
  16520.           The behavior of putwchar is affected by the LC_CTYPE category of the 
  16521.           current locale. 
  16522.  
  16523.           After calling putwchar, flush the buffer or reposition the stream 
  16524.           pointer before calling a read function for the stream, unless EOF has 
  16525.           been reached. After a read operation on the stream, flush the buffer 
  16526.           or reposition the stream pointer before calling putwchar. 
  16527.  
  16528.  Returns 
  16529.  
  16530.           putwchar returns the wide character written. If a write error occurs, 
  16531.           putwchar sets the error indicator for the stream and returns WEOF. If 
  16532.           an encoding error occurs when a wide character is converted to a 
  16533.           multibyte character, putwchar sets errno to EILSEQ and returns WEOF. 
  16534.  
  16535.  Example Code 
  16536.  
  16537.           This example uses putwchar to write the string in wcs. 
  16538.  
  16539.                     #include <stdio.h>
  16540.                     #include <wchar.h>
  16541.                     #include <errno.h>
  16542.                     #include <stdlib.h>
  16543.  
  16544.                     int main(void)
  16545.                     {
  16546.                        wchar_t *wcs = L"A character string.";
  16547.                        int     i;
  16548.  
  16549.                        for (i = 0; wcs[i] != L'\0'; i++) {
  16550.                           errno = 0;
  16551.                           if (WEOF == putwchar(wcs[i])) {
  16552.                              printf("Unable to putwchar() the wide character.\n");
  16553.                              printf("wcs[%d] = 0x%lx\n", i, wcs[i]);
  16554.                              if (EILSEQ == errno)
  16555.                                 printf("An invalid wide character was encountered.\n");
  16556.                              exit(EXIT_FAILURE);
  16557.                           }
  16558.                        }
  16559.                        return 0;
  16560.  
  16561.                        /****************************************************************************
  16562.                           The output should be similar to :
  16563.  
  16564.                           A character string.
  16565.                        ****************************************************************************/
  16566.                     }
  16567.  
  16568.  Related Information 
  16569.  
  16570.               fputc 
  16571.               fputwc 
  16572.               getwchar 
  16573.               putc - putchar 
  16574.               _putch 
  16575.  
  16576.  
  16577. ΓòÉΓòÉΓòÉ 3.160. qsort - Sort Array ΓòÉΓòÉΓòÉ
  16578.  
  16579. qsort - Sort Array 
  16580.  
  16581.  Syntax 
  16582.  
  16583.                     #include <stdlib.h>
  16584.                     void qsort(void *base, size_t num, size_t width,
  16585.                                int(*compare)(const void *key, const void *element));
  16586.  
  16587.  Description 
  16588.  
  16589.           qsort sorts an array of num elements, each of width bytes in size. 
  16590.           The base pointer is a pointer to the array to be sorted. qsort 
  16591.           overwrites this array with the sorted elements. 
  16592.  
  16593.           The compare argument is a pointer to a function you must supply that 
  16594.           takes a pointer to the key argument and to an array element, in that 
  16595.           order. qsort calls this function one or more times during the search. 
  16596.           The function must compare the key and the element and return one of 
  16597.           the following values:  compact break=fit. 
  16598.  
  16599.           Value              Meaning 
  16600.  
  16601.           Less than 0        key less than element 
  16602.  
  16603.           0                  key equal to element 
  16604.  
  16605.           Greater than 0     key greater than element 
  16606.  
  16607.           The sorted array elements are stored in ascending order, as defined 
  16608.           by your compare function.  You can sort in reverse order by reversing 
  16609.           the sense of "greater than" and "less than" in compare.  The order of 
  16610.           the elements is unspecified when two elements compare equally. 
  16611.  
  16612.  Returns 
  16613.  
  16614.           There is no return value. 
  16615.  
  16616.  Example Code 
  16617.  
  16618.           This example sorts the arguments (argv) in ascending lexical 
  16619.           sequence, using the comparison function compare() supplied in the 
  16620.           example. 
  16621.  
  16622.                     #include <stdio.h>
  16623.                     #include <stdlib.h>
  16624.                     #include <string.h>
  16625.  
  16626.                     /* --------------------------------------------------------------             */
  16627.                     /* compare() routine called internally by qsort()                             */
  16628.                     /* --------------------------------------------------------------             */
  16629.  
  16630.                     int compare(const void *arg1,const void *arg2)
  16631.                     {
  16632.                        return (strcmp(*(char **)arg1, *(char **)arg2));
  16633.                     }
  16634.  
  16635.                     int main(int argc,char *argv[])
  16636.                     {
  16637.                        int i;
  16638.                        argv++;
  16639.                        argc--;
  16640.  
  16641.                        qsort((char *)argv, argc, sizeof(char *), compare);
  16642.                        for (i = 0; i < argc; ++i)
  16643.                           printf("%s\n", argv[i]);
  16644.                        return 0;
  16645.  
  16646.                        /****************************************************************************
  16647.                           Assuming command line of: qsort kent theresa andrea laura brenden
  16648.                           Output should be:
  16649.  
  16650.                             andrea
  16651.                             brenden
  16652.                             kent
  16653.                             laura
  16654.                             theresa
  16655.                        ****************************************************************************/
  16656.                     }
  16657.  
  16658.  Related Information 
  16659.  
  16660.               bsearch 
  16661.               lfind - lsearch 
  16662.  
  16663.  
  16664. ΓòÉΓòÉΓòÉ 3.161. querylocaleenv - Query Locale Environment Variables ΓòÉΓòÉΓòÉ
  16665.  
  16666. querylocaleenv - Query Locale Environment Variables 
  16667.  
  16668.  Syntax 
  16669.  
  16670.                     #include <locale.h>
  16671.                     char * querylocaleenv (void)
  16672.  
  16673.  Description 
  16674.  
  16675.           querylocaleenv searches the process environment to resolve the locale 
  16676.           object category values according to the following priority: 
  16677.  
  16678.               If the LC_ALL environment variable is defined and is not NULL, 
  16679.                the value of the LC_ALL environment variable is used. 
  16680.  
  16681.               If the LC_* environment variable or variables are defined and 
  16682.                not NULL, the value of the environment variable is used to 
  16683.                initialize the category that corresponds to the environment 
  16684.                variable. The LC_ variables include LC_CTYPE, LC_COLLATE, 
  16685.                LC_TIME, LC_MONETARY, LC_NUMERIC, and LC_MESSAGES. 
  16686.  
  16687.               If the LANG environment variable is defined and is not NULL, the 
  16688.                value of the LANG environment variable is used. 
  16689.  
  16690.           The LANG environment variable has the lowest priority of all the 
  16691.           environment variables used by querylocaleenv to initialize locale 
  16692.           categories. 
  16693.  
  16694.           The following actions occur in the absence of the environment 
  16695.           variables: 
  16696.  
  16697.               In the absence of the LC_ALL environment variable, the value of 
  16698.                the LANG environment variable is used to determine the value of 
  16699.                the category for which the environment variable (LC_CTYPE, 
  16700.                LC_TIME, LC_MONETARY, LC_NUMERIC, or LC_MESSAGES) that 
  16701.                corresponds to that category is not defined or is NULL. 
  16702.  
  16703.               In the absence of the LC_ALL environment variable, the LC_* 
  16704.                environment variables, and the LANG environment variable, 
  16705.                querylocaleenv returns a string containing UNIV as the result. 
  16706.  
  16707.  Returns 
  16708.  
  16709.           querylocaleenv returns a pointer to a NULL terminated char string 
  16710.           that represents the result of the search of the locale environment 
  16711.           variables. The pointer points at memory that has been allocated by 
  16712.           calling malloc. You can choose to return this memory by calling the 
  16713.           free function. 
  16714.  
  16715.           The format of the returned category string is a NULL terminated set 
  16716.           of 7-bit ASCII encoded characters. The returned string contains the 
  16717.           values of the following environment variables listed in the order 
  16718.           that they are returned in the string: 
  16719.  
  16720.                LC_COLLATE 
  16721.                LC_CTYPE 
  16722.                LC_MONETARY 
  16723.                LC_NUMERIC 
  16724.                LC_TIME 
  16725.                LC_MESSAGES 
  16726.  
  16727.           The value of the environment variables is a string with the following 
  16728.           format made up of the name of the locale that is currently selected: 
  16729.  
  16730.                     language_territory
  16731.  
  16732.           where language is the ISO 639 two-letter name and territory is the 
  16733.           ISO 3166 two-letter territory (country) name. For example, fr_FR 
  16734.           represents French in France. 
  16735.  
  16736.  Example Code 
  16737.  
  16738.                     #include <unidef.h>
  16739.                     #include <locale.h>
  16740.  
  16741.                     /* --------------------------------------------------------------             */
  16742.                     /* Pointer to contents of locale environment variables                        */
  16743.                     /* --------------------------------------------------------------             */
  16744.  
  16745.                     char           *pEnv;
  16746.                     int            rc;
  16747.                     LocaleObject   locale_object;
  16748.  
  16749.                     /* --------------------------------------------------------------             */
  16750.                     /* Test pointer returned from querylocaleenv call                             */
  16751.                     /* --------------------------------------------------------------             */
  16752.  
  16753.                     if ((pEnv=querylocalenv)==NULL)
  16754.                     {
  16755.  
  16756.                     /* --------------------------------------------------------------             */
  16757.                     /* Error indicating out-of-memory                                             */
  16758.                     /* --------------------------------------------------------------             */
  16759.  
  16760.                     } else
  16761.                     {
  16762.                         rc=UniCreateLocaleObject(UNI_MBS_STRING_POINTER,pEnv,
  16763.                                 &locale_object);
  16764.  
  16765.                     /* --------------------------------------------------------------             */
  16766.                     /* locale_object can be used in subsequent calls to ULS APIs               */
  16767.                     /* --------------------------------------------------------------             */
  16768.  
  16769.                         free(pEnv);
  16770.                     }
  16771.  
  16772.  Related Information 
  16773.  
  16774.               bsearch 
  16775.               lfind - lsearch 
  16776.  
  16777.  
  16778. ΓòÉΓòÉΓòÉ 3.162. raise - Send Signal ΓòÉΓòÉΓòÉ
  16779.  
  16780. raise - Send Signal 
  16781.  
  16782.  Syntax 
  16783.  
  16784.                     #include <signal.h>
  16785.                     int raise(int sig);
  16786.  
  16787.  Description 
  16788.  
  16789.           raise sends the signal sig to the running program. You can then use 
  16790.           signal to handle sig. 
  16791.  
  16792.           Signals and signal handling are described in signal, and in the 
  16793.           VisualAge C++ Programming Guide under "Signal and Exception 
  16794.           Handling". 
  16795.  
  16796.  Returns 
  16797.  
  16798.           raise returns 0 if successful, nonzero if unsuccessful. 
  16799.  
  16800.  Example Code 
  16801.  
  16802.           This example establishes a signal handler called sig_hand for the 
  16803.           signal SIGUSR1. The signal handler is called whenever the SIGUSR1 
  16804.           signal is raised and will ignore the first nine occurrences of the 
  16805.           signal.  On the tenth raised signal, it exits the program with an 
  16806.           error code of 10.  Note that the signal handler must be reestablished 
  16807.           each time it is called. 
  16808.  
  16809.                     #include <signal.h>
  16810.                     #include <stdio.h>
  16811.  
  16812.                     void sig_hand(int);        /* declaration of sig_hand() as a function         */
  16813.                     int main(void)
  16814.                     {
  16815.                        signal(SIGUSR1, sig_hand);              /* set up handler for SIGUSR1      */
  16816.  
  16817.                        raise(SIGUSR1);                      /* signal SIGUSR1 is raised           */
  16818.                                           /* sig_hand() is called                                 */
  16819.                        return 0;
  16820.                     }
  16821.  
  16822.                     void sig_hand(int sig)
  16823.                     {
  16824.                        static int count = 0;                 /* initialized only once             */
  16825.                        count++;
  16826.  
  16827.                        if (10 == count)     /* ignore the first 9 occurrences of this signal      */
  16828.                           exit(10);
  16829.                        else
  16830.                           signal(SIGUSR1, sig_hand);               /* set up the handler again    */
  16831.                        raise(SIGUSR1);
  16832.                     }
  16833.  
  16834.  Related Information 
  16835.  
  16836.               signal 
  16837.               "Signal and Exception Handling" in the VisualAge C++ Programming 
  16838.                Guide 
  16839.  
  16840.  
  16841. ΓòÉΓòÉΓòÉ 3.163. rand - Generate Random Number ΓòÉΓòÉΓòÉ
  16842.  
  16843. rand - Generate Random Number 
  16844.  
  16845.  Syntax 
  16846.  
  16847.                     #include <stdlib.h>
  16848.                     int rand(void);
  16849.  
  16850.  Description 
  16851.  
  16852.           rand generates a pseudo-random integer in the range 0 to RAND_MAX 
  16853.           (macro defined in <stdlib.h>). Use srand before calling rand to set a 
  16854.           starting point for the random number generator. If you do not call 
  16855.           srand first, the default seed is 1. 
  16856.  
  16857.  Returns 
  16858.  
  16859.           rand returns a pseudo-random number. 
  16860.  
  16861.  Example Code 
  16862.  
  16863.           This example prints the first 10 random numbers generated. 
  16864.  
  16865.                     #include <stdlib.h>
  16866.                     #include <stdio.h>
  16867.  
  16868.                     int main(void)
  16869.                     {
  16870.                        int x;
  16871.  
  16872.                        for (x = 1; x <= 10; x++)
  16873.                           printf("iteration %d, rand=%d\n", x, rand());
  16874.                        return 0;
  16875.  
  16876.                        /****************************************************************************
  16877.                           The output should be:
  16878.  
  16879.                           iteration 1, rand=16838
  16880.                           iteration 2, rand=5758
  16881.                           iteration 3, rand=10113
  16882.                           iteration 4, rand=17515
  16883.                           iteration 5, rand=31051
  16884.                           iteration 6, rand=5627
  16885.                           iteration 7, rand=23010
  16886.                           iteration 8, rand=7419
  16887.                           iteration 9, rand=16212
  16888.                           iteration 10, rand=4086
  16889.                        ****************************************************************************/
  16890.                     }
  16891.  
  16892.  Related Information 
  16893.  
  16894.               srand 
  16895.  
  16896.  
  16897. ΓòÉΓòÉΓòÉ 3.164. read - Read Into Buffer ΓòÉΓòÉΓòÉ
  16898.  
  16899. read - Read Into Buffer 
  16900.  
  16901.  Syntax 
  16902.  
  16903.                     #include <io.h>
  16904.                     int read(int handle, char *buffer, unsigned int count);
  16905.  
  16906.  Description 
  16907.  
  16908.           read reads count bytes from the file associated with handle into 
  16909.           buffer. The read operation begins at the current position of the file 
  16910.           pointer associated with the given file. After the read operation, the 
  16911.           file pointer points to the next unread character. 
  16912.  
  16913.           Note:  In earlier releases of C Set ++, read began with an underscore 
  16914.                  (_read). Because it is defined by the X/Open standard, the 
  16915.                  underscore has been removed. For compatibility, The 
  16916.                  Developer's Toolkit will map _read to read for you. 
  16917.  
  16918.  Returns 
  16919.  
  16920.           read returns the number of bytes placed in buffer.  This number can 
  16921.           be less than count if there are fewer than count  bytes left in the 
  16922.           file or if the file was opened in text mode.  (See the note below.) 
  16923.           The return value 0 indicates an attempt to read at end-of-file. A 
  16924.           return value -1 indicates an error. If -1 is returned, the current 
  16925.           file position is undefined, and errno is set to one of the following 
  16926.           values:  compact break=fit. 
  16927.  
  16928.           Value        Meaning 
  16929.  
  16930.           EBADF        The given handle is incorrect, or the file is not open 
  16931.                        for reading, or the file is locked. 
  16932.  
  16933.           EOS2ERR      The call to the operating system was not successful. 
  16934.  
  16935.           Note:  If the file was opened in text mode, the return value might 
  16936.                  not correspond to the number of bytes actually read.  When 
  16937.                  text mode is in effect, carriage return characters are deleted 
  16938.                  from the input stream without affecting the file pointer. 
  16939.  
  16940.  Example Code 
  16941.  
  16942.           This example opens the file sample.dat and attempts to read from it. 
  16943.  
  16944.                     #include <io.h>
  16945.                     #include <stdio.h>
  16946.                     #include <stdlib.h>
  16947.                     #include <fcntl.h>
  16948.                     #include <string.h>
  16949.  
  16950.                     int main(void)
  16951.                     {
  16952.                        int fh;
  16953.                        char buffer[20];
  16954.  
  16955.                        memset(buffer, '\0', 20);
  16956.                        printf("\nCreating sample.dat.\n");
  16957.                        system("echo Sample Program > sample.dat");
  16958.                        if (-1 == (fh = open("sample.dat", O_RDWR|O_APPEND))) {
  16959.                           perror("Unable to open sample.dat.");
  16960.                           return EXIT_FAILURE;
  16961.                        }
  16962.                        if (7 != read(fh, buffer, 7)) {
  16963.                           perror("Unable to read from sample.dat.");
  16964.                           close(fh);
  16965.                           return EXIT_FAILURE;
  16966.                        }
  16967.                        printf("Successfully read in the following:\n%s\n ", buffer);
  16968.                        close(fh);
  16969.                        return 0;
  16970.  
  16971.                        /****************************************************************************
  16972.                           The output should be:
  16973.  
  16974.                           Creating sample.dat.
  16975.                           Successfully read in the following:
  16976.                           Sample
  16977.                        ****************************************************************************/
  16978.                     }
  16979.  
  16980.  Related Information 
  16981.  
  16982.               creat 
  16983.               fread 
  16984.               open 
  16985.               _sopen 
  16986.               write 
  16987.  
  16988.  
  16989. ΓòÉΓòÉΓòÉ 3.165. realloc - Change Reserved Storage Block Size ΓòÉΓòÉΓòÉ
  16990.  
  16991. realloc - Change Reserved Storage Block Size 
  16992.  
  16993.  Syntax 
  16994.  
  16995.                     #include <stdlib.h>  /* also in <malloc.h> */
  16996.                     void *realloc(void *ptr, size_t size);
  16997.  
  16998.  Description 
  16999.  
  17000.           realloc changes the size of a previously reserved storage block.  The 
  17001.           ptr argument points to the beginning of the block.  The size argument 
  17002.           gives the new size of the block, in bytes.  The contents of the block 
  17003.           are unchanged up to the shorter of the new and old sizes. realloc 
  17004.           allocates the new block from the same heap the original block was in. 
  17005.  
  17006.           If ptr is NULL, realloc reserves a block of storage of size bytes 
  17007.           from the current thread's default heap (equivalent to calling 
  17008.           malloc(size)). 
  17009.  
  17010.           If size is 0 and the ptr is not NULL, realloc frees the storage 
  17011.           allocated to ptr and returns NULL 
  17012.  
  17013.  Returns 
  17014.  
  17015.           realloc returns a pointer to the reallocated storage block.  The 
  17016.           storage location of the block may be moved by the realloc function. 
  17017.           Thus, the ptr argument to realloc is not necessarily the same as the 
  17018.           return value. 
  17019.  
  17020.           If size is 0, realloc returns NULL. If there is not enough storage to 
  17021.           expand the block to the given size, the original block is unchanged 
  17022.           and realloc returns NULL. 
  17023.  
  17024.           The storage to which the return value points is aligned for storage 
  17025.           of any type of object. 
  17026.  
  17027.  Example Code 
  17028.  
  17029.           This example allocates storage for the prompted size of array and 
  17030.           then uses realloc to reallocate the block to hold the new size of the 
  17031.           array. The contents of the array are printed after each allocation. 
  17032.  
  17033.                     #include <stdio.h>
  17034.                     #include <stdlib.h>
  17035.  
  17036.                     int main(void)
  17037.                     {
  17038.                        long *array;                         /* start of the array            */
  17039.                        long *ptr;                           /* pointer to array */
  17040.                        int i;                               /* index variable   */
  17041.                        int num1,num2;                       /* number of entries of the array     */
  17042.                        void print_array(long *ptr_array, int size);
  17043.  
  17044.                        printf("Enter the size of the array\n");
  17045.                        scanf("%i", &num1);
  17046.  
  17047.                        /* allocate num1 entries using malloc()                                    */
  17048.  
  17049.                        if ((array = malloc(num1 *sizeof(long))) != NULL) {
  17050.                           for (ptr = array, i = 0; i < num1; ++i)             /* assign values    */
  17051.                              *ptr++ = i;
  17052.                           print_array(array, num1);
  17053.                           printf("\n");
  17054.                        }
  17055.                        else {                                                 /* malloc error     */
  17056.                           perror("Out of storage");
  17057.                           abort();
  17058.                        }
  17059.  
  17060.                        /* Change the size of the array ...                                        */
  17061.  
  17062.                        printf("Enter the size of the new array\n");
  17063.                        scanf("%i", &num2);
  17064.                        if ((array = realloc(array, num2 *sizeof(long))) != NULL) {
  17065.                           for (ptr = array+num1, i = num1; i <= num2; ++i)
  17066.                              *ptr++ = i+2000;                /* assign values to new elements     */
  17067.                           print_array(array, num2);
  17068.                        }
  17069.                        else {                                                 /* realloc error    */
  17070.                           perror("Out of storage");
  17071.                           abort();
  17072.                        }
  17073.                        return 0;
  17074.  
  17075.                        /****************************************************************************
  17076.                           The output should be similar to:
  17077.  
  17078.                           Enter the size of the array
  17079.                           2
  17080.                           The array of size 2 is:
  17081.                             array[ 0 ] = 0
  17082.                             array[ 1 ] = 1
  17083.                           Enter the size of the new array
  17084.                           4
  17085.                           The array of size 4 is:
  17086.                             array[ 0 ] = 0
  17087.                             array[ 1 ] = 1
  17088.                             array[ 2 ] = 2002
  17089.                             array[ 3 ] = 2003
  17090.                        ****************************************************************************/
  17091.                     }
  17092.  
  17093.                     void print_array(long *ptr_array,int size)
  17094.                     {
  17095.                        int i;
  17096.                        long *index = ptr_array;
  17097.  
  17098.                        printf("The array of size %d is:\n", size);
  17099.                        for (i = 0; i < size; ++i)                             /* print the array
  17100.                                                                                  out              */
  17101.                           printf("  array[ %i ] = %li\n", i, ptr_array[i]);
  17102.                     }
  17103.  
  17104.  Related Information 
  17105.  
  17106.               calloc 
  17107.               free 
  17108.               malloc 
  17109.               _msize 
  17110.  
  17111.  
  17112. ΓòÉΓòÉΓòÉ 3.166. regcomp - Compile Regular Expression ΓòÉΓòÉΓòÉ
  17113.  
  17114. regcomp - Compile Regular Expression 
  17115.  
  17116.  Syntax 
  17117.  
  17118.                     #include <sys/types.h>
  17119.                     #include <regex.h>
  17120.                     int regcomp(regex_t *preg, const char *pattern, int cflags);
  17121.  
  17122.  Description 
  17123.  
  17124.           regcomp compiles the source regular expression pointed to by pattern 
  17125.           into an executable version and stores it in the location pointed to 
  17126.           by preg. You can then use regexec to compare the regular expression 
  17127.           to other strings. 
  17128.  
  17129.           The cflags flag defines the attributes of the compilation process: 
  17130.  
  17131.           REG_EXTENDED Support extended regular expressions. 
  17132.  
  17133.           REG_ICASE Ignore case in match. 
  17134.  
  17135.           REG_NEWLINE Treat new-line character as a special end-of-line 
  17136.                character; it then establishes the line boundaries matched by 
  17137.                the ^ and $ patterns, and can only be matched within a string 
  17138.                explicitly using \n. (If you omit this flag, the new-line 
  17139.                character is treated like any other character.) 
  17140.  
  17141.           REG_NOSUB Ignore the number of subexpressions specified in pattern. 
  17142.                When you compare a string to the compiled pattern (using 
  17143.                regexec), the string must match the entire pattern. regexec then 
  17144.                returns a value that indicates only if a match was found; it 
  17145.                does not indicate at what point in the string the match begins, 
  17146.                or what the matching string is. 
  17147.  
  17148.           Regular expressions are a context-independent syntax that can 
  17149.           represent a wide variety of character sets and character set 
  17150.           orderings, which can be interpreted differently depending on the 
  17151.           current locale. The functions regcomp, regerror, regexec, and regfree 
  17152.           use regular expressions in a similar way to the UNIX awk, ed, grep, 
  17153.           and egrep commands. Regular expressions are described in more detail 
  17154.           under "Regular Expressions" in the VisualAge C++ Programming Guide. 
  17155.  
  17156.  Returns 
  17157.  
  17158.           If regcomp is successful, it returns 0. Otherwise, it returns an 
  17159.           error code that you can use in a call to regerror, and the content of 
  17160.           preg is undefined. 
  17161.  
  17162.  Example Code 
  17163.  
  17164.           This example compiles an extended regular expression. 
  17165.  
  17166.                     #include <sys/types.h>
  17167.                     #include <regex.h>
  17168.                     #include <stdio.h>
  17169.                     #include <stdlib.h>
  17170.  
  17171.                     int main(void)
  17172.                     {
  17173.                        regex_t preg;
  17174.                        char    *pattern = ".*(simple).*";
  17175.                        int     rc;
  17176.  
  17177.                        if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) {
  17178.                           printf("regcomp() failed, returning nonzero (%d)\n", rc);
  17179.                           exit(EXIT_FAILURE);
  17180.                        }
  17181.                        printf("regcomp() is sucessful.\n");
  17182.                        return 0;
  17183.  
  17184.                        /****************************************************************************
  17185.                           The output should be similar to :
  17186.  
  17187.                           regcomp() is sucessful.
  17188.                        ****************************************************************************/
  17189.                     }
  17190.  
  17191.  Related Information 
  17192.  
  17193.               regerror 
  17194.               regexec 
  17195.               regfree 
  17196.  
  17197.  
  17198. ΓòÉΓòÉΓòÉ 3.167. regerror - Return Error Message for Regular Expression ΓòÉΓòÉΓòÉ
  17199.  
  17200. regerror - Return Error Message for Regular Expression 
  17201.  
  17202.  Syntax 
  17203.  
  17204.                     #include <sys/types.h>
  17205.                     #include <regex.h>
  17206.                     size_t regerror(int errcode,  const regex_t *preg,
  17207.                                     char *errbuf, size_t errbuf_size);
  17208.  
  17209.  Description 
  17210.  
  17211.           regerror finds the description for the error code errcode for the 
  17212.           regular expression preg. The description for errcode is assigned to 
  17213.           errbuf. errbuf_size is a value that you provide that specifies the 
  17214.           maximum message size that can be stored (the size of errbuf). 
  17215.  
  17216.           Regular expressions are described in detail under "Regular 
  17217.           Expressions" in the VisualAge C++ Programming Guide. 
  17218.  
  17219.           The description strings for errcode are: 
  17220.  
  17221.           errcode             Description String 
  17222.           REG_NOMATCH         RE pattern not found 
  17223.           REG_BADPAT          Invalid regular expression 
  17224.           REG_ECOLLATE        Invalid collating element 
  17225.           REG_ECTYPE          Invalid character class 
  17226.           REG_EESCAPE         Last character is \ 
  17227.           REG_ESUBREG         Invalid number in \digit 
  17228.           REG_EBRACK          [] imbalance 
  17229.           REG_EPAREN          \( \) or () imbalance 
  17230.           REG_EBRACE          \{ \} or { } imbalance 
  17231.           REG_BADBR           Invalid \{ \} range exp 
  17232.           REG_ERANGE          Invalid range exp endpoint 
  17233.           REG_ESPACE          Out of memory 
  17234.           REG_BADRPT          ?*+ not preceded by valid RE 
  17235.           REG_ECHAR           Invalid multibyte character 
  17236.           REG_EBOL            ^ anchor and not BOL 
  17237.           REG_EEOL            $ anchor and not EOL 
  17238.  
  17239.  Returns 
  17240.  
  17241.           regerror returns the size of the buffer needed to hold the string 
  17242.           that describes the error condition. 
  17243.  
  17244.  Example Code 
  17245.  
  17246.           This example compiles an invalid regular expression, and prints an 
  17247.           error message using regerror. 
  17248.  
  17249.                     #include <sys/types.h>
  17250.                     #include <regex.h>
  17251.                     #include <stdio.h>
  17252.                     #include <stdlib.h>
  17253.  
  17254.                     int main(void)
  17255.                     {
  17256.                        regex_t preg;
  17257.                        char    *pattern = "a[missing.bracket";
  17258.                        int     rc;
  17259.                        char    buffer[100];
  17260.  
  17261.                        if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) {
  17262.                           regerror(rc, &preg, buffer, 100);
  17263.                           printf("regcomp() failed with '%s'\n", buffer);
  17264.                           exit(EXIT_FAILURE);
  17265.                        }
  17266.                        return 0;
  17267.  
  17268.                        /****************************************************************************
  17269.                           The output should be similar to :
  17270.  
  17271.                           regcomp() failed with '[] imbalance'
  17272.                        ****************************************************************************/
  17273.                     }
  17274.  
  17275.  Related Information 
  17276.  
  17277.               regcomp 
  17278.               regexec 
  17279.               regfree 
  17280.  
  17281.  
  17282. ΓòÉΓòÉΓòÉ 3.168. regexec - Execute Compiled Regular Expression ΓòÉΓòÉΓòÉ
  17283.  
  17284. regexec - Execute Compiled Regular Expression 
  17285.  
  17286.  Syntax 
  17287.  
  17288.                     #include <sys/types.h>
  17289.                     #include <regex.h>
  17290.                     int regexec(const regex_t *preg, const char *string,
  17291.                                 size_t nmatch, regmatch_t *pmatch, int eflags);
  17292.  
  17293.  Description 
  17294.  
  17295.           regexec compares the null-terminated string against the compiled 
  17296.           regular expression preg to find a match between the two. (Regular 
  17297.           expressions are described in "Regular Expressions" in the VisualAge 
  17298.           C++ Programming Guide.) 
  17299.  
  17300.           nmatch is the number of substrings in string that regexec should try 
  17301.           to match with subexpressions in preg. The array you supply for pmatch 
  17302.           must have at least nmatch elements. 
  17303.  
  17304.           regexec fills in the elements of the array pmatch with offsets of the 
  17305.           substrings in string that correspond to the parenthesized 
  17306.           subexpressions of the original pattern given to regcomp to create 
  17307.           preg. The zeroth element of the array corresponds to the entire 
  17308.           pattern.  If there are more than nmatch subexpressions, only the 
  17309.           first nmatch - 1 are stored. If nmatch is 0, or if the REG_NOSUB flag 
  17310.           was set when preg was created with regcomp, regexec ignores the 
  17311.           pmatch argument. 
  17312.  
  17313.           The eflags flag defines customizable behavior of regexec: 
  17314.  
  17315.           REG_NOTBOL 
  17316.                Indicates that the first character of string is not the 
  17317.                beginning of line. 
  17318.  
  17319.           REG_NOTEOL 
  17320.                Indicates that the first character of string is not the end of 
  17321.                line. 
  17322.  
  17323.           When a basic or extended regular expression is matched, any given 
  17324.           parenthesized subexpression of the original pattern could participate 
  17325.           in the match of several different substrings of string. The following 
  17326.           rules determine which substrings are reported in pmatch.: 
  17327.  
  17328.             1. If a subexpression participated in a match several times, 
  17329.                regexec stores the offset of the last matching substring in 
  17330.                pmatch. 
  17331.  
  17332.             2. If a subexpression did not match in the source string, regexec 
  17333.                sets the offset shown in pmatch to -1. 
  17334.  
  17335.             3. If a subexpression contains subexpressions, the data in pmatch 
  17336.                refers to the last such subexpression. 
  17337.  
  17338.             4. If a subexpression matches a zero-length string, the offsets in 
  17339.                pmatch refer to the byte immediately following the matching 
  17340.                string. 
  17341.  
  17342.           If the REG_NOSUB flag was set when preg was created by regcomp, the 
  17343.           contents of pmatch are unspecified. If the REG_NEWLINE flag was not 
  17344.           set when preg was created, new-line characters are allowed in string. 
  17345.  
  17346.  Returns 
  17347.  
  17348.           If a match is found, regexec returns 0. Otherwise, it returns a 
  17349.           nonzero value indicating either no match or an error. 
  17350.  
  17351.  Example Code 
  17352.  
  17353.           This example compiles an expression and matches a string against it. 
  17354.           The first substring uses the full pattern. The second substring uses 
  17355.           the sub-expression inside the full pattern. 
  17356.  
  17357.                     #include <sys/types.h>
  17358.                     #include <regex.h>
  17359.                     #include <stdio.h>
  17360.                     #include <stdlib.h>
  17361.  
  17362.                     int main(void)
  17363.                     {
  17364.                        regex_t    preg;
  17365.                        char       *string = "a very simple simple simple string";
  17366.                        char       *pattern = "\\(sim[a-z]le\\) \\1";
  17367.                        int        rc;
  17368.                        size_t     nmatch = 2;
  17369.                        regmatch_t pmatch[2];
  17370.  
  17371.                        if (0 != (rc = regcomp(&preg, pattern, 0))) {
  17372.                           printf("regcomp() failed, returning nonzero (%d)\n", rc);
  17373.                           exit(EXIT_FAILURE);
  17374.                        }
  17375.  
  17376.                        if (0 != (rc = regexec(&preg, string, nmatch, pmatch, 0))) {
  17377.                           printf("Failed to match '%s' with '%s',returning %d.\n",
  17378.                           string, pattern, rc);
  17379.                        }
  17380.                        else {
  17381.                           printf("With the whole expression, "
  17382.                                  "a matched substring \"%.*s\" is found at position %d to %d.\n",
  17383.                                  pmatch[0].rm_eo - pmatch[0].rm_so, &string[pmatch[0].rm_so],
  17384.                                  pmatch[0].rm_so, pmatch[0].rm_eo - 1);
  17385.                           printf("With the sub-expression, "
  17386.                                  "a matched substring \"%.*s\" is found at position %d to %d.\n",
  17387.                                  pmatch[1].rm_eo - pmatch[1].rm_so, &string[pmatch[1].rm_so],
  17388.                                  pmatch[1].rm_so, pmatch[1].rm_eo - 1);
  17389.                        }
  17390.                        regfree(&preg);
  17391.                        return 0;
  17392.  
  17393.                        /****************************************************************************
  17394.                           The output should be similar to :
  17395.  
  17396.                           With the whole expression, a matched substring "simple simple" is found
  17397.                           at position 7 to 19.
  17398.                           With the sub-expression, a matched substring "simple" is found
  17399.                           at position 7 to 12.
  17400.                        ****************************************************************************/
  17401.                     }
  17402.  
  17403.  Related Information 
  17404.  
  17405.               regcomp 
  17406.               regerror 
  17407.               regfree 
  17408.  
  17409.  
  17410. ΓòÉΓòÉΓòÉ 3.169. regfree - Free Memory for Regular Expression ΓòÉΓòÉΓòÉ
  17411.  
  17412. regfree - Free Memory for Regular Expression 
  17413.  
  17414.  Syntax 
  17415.  
  17416.                     #include <sys/types.h>
  17417.                     #include <regex.h>
  17418.                     void regfree(regex_t *preg);
  17419.  
  17420.  Description 
  17421.  
  17422.           regfree frees any memory that was allocated by regcomp to implement 
  17423.           the regular expression preg. After the call to regfree, the 
  17424.           expression defined by preg is no longer a compiled regular or 
  17425.           extended expression. 
  17426.  
  17427.           Regular expressions are described in "Regular Expressions" in the 
  17428.           VisualAge C++ Programming Guide. 
  17429.  
  17430.  Returns 
  17431.  
  17432.           There is no return value. 
  17433.  
  17434.  Example Code 
  17435.  
  17436.           This example compiles an extended regular expression and frees it. 
  17437.  
  17438.                     #include <sys/types.h>
  17439.                     #include <regex.h>
  17440.                     #include <stdio.h>
  17441.                     #include <stdlib.h>
  17442.  
  17443.                     int main(void)
  17444.                     {
  17445.                        regex_t    preg;
  17446.                        char       *pattern = ".*(simple).*";
  17447.                        int        rc;
  17448.  
  17449.                        if (0 != (rc = regcomp(&preg, pattern, REG_EXTENDED))) {
  17450.                           printf("regcomp() failed, returning nonzero (%d)\n", rc);
  17451.                           exit(EXIT_FAILURE);
  17452.                        }
  17453.                        regfree(&preg);
  17454.                        printf("Memory allocated for reg is freed.\n");
  17455.                        return 0;
  17456.  
  17457.                        /****************************************************************************
  17458.                           The output should be similar to :
  17459.  
  17460.                           Memory allocated for reg is freed.
  17461.                        ****************************************************************************/
  17462.                     }
  17463.  
  17464.  Related Information 
  17465.  
  17466.               regcomp 
  17467.               regerror 
  17468.               regexec 
  17469.  
  17470.  
  17471. ΓòÉΓòÉΓòÉ 3.170. remove - Delete File ΓòÉΓòÉΓòÉ
  17472.  
  17473. remove - Delete File 
  17474.  
  17475.  Syntax 
  17476.  
  17477.                     #include <stdio.h>
  17478.                     int remove(const char *filename);
  17479.  
  17480.  Description 
  17481.  
  17482.           remove deletes the file specified by filename. 
  17483.  
  17484.           Note:  You cannot remove a nonexistent file or a file that is open. 
  17485.  
  17486.  Returns 
  17487.  
  17488.           remove returns 0 if it successfully deletes the file. A nonzero 
  17489.           return value idicates an error. 
  17490.  
  17491.  Example Code 
  17492.  
  17493.           This example uses remove to remove a file. It issues a message if an 
  17494.           error occurs. 
  17495.  
  17496.                     #include <stdio.h>
  17497.  
  17498.                     int main(void)
  17499.                     {
  17500.                        char *FileName = "file2rm.mjq";
  17501.                        FILE *fp;
  17502.  
  17503.                        fp = fopen(FileName, "w");
  17504.                        fprintf(fp, "Hello world\n");
  17505.                        fclose(fp);
  17506.                        if (remove(FileName) != 0)
  17507.                           perror("Could not remove file");
  17508.                        else
  17509.                           printf("File \"%s\" removed successfully.\n", FileName);
  17510.                        return 0;
  17511.  
  17512.                        /****************************************************************************
  17513.                           The output should be:
  17514.  
  17515.                           File "file2rm.mjq" removed successfully.
  17516.                        ****************************************************************************/
  17517.                     }
  17518.  
  17519.  Related Information 
  17520.  
  17521.               fopen 
  17522.               rename 
  17523.               _rmtmp 
  17524.               unlink 
  17525.  
  17526.  
  17527. ΓòÉΓòÉΓòÉ 3.171. rename - Rename File ΓòÉΓòÉΓòÉ
  17528.  
  17529. rename - Rename File 
  17530.  
  17531.  Syntax 
  17532.  
  17533.                     #include <stdio.h>  /* also in <io.h> */
  17534.                     int rename(const char *oldname, const char *newname);
  17535.  
  17536.  Description 
  17537.  
  17538.           rename renames the file specified by oldname to the name given by 
  17539.           newname. The oldname pointer must specify the name of an existing 
  17540.           file. The newname pointer must not specify the name of an existing 
  17541.           file. Both oldname and newname must be on the same drive; you cannot 
  17542.           rename files across drives. You cannot rename a file with the name of 
  17543.           an existing file. You also cannot rename an open file. 
  17544.  
  17545.  Returns 
  17546.  
  17547.           rename returns 0 if successful. On an error, it returns a nonzero 
  17548.           value. 
  17549.  
  17550.  Example Code 
  17551.  
  17552.           This example uses rename to rename a file. It issues a message if 
  17553.           errors occur. 
  17554.  
  17555.                     #include <stdio.h>
  17556.  
  17557.                     int main(void)
  17558.                     {
  17559.                        char *OldName = "oldfile.mjq";
  17560.                        char *NewName = "newfile.mjq";
  17561.                        FILE *fp;
  17562.  
  17563.                        fp = fopen(OldName, "w");
  17564.                        fprintf(fp, "Hello world\n");
  17565.                        fclose(fp);
  17566.                        if (rename(OldName, NewName) != 0)
  17567.                           perror("Could not rename file");
  17568.                        else
  17569.                           printf("File \"%s\" is renamed to \"%s\".\n", OldName, NewName);
  17570.                        return 0;
  17571.  
  17572.                        /****************************************************************************
  17573.                           The output should be:
  17574.  
  17575.                           File "oldfile.mjq" is renamed to "newfile.mjq".
  17576.                        ****************************************************************************/
  17577.                     }
  17578.  
  17579.  Related Information 
  17580.  
  17581.               fopen 
  17582.               remove 
  17583.  
  17584.  
  17585. ΓòÉΓòÉΓòÉ 3.172. rewind - Adjust Current File Position ΓòÉΓòÉΓòÉ
  17586.  
  17587. rewind - Adjust Current File Position 
  17588.  
  17589.  Syntax 
  17590.  
  17591.                     #include <stdio.h>
  17592.                     void rewind(FILE *stream);
  17593.  
  17594.  Description 
  17595.  
  17596.           rewind repositions the file pointer associated with stream to the 
  17597.           beginning of the file. A call to rewind is the same as: 
  17598.  
  17599.                        (void)fseek(stream, 0L, SEEK_SET);
  17600.           except that rewind also clears the error indicator for the stream. 
  17601.  
  17602.  Returns 
  17603.  
  17604.           There is no return value. 
  17605.  
  17606.  Example Code 
  17607.  
  17608.           This example first opens a file myfile.dat for input and output.  It 
  17609.           writes integers to the file, uses rewind to reposition the file 
  17610.           pointer to the beginning of the file, and then reads the data back 
  17611.           in. 
  17612.  
  17613.                     #include <stdio.h>
  17614.  
  17615.                     FILE *stream;
  17616.                     int data1,data2,data3,data4;
  17617.  
  17618.                     int main(void)
  17619.                     {
  17620.                        data1 = 1;
  17621.                        data2 = -37;
  17622.  
  17623.                            /* Place data in the file                                              */
  17624.  
  17625.                        stream = fopen("myfile.dat", "w+");
  17626.                        fprintf(stream, "%d %d\n", data1, data2);
  17627.  
  17628.                            /* Now read the data file                                              */
  17629.  
  17630.                        rewind(stream);
  17631.                        fscanf(stream, "%d", &data3);
  17632.                        fscanf(stream, "%d", &data4);
  17633.                        printf("The values read back in are: %d and %d\n", data3, data4);
  17634.                        return 0;
  17635.  
  17636.                        /****************************************************************************
  17637.                           The output should be:
  17638.  
  17639.                           The values read back in are: 1 and -37
  17640.                        ****************************************************************************/
  17641.                     }
  17642.  
  17643.  Related Information 
  17644.  
  17645.               fgetpos 
  17646.               fseek 
  17647.               fsetpos 
  17648.               ftell 
  17649.               lseek 
  17650.               _tell 
  17651.  
  17652.  
  17653. ΓòÉΓòÉΓòÉ 3.173. rmdir - Remove Directory ΓòÉΓòÉΓòÉ
  17654.  
  17655. rmdir - Remove Directory 
  17656.  
  17657.  Syntax 
  17658.  
  17659.                     #include <direct.h>
  17660.                     int rmdir(char *pathname);
  17661.  
  17662.  Description 
  17663.  
  17664.           rmdir deletes the directory specified by pathname.  The directory 
  17665.           must be empty, and it must not be the current working directory or 
  17666.           the root directory. 
  17667.  
  17668.           Note:  In earlier releases of C Set ++, rmdir began with an 
  17669.                  underscore (_rmdir). Because it is defined by the X/Open 
  17670.                  standard, the underscore has been removed. For compatibility, 
  17671.                  The Developer's Toolkit will map _rmdir to rmdir for you. 
  17672.  
  17673.  Returns 
  17674.  
  17675.           rmdir returns the value 0 if the directory is successfully deleted. A 
  17676.           return value of -1 indicates an error, and errno is set to one of the 
  17677.           following values: 
  17678.  
  17679.           Value          Meaning 
  17680.  
  17681.           EACCESS        One of the following has occurred: 
  17682.  
  17683.                              The given path name is not a directory. 
  17684.                              The directory is not empty. 
  17685.                              The directory is read only. 
  17686.                              The directory is the current working directory or 
  17687.                               root directory being used by a process. 
  17688.  
  17689.           ENOENT         The path name was not found. 
  17690.  
  17691.  Example Code 
  17692.  
  17693.           This example deletes two directories: one in the root directory, and 
  17694.           the other in the current working directory. 
  17695.  
  17696.                     #include <stdio.h>
  17697.                     #include <direct.h>
  17698.                     #include <string.h>
  17699.  
  17700.                     int main(void)
  17701.                     {
  17702.                        char *dir1,*dir2;
  17703.  
  17704.                      /*  Create the directory "aleng" in the root directory of the C: drive.      */
  17705.  
  17706.                        dir1 = "c:\\aleng";
  17707.                        if (0 == (mkdir(dir1)))
  17708.                           printf("%s directory was created.\n", dir1);
  17709.                        else
  17710.                           printf("%s directory was not created.\n", dir1);
  17711.  
  17712.                      /*  Create the subdirectory "simon" in the current directory.                */
  17713.  
  17714.                        dir2 = "simon";
  17715.                        if (0 == (mkdir(dir2)))
  17716.                           printf("%s directory was created.\n", dir2);
  17717.                        else
  17718.                           printf("%s directory was not created.\n", dir2);
  17719.  
  17720.                      /*  Remove the directory "aleng" from the root directory of the C: drive.    */
  17721.  
  17722.                        printf("Removing directory 'aleng' from the root directory.\n");
  17723.                        if (rmdir(dir1))
  17724.                           perror(NULL);
  17725.                        else
  17726.                           printf("%s directory was removed.\n", dir1);
  17727.  
  17728.                      /*  Remove the subdirectory "simon" from the current directory.              */
  17729.  
  17730.                        printf("Removing subdirectory 'simon' from the current directory.\n");
  17731.                        if (rmdir(dir2))
  17732.                           perror(NULL);
  17733.                        else
  17734.                           printf("%s directory was removed.\n", dir2);
  17735.                        return 0;
  17736.  
  17737.                        /****************************************************************************
  17738.                           The output should be:
  17739.  
  17740.                           c:\aleng directory was created.
  17741.                           simon directory was created.
  17742.                           Removing directory 'aleng' from the root directory.
  17743.                           c:\aleng directory was removed.
  17744.                           Removing subdirectory 'simon' from the current directory.
  17745.                           simon directory was removed.
  17746.                        ****************************************************************************/
  17747.                     }
  17748.  
  17749.  Related Information 
  17750.  
  17751.               chdir 
  17752.               _getdcwd 
  17753.               _getcwd 
  17754.               mkdir 
  17755.  
  17756.  
  17757. ΓòÉΓòÉΓòÉ 3.174. _rmem_init - Initialize Memory Functions for Subsystem DLL ΓòÉΓòÉΓòÉ
  17758.  
  17759. _rmem_init - Initialize Memory Functions for Subsystem DLL 
  17760.  
  17761.  Syntax 
  17762.  
  17763.                     int _rmem_init(void);
  17764.                     /* no header file - defined in run-time startup code */
  17765.  
  17766.  Description 
  17767.  
  17768.           _rmem_init initializes the memory functions for subsystem DLLs. 
  17769.           Although subsystems do not require a run-time environment (and 
  17770.           therefore do not call _CRT_init), they do require the library memory 
  17771.           functions. For DLLs that do use a run-time environment, the memory 
  17772.           functions are initialized with the environment by _CRT_init. 
  17773.  
  17774.           By default, all DLLs call The Developer's Toolkit _DLL_InitTerm 
  17775.           function, which in turn calls _rmem_init for you. However, if you are 
  17776.           writing your own subsystem _DLL_InitTerm function (for example, to 
  17777.           perform actions other than memory initialization and termination), 
  17778.           you must call _rmem_init from your version of _DLL_InitTerm before 
  17779.           you can call any other library functions. 
  17780.  
  17781.           If your DLL contains C++ code, you must also call __ctordtorInit 
  17782.           after _rmem_init to ensure that static constructors and destructors 
  17783.           are initialized properly. __ctordtorInit is defined in the run-time 
  17784.           startup code as: 
  17785.  
  17786.                        void __ctordtorInit(void);
  17787.  
  17788.  Returns 
  17789.  
  17790.           If the memory functions were successfully initialized, _rmem_init 
  17791.           returns 0. A return code of -1 indicates an error. If an error 
  17792.           occurs, an error message is written to file handle 2, which is the 
  17793.           usual destination of stderr. 
  17794.  
  17795.  Example Code 
  17796.  
  17797.           The following example shows the _DLL_InitTerm function from The 
  17798.           Developer's Toolkit sample program for building subsystem DLLs, which 
  17799.           calls _rmem_init to initialize the memory functions. 
  17800.  
  17801.                     #pragma strings( readonly )
  17802.                     /******************************************************************************/
  17803.                     /*                                                                            */
  17804.                     /* _DLL_InitTerm - Initialization/Termination function for the DLL that is    */
  17805.                     /*                 invoked by the loader.                                     */
  17806.                     /*                                                                            */
  17807.                     /* DLLREGISTER  - Called by _DLL_InitTerm for each process that loads the     */
  17808.                     /*                DLL.                                                        */
  17809.                     /*                                                                            */
  17810.                     /* DLLDEREGISTER- Called by _DLL_InitTerm for each process that frees the     */
  17811.                     /*                DLL.                                                        */
  17812.                     /*                                                                            */
  17813.                     /******************************************************************************/
  17814.  
  17815.                     #define  INCL_DOS
  17816.                     #define  INCL_DOSERRORS
  17817.                     #define  INCL_NOPMAPI
  17818.                     #include <os2.h>
  17819.                     #include <stdio.h>
  17820.  
  17821.                     unsigned long _DLL_InitTerm( unsigned long hModule, unsigned long ulFlag );
  17822.  
  17823.                     static unsigned long DLLREGISTER( void );
  17824.                     static unsigned long DLLDEREGISTER( void );
  17825.  
  17826.                     #define SHARED_SEMAPHORE_NAME "\\SEM32\\SAMPLE05\\DLL.LCK"
  17827.  
  17828.                     /* The following data will be per-process data.  It will not be shared among  */
  17829.                     /* different processes.                                                       */
  17830.  
  17831.                     static HMTX  hmtxSharedSem;    /* Shared semaphore                            */
  17832.                     static ULONG ulProcessTotal;   /* Total of increments for a process           */
  17833.                     static PID   pidProcess;       /* Process identifier                          */
  17834.  
  17835.                     /* This is the global data segment that is shared by every process.           */
  17836.  
  17837.                     #pragma data_seg( GLOBAL_SEG )
  17838.  
  17839.                     static ULONG ulProcessCount;                /* total number of processes      */
  17840.  
  17841.                     /* _DLL_InitTerm() - called by the loader for DLL initialization/termination  */
  17842.                     /* This function must return a non-zero value if successful and a zero value  */
  17843.                     /* if unsuccessful.                                                           */
  17844.                     unsigned long _DLL_InitTerm( unsigned long hModule, unsigned long ulFlag )
  17845.                        {
  17846.                        APIRET rc;
  17847.  
  17848.  
  17849.                        /* If ulFlag is zero then initialization is required:                      */
  17850.                        /*    If the shared memory pointer is NULL then the DLL is being loaded    */
  17851.                        /*    for the first time so acquire the named shared storage for the       */
  17852.                        /*    process control structures.  A linked list of process control        */
  17853.                        /*    structures will be maintained.  Each time a new process loads this   */
  17854.                        /*    DLL, a new process control structure is created and it is inserted   */
  17855.                        /*    at the end of the list by calling DLLREGISTER.                       */
  17856.                        /*                                                                         */
  17857.                        /* If ulFlag is 1 then termination is required:                            */
  17858.                        /*    Call DLLDEREGISTER which will remove the process control structure   */
  17859.                        /*    and free the shared memory block from its virtual address space.     */
  17860.  
  17861.                        switch( ulFlag )
  17862.                           {
  17863.                        case 0:
  17864.                              if ( !ulProcessCount )
  17865.                                 {
  17866.                                 _rmem_init();
  17867.                                 /* Create the shared mutex semaphore.                             */
  17868.                                 if ( ( rc = DosCreateMutexSem( SHARED_SEMAPHORE_NAME,
  17869.                                                                &hmtxSharedSem,
  17870.                                                                0,
  17871.                                                                FALSE ) ) != NO_ERROR )
  17872.                                    {
  17873.                                    printf( "DosCreateMutexSem rc = %lu\n", rc );
  17874.                                    return 0;
  17875.                                    }
  17876.                                 }
  17877.  
  17878.                              /* Register the current process.                                     */
  17879.                              if ( DLLREGISTER( ) )
  17880.                                 return 0;
  17881.                              break;
  17882.  
  17883.                           case 1:
  17884.                              /* De-register the current process.                                  */
  17885.                              if ( DLLDEREGISTER( ) )
  17886.                                 return 0;
  17887.  
  17888.                              _rmem_term();
  17889.                              break;
  17890.  
  17891.                           default:
  17892.                              return 0;
  17893.                           }
  17894.  
  17895.                        /* Indicate success.  Non-zero means success!!!                            */
  17896.                        return 1;
  17897.                        }
  17898.  
  17899.  
  17900.                     /* DLLREGISTER - Registers the current process so that it can use this        */
  17901.                     /*               subsystem.  Called by _DLL_InitTerm when the DLL is first    */
  17902.                     /*               loaded for the current process.                              */
  17903.  
  17904.                     static unsigned long DLLREGISTER( void )
  17905.                        {
  17906.                        APIRET rc;
  17907.                        PTIB ptib;
  17908.                        PPIB ppib;
  17909.  
  17910.                        /* Get the address of the process and thread information blocks.           */
  17911.                        if ( ( rc = DosGetInfoBlocks( &ptib, &ppib ) ) != NO_ERROR )
  17912.                           {
  17913.                           printf( "DosGetInfoBlocks rc = %lu\n", rc );
  17914.                           return rc;
  17915.                           }
  17916.  
  17917.                        /* Open the shared mutex semaphore for this process.                       */
  17918.                        if ( ( rc = DosOpenMutexSem( SHARED_SEMAPHORE_NAME,
  17919.                                                     &hmtxSharedSem ) ) != NO_ERROR )
  17920.                           {
  17921.                           printf( "DosOpenMutexSem rc = %lu\n", rc );
  17922.                           return rc;
  17923.                           }
  17924.  
  17925.                        /* Acquire the shared mutex semaphore.                                     */
  17926.                        if ( ( rc = DosRequestMutexSem( hmtxSharedSem,
  17927.                                                        SEM_INDEFINITE_WAIT ) ) != NO_ERROR )
  17928.                           {
  17929.                           printf( "DosRequestMutexSem rc = %lu\n", rc );
  17930.                           DosCloseMutexSem( hmtxSharedSem );
  17931.                           return rc;
  17932.                           }
  17933.  
  17934.                        /* Increment the count of processes registered.                            */
  17935.                        ++ulProcessCount;
  17936.  
  17937.                        /* Initialize the per-process data.                                        */
  17938.                        ulProcessTotal = 0;
  17939.                        pidProcess = ppib->pib_ulpid;
  17940.  
  17941.                        /* Tell the user that the current process has been registered.             */
  17942.                        printf( "\nProcess %lu has been registered.\n\n", pidProcess );
  17943.  
  17944.                        /* Release the shared mutex semaphore.                                     */
  17945.                        if ( ( rc = DosReleaseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  17946.                           {
  17947.                           printf( "DosReleaseMutexSem rc = %lu\n", rc );
  17948.                           return rc;
  17949.                           }
  17950.  
  17951.                        return 0;
  17952.                        }
  17953.  
  17954.  
  17955.                     /* DLLDEREGISTER - Deregisters the current process from this subsystem.       */
  17956.                     /*                 Called by _DLL_InitTerm when the DLL is freed for the      */
  17957.                     /*                 last time by the current process.                          */
  17958.  
  17959.                     static unsigned long DLLDEREGISTER( void )
  17960.                        {
  17961.                        APIRET rc;
  17962.  
  17963.                        /* Acquire the shared mutex semaphore.                                     */
  17964.                        if ( ( rc = DosRequestMutexSem( hmtxSharedSem,
  17965.                                                        SEM_INDEFINITE_WAIT ) ) != NO_ERROR )
  17966.                           {
  17967.                           printf( "DosRequestMutexSem rc = %lu\n", rc );
  17968.                           return rc;
  17969.                           }
  17970.                        /* Decrement the count of processes registered.                            */
  17971.                        --ulProcessCount;
  17972.  
  17973.                        /* Tell the user that the current process has been deregistered.           */
  17974.                        printf( "\nProcess %lu has been deregistered.\n\n", pidProcess );
  17975.  
  17976.                        /* Release the shared mutex semaphore.                                     */
  17977.                        if ( ( rc = DosReleaseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  17978.                           {
  17979.                           printf( "DosReleaseMutexSem rc = %lu\n", rc );
  17980.                           return rc;
  17981.                           }
  17982.  
  17983.                        /* Close the shared mutex semaphore for this process.                      */
  17984.                        if ( ( rc = DosCloseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  17985.                           {
  17986.                           printf( "DosCloseMutexSem rc = %lu\n", rc );
  17987.                           return rc;
  17988.                           }
  17989.  
  17990.                        return 0;
  17991.                        }
  17992.  
  17993.  Related Information 
  17994.  
  17995.               "Building Subsystem DLLs" in the VisualAge C++ Programming Guide 
  17996.               _CRT_init 
  17997.               _CRT_term 
  17998.               _DLL_InitTerm 
  17999.               _rmem_term 
  18000.  
  18001.  
  18002. ΓòÉΓòÉΓòÉ 3.175. _rmem_term - Terminate Memory Functions for Subsystem DLL ΓòÉΓòÉΓòÉ
  18003.  
  18004. _rmem_term - Terminate Memory Functions for Subsystem DLL 
  18005.  
  18006.  Syntax 
  18007.  
  18008.                     int _rmem_term(void);
  18009.                     /* no header file - defined in run-time startup code */
  18010.  
  18011.  Description 
  18012.  
  18013.           _rmem_term terminates the memory functions for subsystem DLLs.  It is 
  18014.           only needed for DLLs where the run-time library is statically linked. 
  18015.  
  18016.           By default, all DLLs call The Developer's Toolkit _DLL_InitTerm 
  18017.           function, which in turn calls _rmem_term for you. However, if you are 
  18018.           writing your own _DLL_InitTerm function (for example, to perform 
  18019.           actions other than memory initialization and termination), and your 
  18020.           DLL statically links to the C run-time libraries, you need to call 
  18021.           _rmem_term from your subsystem _DLL_InitTerm function. (For DLLs with 
  18022.           a run-time environment, this termination is done by _CRT_term.) 
  18023.  
  18024.           If your DLL contains C++ code, you must also call __ctordtorTerm 
  18025.           before you call _rmem_term to ensure that static constructors and 
  18026.           destructors are terminated correctly. __ctordtorTerm is defined in 
  18027.           the run-time startup code as: 
  18028.  
  18029.                        void __ctordtorTerm(void);
  18030.  
  18031.           Once you have called _rmem_term, you cannot call any other library 
  18032.           functions. 
  18033.  
  18034.           If your DLL is dynamically linked, you cannot call library functions 
  18035.           in the termination section of your _DLL_InitTerm function. If your 
  18036.           termination routine requires calling library functions, you must 
  18037.           register the termination routine with DosExitList. Note that all 
  18038.           DosExitList routines are called before DLL termination routines. 
  18039.  
  18040.  Returns 
  18041.  
  18042.           _rmem_term returns 0 if the memory functions were successfully 
  18043.           terminated. A return value of -1 indicates an error. 
  18044.  
  18045.  Example Code 
  18046.  
  18047.           The following example shows the _DLL_InitTerm function from The 
  18048.           Developer's Toolkit sample program for building subsystem DLLs, which 
  18049.           calls _rmem_term to terminate the library memory functions. 
  18050.  
  18051.                     #pragma strings( readonly )
  18052.                     /******************************************************************************/
  18053.                     /*                                                                            */
  18054.                     /* _DLL_InitTerm - Initialization/Termination function for the DLL that is    */
  18055.                     /*                 invoked by the loader.                                     */
  18056.                     /*                                                                            */
  18057.                     /* DLLREGISTER  - Called by _DLL_InitTerm for each process that loads the     */
  18058.                     /*                DLL.                                                        */
  18059.                     /*                                                                            */
  18060.                     /* DLLDEREGISTER- Called by _DLL_InitTerm for each process that frees the     */
  18061.                     /*                DLL.                                                        */
  18062.                     /*                                                                            */
  18063.                     /******************************************************************************/
  18064.  
  18065.                     #define  INCL_DOS
  18066.                     #define  INCL_DOSERRORS
  18067.                     #define  INCL_NOPMAPI
  18068.                     #include <os2.h>
  18069.                     #include <stdio.h>
  18070.  
  18071.                     unsigned long _DLL_InitTerm( unsigned long hModule, unsigned long ulFlag );
  18072.  
  18073.                     static unsigned long DLLREGISTER( void );
  18074.                     static unsigned long DLLDEREGISTER( void );
  18075.  
  18076.                     #define SHARED_SEMAPHORE_NAME "\\SEM32\\SAMPLE05\\DLL.LCK"
  18077.  
  18078.                     /* The following data will be per-process data.  It will not be shared among  */
  18079.                     /* different processes.                                                       */
  18080.  
  18081.                     static HMTX  hmtxSharedSem;    /* Shared semaphore                            */
  18082.                     static ULONG ulProcessTotal;   /* Total of increments for a process           */
  18083.                     static PID   pidProcess;       /* Process identifier                          */
  18084.  
  18085.                     /* This is the global data segment that is shared by every process.           */
  18086.  
  18087.                     #pragma data_seg( GLOBAL_SEG )
  18088.  
  18089.                     static ULONG ulProcessCount;                /* total number of processes      */
  18090.  
  18091.                     /* _DLL_InitTerm() - called by the loader for DLL initialization/termination  */
  18092.                     /* This function must return a non-zero value if successful and a zero value  */
  18093.                     /* if unsuccessful.                                                           */
  18094.                     unsigned long _DLL_InitTerm( unsigned long hModule, unsigned long ulFlag )
  18095.                        {
  18096.                        APIRET rc;
  18097.  
  18098.  
  18099.                        /* If ulFlag is zero then initialization is required:                      */
  18100.                        /*    If the shared memory pointer is NULL then the DLL is being loaded    */
  18101.                        /*    for the first time so acquire the named shared storage for the       */
  18102.                        /*    process control structures.  A linked list of process control        */
  18103.                        /*    structures will be maintained.  Each time a new process loads this   */
  18104.                        /*    DLL, a new process control structure is created and it is inserted   */
  18105.                        /*    at the end of the list by calling DLLREGISTER.                       */
  18106.                        /*                                                                         */
  18107.                        /* If ulFlag is 1 then termination is required:                            */
  18108.                        /*    Call DLLDEREGISTER which will remove the process control structure   */
  18109.                        /*    and free the shared memory block from its virtual address space.     */
  18110.  
  18111.                        switch( ulFlag )
  18112.                           {
  18113.                        case 0:
  18114.                              if ( !ulProcessCount )
  18115.                                 {
  18116.                                 _rmem_init();
  18117.                                 /* Create the shared mutex semaphore.                             */
  18118.                                 if ( ( rc = DosCreateMutexSem( SHARED_SEMAPHORE_NAME,
  18119.                                                                &hmtxSharedSem,
  18120.                                                                0,
  18121.                                                                FALSE ) ) != NO_ERROR )
  18122.                                    {
  18123.                                    printf( "DosCreateMutexSem rc = %lu\n", rc );
  18124.                                    return 0;
  18125.                                    }
  18126.                                 }
  18127.  
  18128.                              /* Register the current process.                                     */
  18129.                              if ( DLLREGISTER( ) )
  18130.                                 return 0;
  18131.                              break;
  18132.  
  18133.                           case 1:
  18134.                              /* De-register the current process.                                  */
  18135.                              if ( DLLDEREGISTER( ) )
  18136.                                 return 0;
  18137.  
  18138.                              _rmem_term();
  18139.                              break;
  18140.  
  18141.                           default:
  18142.                              return 0;
  18143.                           }
  18144.  
  18145.                        /* Indicate success.  Non-zero means success!!!                            */
  18146.  
  18147.                        return 1;
  18148.                        }
  18149.  
  18150.                     /* DLLREGISTER - Registers the current process so that it can use this        */
  18151.                     /*               subsystem.  Called by _DLL_InitTerm when the DLL is first    */
  18152.                     /*               loaded for the current process.                              */
  18153.  
  18154.                     static unsigned long DLLREGISTER( void )
  18155.                        {
  18156.                        APIRET rc;
  18157.                        PTIB ptib;
  18158.                        PPIB ppib;
  18159.  
  18160.  
  18161.                        /* Get the address of the process and thread information blocks.           */
  18162.                        if ( ( rc = DosGetInfoBlocks( &ptib, &ppib ) ) != NO_ERROR )
  18163.                           {
  18164.                           printf( "DosGetInfoBlocks rc = %lu\n", rc );
  18165.                           return rc;
  18166.                           }
  18167.  
  18168.                        /* Open the shared mutex semaphore for this process.                       */
  18169.                        if ( ( rc = DosOpenMutexSem( SHARED_SEMAPHORE_NAME,
  18170.                                                     &hmtxSharedSem ) ) != NO_ERROR )
  18171.                           {
  18172.                           printf( "DosOpenMutexSem rc = %lu\n", rc );
  18173.                           return rc;
  18174.                           }
  18175.  
  18176.                        /* Acquire the shared mutex semaphore.                                     */
  18177.                        if ( ( rc = DosRequestMutexSem( hmtxSharedSem,
  18178.                                                        SEM_INDEFINITE_WAIT ) ) != NO_ERROR )
  18179.                           {
  18180.                           printf( "DosRequestMutexSem rc = %lu\n", rc );
  18181.                           DosCloseMutexSem( hmtxSharedSem );
  18182.                           return rc;
  18183.                           }
  18184.  
  18185.                        /* Increment the count of processes registered.                            */
  18186.                        ++ulProcessCount;
  18187.  
  18188.                        /* Initialize the per-process data.                                        */
  18189.                        ulProcessTotal = 0;
  18190.                        pidProcess = ppib->pib_ulpid;
  18191.  
  18192.                        /* Tell the user that the current process has been registered.             */
  18193.                        printf( "\nProcess %lu has been registered.\n\n", pidProcess );
  18194.  
  18195.                        /* Release the shared mutex semaphore.                                     */
  18196.                        if ( ( rc = DosReleaseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  18197.                           {
  18198.                           printf( "DosReleaseMutexSem rc = %lu\n", rc );
  18199.                           return rc;
  18200.                           }
  18201.  
  18202.                        return 0;
  18203.                        }
  18204.  
  18205.  
  18206.                     /* DLLDEREGISTER - Deregisters the current process from this subsystem.       */
  18207.                     /*                 Called by _DLL_InitTerm when the DLL is freed for the      */
  18208.                     /*                 last time by the current process.                          */
  18209.  
  18210.                     static unsigned long DLLDEREGISTER( void )
  18211.                        {
  18212.                        APIRET rc;
  18213.  
  18214.                        /* Acquire the shared mutex semaphore.                                     */
  18215.                        if ( ( rc = DosRequestMutexSem( hmtxSharedSem,
  18216.                                                        SEM_INDEFINITE_WAIT ) ) != NO_ERROR )
  18217.                           {
  18218.                           printf( "DosRequestMutexSem rc = %lu\n", rc );
  18219.                           return rc;
  18220.                           }
  18221.  
  18222.                        /* Decrement the count of processes registered.                            */
  18223.                        --ulProcessCount;
  18224.  
  18225.                        /* Tell the user that the current process has been deregistered.           */
  18226.                        printf( "\nProcess %lu has been deregistered.\n\n", pidProcess );
  18227.  
  18228.                        /* Release the shared mutex semaphore.                                     */
  18229.                        if ( ( rc = DosReleaseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  18230.                           {
  18231.                           printf( "DosReleaseMutexSem rc = %lu\n", rc );
  18232.                           return rc;
  18233.                           }
  18234.  
  18235.                        /* Close the shared mutex semaphore for this process.                      */
  18236.                        if ( ( rc = DosCloseMutexSem( hmtxSharedSem ) ) != NO_ERROR )
  18237.                           {
  18238.                           printf( "DosCloseMutexSem rc = %lu\n", rc );
  18239.                           return rc;
  18240.                           }
  18241.  
  18242.                        return 0;
  18243.                        }
  18244.  
  18245.  Related Information 
  18246.  
  18247.               "Building Subsystem DLLs" in the VisualAge C++ Programming Guide 
  18248.               _CRT_init 
  18249.               _CRT_term 
  18250.               _DLL_InitTerm 
  18251.               _rmem_init 
  18252.  
  18253.  
  18254. ΓòÉΓòÉΓòÉ 3.176. _rmtmp - Remove Temporary Files ΓòÉΓòÉΓòÉ
  18255.  
  18256. _rmtmp - Remove Temporary Files 
  18257.  
  18258.  Syntax 
  18259.  
  18260.                     #include <stdio.h>
  18261.                     int _rmtmp(void);
  18262.  
  18263.  Description 
  18264.  
  18265.           _rmtmp closes and deletes all temporary files in all directories that 
  18266.           are held open by the calling process. 
  18267.  
  18268.  Returns 
  18269.  
  18270.           _rmtmp returns the number of temporary files deleted. 
  18271.  
  18272.  Example Code 
  18273.  
  18274.           This example uses _rmtmp to remove a number of temporary files. 
  18275.  
  18276.                     #include <stdio.h>
  18277.  
  18278.                     int main(void)
  18279.                     {
  18280.                        int num;
  18281.                        FILE *stream;
  18282.  
  18283.                        if (NULL == (stream = tmpfile()))
  18284.                           printf("Could not open new temporary file\n");
  18285.                        else {
  18286.                           num = _rmtmp();
  18287.                           printf("Number of temporary files removed = %d\n", num);
  18288.                        }
  18289.                        return 0;
  18290.  
  18291.                        /****************************************************************************
  18292.                           The output should be:
  18293.  
  18294.                           Number of temporary files removed = 1
  18295.                        ****************************************************************************/
  18296.                     }
  18297.  
  18298.  Related Information 
  18299.  
  18300.               _flushall 
  18301.               remove 
  18302.               tmpfile 
  18303.               tmpnam 
  18304.               unlink 
  18305.  
  18306.  
  18307. ΓòÉΓòÉΓòÉ 3.177. scanf - Read Data ΓòÉΓòÉΓòÉ
  18308.  
  18309. scanf - Read Data 
  18310.  
  18311.  Syntax 
  18312.  
  18313.                     #include <stdio.h>
  18314.                     int scanf(const char *format-string, argument-list);
  18315.  
  18316.  Description 
  18317.  
  18318.           scanf reads data from the standard input stream stdin into the 
  18319.           locations given by each entry in argument-list.  Each argument must 
  18320.           be a pointer to a variable with a type that corresponds to a type 
  18321.           specifier in format-string. The format-string controls the 
  18322.           interpretation of the input fields. 
  18323.  
  18324.           The format-string can contain one or more of the following: 
  18325.  
  18326.               White-space characters, as specified by isspace (such as blanks 
  18327.                and new-line characters). A white-space character causes scanf 
  18328.                to read, but not to store, all consecutive white-space 
  18329.                characters in the input up to the next character that is not 
  18330.                white space.  One white-space character in format-string matches 
  18331.                any combination of white-space characters in the input. 
  18332.  
  18333.               Characters that are not white space, except for the percent sign 
  18334.                character (%).  A non-white-space character causes scanf to 
  18335.                read, but not to store, a matching non-white-space character. 
  18336.                If the next character in stdin does not match, scanf ends. 
  18337.  
  18338.               Format specifications, introduced by the percent sign (%).  A 
  18339.                format specification causes scanf to read and convert characters 
  18340.                in the input into values of a specified type.  The value is 
  18341.                assigned to an argument in the argument list. 
  18342.  
  18343.           scanf reads format-string from left to right.  Characters outside of 
  18344.           format specifications are expected to match the sequence of 
  18345.           characters in stdin;  the matched characters in stdin are scanned but 
  18346.           not stored.  If a character in stdin conflicts with format-string, 
  18347.           scanf ends.  The conflicting character is left in stdin as if it had 
  18348.           not been read. 
  18349.  
  18350.           When the first format specification is found, the value of the first 
  18351.           input field is converted according to the format specification and 
  18352.           stored in the location specified by the first entry in argument-list. 
  18353.           The second format specification converts the second input field and 
  18354.           stores it in the second entry in argument-list, and so on through the 
  18355.           end of format-string. 
  18356.  
  18357.           An input field is defined as all characters up to the first 
  18358.           white-space character (space, tab, or new line), up to the first 
  18359.           character that cannot be converted according to the format 
  18360.           specification, or until the field width is reached, whichever comes 
  18361.           first.  If there are too many arguments for the format 
  18362.           specifications, the extra arguments are ignored.  The results are 
  18363.           undefined if there are not enough arguments for the format 
  18364.           specifications. 
  18365.  
  18366.           A format specification has the following form: 
  18367.  
  18368.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18369.                     Γöé                                        Γöé
  18370.                     Γöé >>ΓöÇΓöÇ%ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇtypeΓöÇΓöÇ><               Γöé
  18371.                     Γöé     ΓööΓöÇn$ΓöÇΓöÿ  ΓööΓöÇ*ΓöÇΓöÿ  ΓööΓöÇwidthΓöÇΓöÿ  Γö£ΓöÇhΓöÇΓöñ                    Γöé
  18372.                     Γöé                  Γö£ΓöÇlΓöÇΓöñ                    Γöé
  18373.                     Γöé                  ΓööΓöÇLΓöÇΓöÿ                    Γöé
  18374.                     Γöé                                        Γöé
  18375.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18376.  
  18377.           In the format specification above, %n$ specifies the nth argument. 
  18378.  
  18379.           Each field of the format specification is a single character or a 
  18380.           number signifying a particular format option. The type character, 
  18381.           which appears after the last optional format field, determines 
  18382.           whether the input field is interpreted as a character, a string, or a 
  18383.           number. The simplest format specification contains only the percent 
  18384.           sign and a type character (for example, %s). Each field of the format 
  18385.           specification is discussed in detail below. 
  18386.  
  18387.           An asterisk (*) following the percent sign suppresses assignment of 
  18388.           the next input field, which is interpreted as a field of the 
  18389.           specified type.  The field is scanned but not stored. 
  18390.  
  18391.           The width is a positive decimal integer controlling the maximum 
  18392.           number of characters to be read from stdin.  No more than width 
  18393.           characters are converted and stored at the corresponding argument. 
  18394.           Fewer than width characters are read if a white-space character 
  18395.           (space, tab, or new line), or a character that cannot be converted 
  18396.           according to the given format occurs before width is reached. 
  18397.  
  18398.           The optional prefix l shows that you use the long version of the 
  18399.           following type, while the prefix h indicates that the short version 
  18400.           is to be used. The corresponding argument should point to a long or 
  18401.           double object (for the l character), a long double object (for the L 
  18402.           character), or a short object (with the h character). The l and h 
  18403.           modifiers can be used with the d, i, o, x, and u type characters. The 
  18404.           l modifier can also be used with the e, f, and g type characters. 
  18405.           The L modifier can be used with the e, f and g type characters. The l 
  18406.           and h modifiers are ignored if specified for any other type. Note 
  18407.           that the l modifier is also used with the c and s characters to 
  18408.           indicate a multibyte character or string. 
  18409.  
  18410.           The type characters and their meanings are in the following table: 
  18411.  
  18412.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  18413.                     Γöé Char-  Γöé Type of Input Expected.   Γöé Type of Argument.      Γöé
  18414.                     Γöé acter  Γöé               Γöé               Γöé
  18415.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18416.                     Γöé "d"   Γöé Decimal integer.       Γöé Pointer to INT.       Γöé
  18417.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18418.                     Γöé "o"   Γöé Octal integer.        Γöé Pointer to UNSIGNED INT.  Γöé
  18419.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18420.                     Γöé "x",   Γöé Hexadecimal integer.     Γöé Pointer to UNSIGNED INT.  Γöé
  18421.                     Γöé "X"   Γöé               Γöé               Γöé
  18422.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18423.                     Γöé "i"   Γöé Decimal, hexadecimal, or   Γöé Pointer to INT.       Γöé
  18424.                     Γöé     Γöé octal integer.        Γöé               Γöé
  18425.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18426.                     Γöé "u"   Γöé Unsigned decimal integer.  Γöé Pointer to UNSIGNED INT.  Γöé
  18427.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18428.                     Γöé "e, f,  Γöé Floating-point value con-  Γöé Pointer to FLOAT.      Γöé
  18429.                     Γöé g"    Γöé sisting of an optional sign Γöé               Γöé
  18430.                     Γöé     Γöé (+ or -);  a series of one  Γöé               Γöé
  18431.                     Γöé "E, G"  Γöé or more decimal digits pos- Γöé               Γöé
  18432.                     Γöé     Γöé sibly containing a decimal  Γöé               Γöé
  18433.                     Γöé     Γöé point;  and an optional   Γöé               Γöé
  18434.                     Γöé     Γöé exponent (e or E) followed  Γöé               Γöé
  18435.                     Γöé     Γöé by a possibly signed     Γöé               Γöé
  18436.                     Γöé     Γöé integer value.        Γöé               Γöé
  18437.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18438.                     Γöé "c"   Γöé Sequence of bytes;  white-  Γöé Pointer to CHAR large    Γöé
  18439.                     Γöé     Γöé space characters that are  Γöé enough for input field.   Γöé
  18440.                     Γöé     Γöé ordinarily skipped are read Γöé               Γöé
  18441.                     Γöé     Γöé when "c" is specified.    Γöé               Γöé
  18442.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18443.                     Γöé "lc, C" Γöé Multibyte characters.  The  Γöé Pointer to wchar_t large  Γöé
  18444.                     Γöé     Γöé multibyte characters are   Γöé enough for input field.   Γöé
  18445.                     Γöé     Γöé converted to wide charac-  Γöé               Γöé
  18446.                     Γöé     Γöé ters as if by a call to   Γöé               Γöé
  18447.                     Γöé     Γöé mbstowcs.  The field width  Γöé               Γöé
  18448.                     Γöé     Γöé specifies the number of   Γöé               Γöé
  18449.                     Γöé     Γöé wide characters matched; if Γöé               Γöé
  18450.                     Γöé     Γöé no width is specified, one  Γöé               Γöé
  18451.                     Γöé     Γöé multibyte character is    Γöé               Γöé
  18452.                     Γöé     Γöé matched.           Γöé               Γöé
  18453.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18454.                     Γöé "s"   Γöé Sequence of bytes that do  Γöé Pointer to char array    Γöé
  18455.                     Γöé     Γöé not include white space.   Γöé large enough for input   Γöé
  18456.                     Γöé     Γöé               Γöé field plus a terminating  Γöé
  18457.                     Γöé     Γöé               Γöé null character ("\0"),   Γöé
  18458.                     Γöé     Γöé               Γöé which is automatically   Γöé
  18459.                     Γöé     Γöé               Γöé appended.          Γöé
  18460.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18461.                     Γöé "ls, S" Γöé Multibyte string.  None of  Γöé Pointer to wchar_t array  Γöé
  18462.                     Γöé     Γöé the characters can be    Γöé large enough for the input Γöé
  18463.                     Γöé     Γöé single-byte white-space   Γöé field and the terminating  Γöé
  18464.                     Γöé     Γöé characters (as specified by Γöé null wide character     Γöé
  18465.                     Γöé     Γöé the isspace function).    Γöé ("L\0"), which is added   Γöé
  18466.                     Γöé     Γöé Each multibyte character in Γöé automatically.       Γöé
  18467.                     Γöé     Γöé the sequence is converted  Γöé               Γöé
  18468.                     Γöé     Γöé to a wide character as if  Γöé               Γöé
  18469.                     Γöé     Γöé by a call to mbstowcs.    Γöé               Γöé
  18470.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18471.                     Γöé "n"   Γöé No input read from stream  Γöé Pointer to INT into which  Γöé
  18472.                     Γöé     Γöé or buffer.          Γöé is stored the number of   Γöé
  18473.                     Γöé     Γöé               Γöé characters successfully   Γöé
  18474.                     Γöé     Γöé               Γöé read from the stream or   Γöé
  18475.                     Γöé     Γöé               Γöé buffer up to that point in Γöé
  18476.                     Γöé     Γöé               Γöé the call to scanf.     Γöé
  18477.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  18478.                     Γöé "p"   Γöé Pointer to "void" converted Γöé Pointer to "void".     Γöé
  18479.                     Γöé     Γöé to series of characters.   Γöé               Γöé
  18480.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  18481.  
  18482.           To read strings not delimited by space characters, substitute a set 
  18483.           of characters in brackets ([ ]) for the s (string) type character. 
  18484.           The corresponding input field is read up to the first character that 
  18485.           does not appear in the bracketed character set.  If the first 
  18486.           character in the set is a caret (^), the effect is reversed:  the 
  18487.           input field is read up to the first character that does appear in the 
  18488.           rest of the character set. 
  18489.  
  18490.           To store a string without storing an ending null character (\0), use 
  18491.           the specification %ac, where a is a decimal integer.  In this 
  18492.           instance, the c type character means that the argument is a pointer 
  18493.           to a character array. The next number of characters is read from the 
  18494.           input stream into the specified location, and no null character is 
  18495.           added. 
  18496.  
  18497.           The input for a %x format specifier is interpreted as a hexadecimal 
  18498.           number. 
  18499.  
  18500.           scanf scans each input field character by character.  It might stop 
  18501.           reading a particular input field either before it reaches a space 
  18502.           character, when the specified width is reached, or when the next 
  18503.           character cannot be converted as specified.  When a conflict occurs 
  18504.           between the specification and the input character, the next input 
  18505.           field begins at the first unread character.  The conflicting 
  18506.           character, if there was one, is considered unread and is the first 
  18507.           character of the next input field or the first character in 
  18508.           subsequent read operations on stdin. 
  18509.  
  18510.  Returns 
  18511.  
  18512.           scanf returns the number of fields that were successfully converted 
  18513.           and assigned.  The return value does not include fields that were 
  18514.           read but not assigned. 
  18515.  
  18516.           The return value is EOF for an attempt to read at end-of-file if no 
  18517.           conversion was performed. A return value of 0 means that no fields 
  18518.           were assigned. 
  18519.  
  18520.  Example Code 
  18521.  
  18522.           This example scans various types of data. 
  18523.  
  18524.                     #include <stdio.h>
  18525.  
  18526.                     int main(void)
  18527.                     {
  18528.                        int i;
  18529.                        float fp;
  18530.                        char c,s[81];
  18531.  
  18532.                        printf("Enter an integer, a real number, a character and a string : \n");
  18533.                        if (scanf("%d %f %c %s", &i, &fp, &c, s) != 4)
  18534.                           printf("Not all of the fields were assigned\n");
  18535.                        else {
  18536.                           printf("integer = %d\n", i);
  18537.                           printf("real number = %f\n", fp);
  18538.                           printf("character = %c\n", c);
  18539.                           printf("string = %s\n", s);
  18540.                        }
  18541.                        return 0;
  18542.  
  18543.                        /****************************************************************************
  18544.                           The output should be similar to:
  18545.  
  18546.                           Enter an integer, a real number, a character and a string :
  18547.                           12 2.5 a yes
  18548.                           integer = 12
  18549.                           real number = 2.500000
  18550.                           character = a
  18551.                           string = yes
  18552.                        ****************************************************************************/
  18553.                     }
  18554.  
  18555.           This example converts a hexadecimal integer to a decimal integer. The 
  18556.           while loop ends if the input value is not a hexadecimal integer. 
  18557.  
  18558.                     #include <stdio.h>
  18559.  
  18560.                     int main(void)
  18561.                     {
  18562.                        int number;
  18563.  
  18564.                        printf("Enter a hexadecimal number or anything else to quit:\n");
  18565.                        while (scanf("%x", &number)) {
  18566.                           printf("Hexadecimal Number = %x\n", number);
  18567.                           printf("Decimal Number     = %d\n", number);
  18568.                        }
  18569.                        return 0;
  18570.  
  18571.                        /****************************************************************************
  18572.                           The output should be similar to:
  18573.  
  18574.                           Enter a hexadecimal number or anything else to quit:
  18575.                           0x231
  18576.                           Hexadecimal Number = 231
  18577.                           Decimal Number     = 561
  18578.                           0xf5e
  18579.                           Hexadecimal Number = f5e
  18580.                           Decimal Number     = 3934
  18581.                           0x1
  18582.                           Hexadecimal Number = 1
  18583.                           Decimal Number     = 1
  18584.                           q
  18585.                        ****************************************************************************/
  18586.                     }
  18587.  
  18588.  Related Information 
  18589.  
  18590.               _cscanf 
  18591.               fscanf 
  18592.               printf 
  18593.               sscanf 
  18594.  
  18595.  
  18596. ΓòÉΓòÉΓòÉ 3.178. _searchenv - Search for File ΓòÉΓòÉΓòÉ
  18597.  
  18598. _searchenv - Search for File 
  18599.  
  18600.  Syntax 
  18601.  
  18602.                     #include <stdlib.h>
  18603.                     void _searchenv(char *name, char *env_var, char *path);
  18604.  
  18605.  Description 
  18606.  
  18607.           _searchenv searches for the target file in the specified domain.  The 
  18608.           env_var variable can be any environment variable that specifies a 
  18609.           list of directory paths, such as PATH, LIB, INCLUDE, or other 
  18610.           user-defined variables.  Most often, it is PATH, causing a search for 
  18611.           name in all directories specified in the PATH variable. 
  18612.  
  18613.           The routine first searches for the file in the current working 
  18614.           directory.  If it does not find the file, it next looks through the 
  18615.           directories specified by the environment variable. 
  18616.  
  18617.           If the target file is found in one of the directories, the 
  18618.           fully-qualified file name is copied into the buffer that path points 
  18619.           to. You must ensure sufficient space for the constructed file name. 
  18620.           If the target file is not found, path contains an empty 
  18621.           null-terminated string. 
  18622.  
  18623.  Returns 
  18624.  
  18625.           There is no return value. 
  18626.  
  18627.  Example Code 
  18628.  
  18629.           This example searches for the files searchen.c and cmd.exe. 
  18630.  
  18631.                     #include <stdio.h>
  18632.                     #include <stdlib.h>
  18633.  
  18634.                     int main(void)
  18635.                     {
  18636.                        char path_buffer[_MAX_PATH];
  18637.  
  18638.                        _searchenv("cmd.exe", "PATH", path_buffer);
  18639.                        printf("path: %s\n", path_buffer);
  18640.                        _searchenv("_searche.c", "DPATH", path_buffer);
  18641.                        printf("path: %s\n", path_buffer);
  18642.                        return 0;
  18643.  
  18644.                        /****************************************************************************
  18645.                           The output should be similar to:
  18646.  
  18647.                           path: C:\OS2\cmd.exe
  18648.                           path: C:\src\_searche.c
  18649.                        ****************************************************************************/
  18650.                     }
  18651.  
  18652.  Related Information 
  18653.  
  18654.               getenv 
  18655.               putenv 
  18656.  
  18657.  
  18658. ΓòÉΓòÉΓòÉ 3.179. setbuf - Control Buffering ΓòÉΓòÉΓòÉ
  18659.  
  18660. setbuf - Control Buffering 
  18661.  
  18662.  Syntax 
  18663.  
  18664.                     #include <stdio.h>
  18665.                     void setbuf(FILE *stream, char *buffer);
  18666.  
  18667.  Description 
  18668.  
  18669.           setbuf controls buffering for the specified stream. The stream 
  18670.           pointer must refer to an open file before any I/O or repositioning 
  18671.           has been done. 
  18672.  
  18673.           If the buffer argument is NULL, the stream is unbuffered. If not, the 
  18674.           buffer must point to a character array of length BUFSIZ, which is the 
  18675.           buffer size defined in the <stdio.h> include file. The system uses 
  18676.           the buffer, which you specify, for input/output buffering instead of 
  18677.           the default system-allocated buffer for the given stream. 
  18678.  
  18679.           setvbuf is more flexible than setbuf. 
  18680.  
  18681.           Note:  Streams are fully buffered by default, with the exceptions of 
  18682.                  stderr, which is line-buffered, and memory files, which are 
  18683.                  unbuffered. 
  18684.  
  18685.  Returns 
  18686.  
  18687.           There is no return value. 
  18688.  
  18689.  Example Code 
  18690.  
  18691.           This example opens the file setbuf.dat for writing. It then calls 
  18692.           setbuf to establish a buffer of length BUFSIZ. When string is written 
  18693.           to the stream, the buffer buf is used and contains the string before 
  18694.           it is flushed to the file. 
  18695.  
  18696.                     #include <stdio.h>
  18697.  
  18698.                     #define FILENAME  "setbuf.dat"
  18699.  
  18700.                     int main(void)
  18701.                     {
  18702.                        char buf[BUFSIZ];
  18703.                        char string[] = "hello world";
  18704.                        FILE *stream;
  18705.  
  18706.                        memset(buf, '\0', BUFSIZ);           /* initialize buf to null characters  */
  18707.                        stream = fopen(FILENAME, "wb");
  18708.                        setbuf(stream, buf);                                   /* set up buffer    */
  18709.                        fwrite(string, sizeof(string), 1, stream);
  18710.                        printf("%s\n", buf);                   /* string is found in buf now       */
  18711.                        fclose(stream);                  /* buffer is flushed out to output stream */
  18712.                        return 0;
  18713.  
  18714.                        /****************************************************************************
  18715.                           The output file should contain:
  18716.  
  18717.                           hello world
  18718.  
  18719.                           The output should be:
  18720.  
  18721.                           hello world
  18722.                        ****************************************************************************/
  18723.                     }
  18724.  
  18725.  Related Information 
  18726.  
  18727.               fclose 
  18728.               fflush 
  18729.               _flushall 
  18730.               fopen 
  18731.               setvbuf 
  18732.  
  18733.  
  18734. ΓòÉΓòÉΓòÉ 3.180. _set_crt_msg_handle - Change Run-Time Message Output Destination ΓòÉΓòÉΓòÉ
  18735.  
  18736. _set_crt_msg_handle - Change Run-Time Message Output Destination 
  18737.  
  18738.  Syntax 
  18739.  
  18740.                     #include <stdio.h>
  18741.                     int _set_crt_msg_handle(int fh);
  18742.  
  18743.  Description 
  18744.  
  18745.           _set_crt_msg_handle changes the file handle to which run-time 
  18746.           messages are sent, which is usually file handle 2, to fh. Run-time 
  18747.           messages include exception handling messages and output from debug 
  18748.           memory management routines. 
  18749.  
  18750.           Use _set_crt_msg_handle to trap run-time message output in 
  18751.           applications where handle 2 is not defined, such as Presentation 
  18752.           Manager applications. 
  18753.  
  18754.           The file handle fh must be a writable file or pipe handle. Set fh 
  18755.           only for the current library environment. 
  18756.  
  18757.  Returns 
  18758.  
  18759.           _set_crt_msg_handle returns the handle to be used for run-time 
  18760.           message output. If an handle that is not valid is passed as an 
  18761.           argument, it is ignored and no change takes place. 
  18762.  
  18763.  Example Code 
  18764.  
  18765.           This example causes an exception by dereferencing a null pointer and 
  18766.           uses _set_crt_msg_handle to send the exception messages to the file 
  18767.           _scmhdl.out. 
  18768.  
  18769.                     #include <sys\stat.h>
  18770.                     #include <io.h>
  18771.                     #include <fcntl.h>
  18772.                     #include <stdio.h>
  18773.                     #include <stdlib.h>
  18774.  
  18775.                     int main(void)
  18776.                     {
  18777.                        int   fh;
  18778.                        char  *p = NULL;
  18779.  
  18780.                        if (-1 == (fh = open("_scmhdl.out", O_CREAT|O_TRUNC|O_RDWR,
  18781.                                             S_IREAD|S_IWRITE))) {
  18782.                           perror("Unable to open the file _scmhdl.out.");
  18783.                           exit(EXIT_FAILURE);
  18784.                        }
  18785.                        /* change file handle where messages are sent */
  18786.                        if (fh != _set_crt_msg_handle(fh)) {
  18787.                           perror("Could not change massage output handle.");
  18788.                           exit(EXIT_FAILURE);
  18789.                        }
  18790.                        *p = 'x';          /* cause an exception, output should be in _scmhdl.out */
  18791.                        if (-1 == close(fh)) {
  18792.                           perror("Unable to close _scmhdl.out.");
  18793.                           exit(EXIT_FAILURE);
  18794.                        }
  18795.                        return 0;
  18796.  
  18797.                        /****************************************************************************
  18798.                           Running this program would cause an exception to occur,
  18799.                           the file _scmhdl.out should contain the exception messages similar to :
  18800.  
  18801.                           Exception = c0000005 occurred at EIP = 10068.
  18802.                        ****************************************************************************/
  18803.                     }
  18804.  
  18805.  Related Information 
  18806.  
  18807.               open 
  18808.               fileno 
  18809.               _sopen 
  18810.  
  18811.  
  18812. ΓòÉΓòÉΓòÉ 3.181. setjmp - Preserve Environment ΓòÉΓòÉΓòÉ
  18813.  
  18814. setjmp - Preserve Environment 
  18815.  
  18816.  Syntax 
  18817.  
  18818.                     #include <setjmp.h>
  18819.                     int setjmp(jmp_buf env);
  18820.  
  18821.  Description 
  18822.  
  18823.           setjmp saves a stack environment that can subsequently be restored by 
  18824.           longjmp. setjmp and longjmp provide a way to perform a nonlocal goto. 
  18825.           They are often used in signal handlers. 
  18826.  
  18827.           A call to setjmp causes it to save the current stack environment in 
  18828.           env.  A subsequent call to longjmp restores the saved environment and 
  18829.           returns control to a point corresponding to the setjmp call.  The 
  18830.           values of all variables (except register variables) accessible to the 
  18831.           function receiving control contain the values they had when longjmp 
  18832.           was called. The values of variables that are allocated to registers 
  18833.           by the compiler are unpredictable. Because any auto variable could be 
  18834.           allocated to a register in optimized code, you should consider the 
  18835.           values of all auto variables to be unpredictable after a longjmp 
  18836.           call. 
  18837.  
  18838.           C++ Considerations  When you call setjmp in a C++ program, ensure 
  18839.                               that that part of the program does not also 
  18840.                               create C++ objects that need to be destroyed. 
  18841.                               When you call longjmp, objects existing at the 
  18842.                               time of the setjmp call will still exist, but any 
  18843.                               destructors called after setjmp are not called. 
  18844.                               See longjmp for an example. 
  18845.  
  18846.  Returns 
  18847.  
  18848.           setjmp returns the value 0 after saving the stack environment. If 
  18849.           setjmp returns as a result of a longjmp call, it returns the value 
  18850.           argument of longjmp, or 1 if the value argument of longjmp is 0. 
  18851.           There is no error return value. 
  18852.  
  18853.  Example Code 
  18854.  
  18855.           This example stores the stack environment at the statement 
  18856.  
  18857.                        if(setjmp(mark) != 0) ...
  18858.  
  18859.           When the system first performs the if statement, it saves the 
  18860.           environment in mark and sets the condition to FALSE because setjmp 
  18861.           returns a 0 when it saves the environment. The program prints the 
  18862.           message 
  18863.  
  18864.                        setjmp has been called
  18865.  
  18866.           The subsequent call to function p tests for a local error condition, 
  18867.           which can cause it to perform the longjmp function. Then, control 
  18868.           returns to the original setjmp function using the environment saved 
  18869.           in mark. This time, the condition is TRUE because -1 is the return 
  18870.           value from the longjmp function. The program then performs the 
  18871.           statements in the block and prints 
  18872.  
  18873.                        longjmp has been called
  18874.  
  18875.           Then the program calls the recover function and exits. 
  18876.  
  18877.                     #include <stdio.h>
  18878.                     #include <stdlib.h>
  18879.                     #include <setjmp.h>
  18880.  
  18881.                     jmp_buf mark;
  18882.  
  18883.                     void p(void)
  18884.                     {
  18885.                        int error = 0;
  18886.  
  18887.                        error = 9;
  18888.  
  18889.                        if (error != 0)
  18890.                           longjmp(mark, -1);
  18891.                     }
  18892.  
  18893.                     void recover(void)
  18894.                     {
  18895.                     }
  18896.  
  18897.                     int main(void)
  18898.                     {
  18899.                        if (setjmp(mark) != 0) {
  18900.                           printf("longjmp has been called\n");
  18901.                           recover();
  18902.                           return 0;
  18903.                        }
  18904.                        printf("setjmp has been called\n");
  18905.  
  18906.                        p();
  18907.  
  18908.                        return 0;
  18909.  
  18910.                        /****************************************************************************
  18911.                           The output should be:
  18912.  
  18913.                           setjmp has been called
  18914.                           longjmp has been called
  18915.                        ****************************************************************************/
  18916.                     }
  18917.  
  18918.  Related Information 
  18919.  
  18920.               longjmp 
  18921.               goto in the Language Reference 
  18922.  
  18923.  
  18924. ΓòÉΓòÉΓòÉ 3.182. setlocale - Set the Locale of the Program ΓòÉΓòÉΓòÉ
  18925.  
  18926. setlocale - Set the Locale of the Program 
  18927.  
  18928.  Syntax 
  18929.  
  18930.                     #include <locale.h>
  18931.                     char *setlocale(int category, const char *locale);
  18932.  
  18933.  Description 
  18934.  
  18935.           setlocale sets or queries the specified category of the program's 
  18936.           locale. A locale is the complete definition of that part of a program 
  18937.           that depends on language and cultural conventions. 
  18938.  
  18939.           The default locale is "C". You can accept the default, or you can use 
  18940.           setlocale to set the locale to one of the supplied locales. 
  18941.  
  18942.           Note:  The locale is global to all threads in a process, therefore a 
  18943.                  multithread process should not execute the setlocale function 
  18944.                  when other threads are executing for that process.  The 
  18945.                  results are unpredictable if this occurs. 
  18946.  
  18947.           Some examples of the supplied locales as you would specify them for 
  18948.           setlocale are: 
  18949.  
  18950.                "En_GB.IBM-850" (English, Great Britain, code page 850) 
  18951.                "Fr_CA.IBM-863" (French, France, code page 863) 
  18952.                "Ja_JP.IBM-932" (Japanese, Japan, code page 932) 
  18953.  
  18954.           The result of setlocale depends on the arguments you specify: 
  18955.  
  18956.               The most general way to use setlocale is to specify a null 
  18957.                string ("") for locale, for example, setlocale (LC_ALL, ""). 
  18958.                setlocale then checks locale-related environment variables in 
  18959.                the program's environment to find a locale name or names to use 
  18960.                for category. To set a category to a specific locale, specify 
  18961.                both the category and locale names.  For example: 
  18962.  
  18963.                                  setlocale(LC_CTYPE, "fr_fr.IBM-850");
  18964.                sets the LC_CTYPE category according to the "fr_fr.IBM-850" 
  18965.                locale. The category names and their purpose are described in 
  18966.                the table below. 
  18967.  
  18968.                If locale name is not specified (NULL string), setlocale gets 
  18969.                the locale name from: 
  18970.  
  18971.                  1. LC_ALL, if it is defined and not null 
  18972.                  2. The environment variable with the same name as category, if 
  18973.                     it is defined and not null 
  18974.                  3. LANG, if it is defined and not null 
  18975.                  4. If none of these variables is defined to a valid locale 
  18976.                     name, setlocale uses the system default locale. 
  18977.  
  18978.                For example, if the LC_ALL environment variable is set to 
  18979.                "De_DE" (Germany locale): 
  18980.  
  18981.                                  setlocale(LC_TIME, "");
  18982.                sets the LC_TIME category to the "De_DE" locale. 
  18983.  
  18984.                If category is LC_ALL and locale is a null string, setlocale 
  18985.                checks the environment variables in the same order listed above. 
  18986.                However, it checks the variable for each category and sets the 
  18987.                category to the locale specified, which could be different for 
  18988.                each category.  (By contrast, if you specified LC_ALL and a 
  18989.                specific locale name, all categories would be set to the same 
  18990.                locale that you specify.) The string returned lists all the 
  18991.                locales for all the categories. 
  18992.  
  18993.               To query the locale for a category, specify a null pointer for 
  18994.                locale. setlocale then returns a string indicating the locale 
  18995.                setting for that category, without changing it. For example: 
  18996.  
  18997.                                  char *s = setlocale(LC_CTYPE, NULL);
  18998.                returns the current locale for the LC_CTYPE category. 
  18999.  
  19000.           You can set the category argument of setlocale to one of these 
  19001.           values: 
  19002.  
  19003.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  19004.                     Γöé Category   Γöé Purpose                      Γöé
  19005.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19006.                     Γöé LC_ALL    Γöé Specifies all categories associated with the pro- Γöé
  19007.                     Γöé       Γöé gram's locale.                   Γöé
  19008.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19009.                     Γöé LC_COLLATE  Γöé Affects the selection of the collation sequence;  Γöé
  19010.                     Γöé       Γöé that is, the relative order of collation elements Γöé
  19011.                     Γöé       Γöé (characters and multicharacter collation ele-   Γöé
  19012.                     Γöé       Γöé ments) in the program's locale.  The collation   Γöé
  19013.                     Γöé       Γöé sequence definition is used by regular       Γöé
  19014.                     Γöé       Γöé expression, pattern matching, and sorting func-  Γöé
  19015.                     Γöé       Γöé tions.  Affects the regular expression functions  Γöé
  19016.                     Γöé       Γöé regcomp and regexec; the string functions     Γöé
  19017.                     Γöé       Γöé strcoll, strxfrm, wcscoll, and wcsxfrm.      Γöé
  19018.                     Γöé       Γöé                          Γöé
  19019.                     Γöé       Γöé Because both LC_CTYPE and LC_COLLATE modify the  Γöé
  19020.                     Γöé       Γöé same storage area, setting LC_CTYPE and      Γöé
  19021.                     Γöé       Γöé LC_COLLATE to different categories causes unpre-  Γöé
  19022.                     Γöé       Γöé dictable results.                 Γöé
  19023.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19024.                     Γöé LC_CTYPE   Γöé Defines the selection of character classification Γöé
  19025.                     Γöé       Γöé and case conversion for characters in the pro-   Γöé
  19026.                     Γöé       Γöé gram's locale.  Affects the behavior of      Γöé
  19027.                     Γöé       Γöé character-handling functions defined in the    Γöé
  19028.                     Γöé       Γöé "<ctype.h>" header file: isalnum, isalpha,     Γöé
  19029.                     Γöé       Γöé isblank, iswblank, iscntrl, isdigit, isgraph,   Γöé
  19030.                     Γöé       Γöé islower, isprint, ispunct, isspace, isupper,    Γöé
  19031.                     Γöé       Γöé iswalnum, iswalpha, iswcntrl, iswctype, iswdigit, Γöé
  19032.                     Γöé       Γöé iswgraph, iswlower, iswprint, iswpunct, iswspace, Γöé
  19033.                     Γöé       Γöé iswupper, iswxdigit, isxdigit, tolower, toupper,  Γöé
  19034.                     Γöé       Γöé towlower, towupper, and wctype.          Γöé
  19035.                     Γöé       Γöé                          Γöé
  19036.                     Γöé       Γöé Affects behavior of the printf and scanf families Γöé
  19037.                     Γöé       Γöé of functions: fprintf, printf, sprintf, vfprintf, Γöé
  19038.                     Γöé       Γöé vprintf, vsprintf, fscanf, scanf, and sscanf.   Γöé
  19039.                     Γöé       Γöé                          Γöé
  19040.                     Γöé       Γöé Affects the behavior of wide character       Γöé
  19041.                     Γöé       Γöé input/output functions: fgetwc, fgetws, getwc,   Γöé
  19042.                     Γöé       Γöé getwchar, fputwc, fputws, putwc, putwchar, and   Γöé
  19043.                     Γöé       Γöé ungetwc.                      Γöé
  19044.                     Γöé       Γöé                          Γöé
  19045.                     Γöé       Γöé Affects the behavior of multibyte and wide char-  Γöé
  19046.                     Γöé       Γöé acter conversion functions: mblen, mbstowcs,    Γöé
  19047.                     Γöé       Γöé mbtowc, wcstod, wcstol, wcstombs, wcstoul,     Γöé
  19048.                     Γöé       Γöé wcswidth, wctomb, and wcwidth.           Γöé
  19049.                     Γöé       Γöé                          Γöé
  19050.                     Γöé       Γöé Because both LC_CTYPE and LC_COLLATE modify the  Γöé
  19051.                     Γöé       Γöé same storage area, setting LC_CTYPE and      Γöé
  19052.                     Γöé       Γöé LC_COLLATE to different categories causes unpre-  Γöé
  19053.                     Γöé       Γöé dictable results.                 Γöé
  19054.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19055.                     Γöé LC_MESSAGES Γöé Affects the language of the messages.  The     Γöé
  19056.                     Γöé       Γöé setting is used by catopen, catgets, and      Γöé
  19057.                     Γöé       Γöé catclose.  Affects the values returned by     Γöé
  19058.                     Γöé       Γöé nl_langinfo and also defines affirmative and neg- Γöé
  19059.                     Γöé       Γöé ative response patterns.              Γöé
  19060.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19061.                     Γöé LC_MONETARY Γöé Affects monetary information returned by      Γöé
  19062.                     Γöé       Γöé localeconv and strfmon.  It defines the rules and Γöé
  19063.                     Γöé       Γöé symbols used to format monetary numeric informa-  Γöé
  19064.                     Γöé       Γöé tion in the program's locale.  The formatting   Γöé
  19065.                     Γöé       Γöé rules and symbols are strings.  localeconv     Γöé
  19066.                     Γöé       Γöé returns pointers to these strings with names    Γöé
  19067.                     Γöé       Γöé found in the "<locale.h>" header file.       Γöé
  19068.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19069.                     Γöé LC_NUMERIC  Γöé Affects the decimal-point character for the for-  Γöé
  19070.                     Γöé       Γöé matted input/output and string conversion func-  Γöé
  19071.                     Γöé       Γöé tions, and the nonmonetary formatting information Γöé
  19072.                     Γöé       Γöé returned by the localeconv function,        Γöé
  19073.                     Γöé       Γöé specifically:                   Γöé
  19074.                     Γöé       Γöé                          Γöé
  19075.                     Γöé       Γöé printf family of functions             Γöé
  19076.                     Γöé       Γöé scanf family of functions             Γöé
  19077.                     Γöé       Γöé strtod                       Γöé
  19078.                     Γöé       Γöé atof.                       Γöé
  19079.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  19080.                     Γöé LC_TIME   Γöé Affects time and date format information in the  Γöé
  19081.                     Γöé       Γöé program's locale, for the strftime, strptime, and Γöé
  19082.                     Γöé       Γöé wcsftime functions.                Γöé
  19083.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  19084.  
  19085.  Returns 
  19086.  
  19087.           setlocale returns a string that specifies the locale for the 
  19088.           category. If you specified "" for locale, the string names the 
  19089.           current locale that has been configured; otherwise, it indicates the 
  19090.           new locale that the category was set to. 
  19091.  
  19092.           If you specified LC_ALL for category, the returned string can be 
  19093.           either a single locale name or a list of the locale names for each 
  19094.           category in the following order: 
  19095.  
  19096.             1. LC_COLLATE 
  19097.             2. LC_CTYPE 
  19098.             3. LC_NUMERIC 
  19099.             4. LC_MONETARY 
  19100.             5. LC_TIME 
  19101.             6. LC_MESSAGES 
  19102.  
  19103.           The string can be used on a subsequent call to restore that part of 
  19104.           the program's locale. Because the returned string can be overwritten 
  19105.           by subsequent calls to setlocale, you should copy the string if you 
  19106.           plan to use it later. 
  19107.  
  19108.           If an error occurs, setlocale returns NULL and does not alter the 
  19109.           program's locale.  Errors can occur if the category or locale is not 
  19110.           valid, or if the value of the environment variable for a category 
  19111.           does not contain a valid locale. 
  19112.  
  19113.  Example Code 
  19114.  
  19115.           This example sets the locale of the program to be "fr_fr.ibm-850" and 
  19116.           prints the string that is associated with the locale. 
  19117.  
  19118.                     #include <stdio.h>
  19119.                     #include <locale.h>
  19120.  
  19121.                     int main(void)
  19122.                     {
  19123.                        char *string;
  19124.  
  19125.                        if (NULL == (string = setlocale(LC_ALL, "fr_fr.ibm-850")))
  19126.                           printf("setlocale failed.\n");
  19127.                        else
  19128.                           printf("The current locale is set to %s.\n", string);
  19129.                        return 0;
  19130.  
  19131.                        /****************************************************************************
  19132.                           The output should be similar to :
  19133.  
  19134.                           The current locale is set to fr_fr.ibm-850.
  19135.                        ****************************************************************************/
  19136.                     }
  19137.  
  19138.           This example uses setenv to set the value of the environment variable 
  19139.           LC_TIME to FRAN, calls setlocale to set all categories to default 
  19140.           values, then query all categories, and uses printf to print results. 
  19141.  
  19142.                     #include <locale.h>
  19143.                     #include <stdio.h>
  19144.  
  19145.                     int main(void)
  19146.                     {
  19147.                        char *string;
  19148.  
  19149.                        if (NULL == (string = setlocale(LC_TIME, "fr_fr")))
  19150.                           printf("setlocale failed.\n");
  19151.                        else
  19152.                           printf("The current locale categories are: \"%s\"\n", string);
  19153.                        return 0;
  19154.  
  19155.                        /****************************************************************************
  19156.                           Assuming that the default setting is en_us, the output should be similar to :
  19157.  
  19158.                           The current locale categories are: "en_us en_us en_us en_us fr_fr en_us"
  19159.                        ****************************************************************************/
  19160.                     }
  19161.  
  19162.  Related Information 
  19163.  
  19164.               "Introduction to Locale" in the Programming Guide 
  19165.               getenv 
  19166.               localeconv 
  19167.  
  19168.  
  19169. ΓòÉΓòÉΓòÉ 3.183. _setmode - Set File Translation Mode ΓòÉΓòÉΓòÉ
  19170.  
  19171. _setmode - Set File Translation Mode 
  19172.  
  19173.  Syntax 
  19174.  
  19175.                     #include <fcntl.h>
  19176.                     #include <io.h>
  19177.                     int _setmode(int handle, int mode);
  19178.  
  19179.  Description 
  19180.  
  19181.           _setmode sets the translation mode of the file given by handle to 
  19182.           mode. The mode must be one of the values in the following table: 
  19183.           compact break=fit. 
  19184.  
  19185.           Value          Meaning 
  19186.  
  19187.           O_TEXT         Sets the translated text mode.  Carriage-return 
  19188.                          line-feed combinations are translated into a single 
  19189.                          line feed on input. Line-feed characters are 
  19190.                          translated into carriage-return line-feed combinations 
  19191.                          on output. 
  19192.  
  19193.           O_BINARY       Sets the binary (untranslated) mode.  The above 
  19194.                          translations are suppressed. 
  19195.  
  19196.           Use _setmode to change the translation mode of a file handle. The 
  19197.           translation mode only affects the read and write functions. _setmode 
  19198.           does not affect the translation mode of streams. 
  19199.  
  19200.           If a file handle is acquired other than by a call to open, creat, 
  19201.           _sopen or fileno, you should call _setmode for that file handle 
  19202.           before using it within the read or write functions. 
  19203.  
  19204.  Returns 
  19205.  
  19206.           _setmode returns the previous translation mode if successful. A 
  19207.           return value of -1 indicates an error, and errno is set to one of the 
  19208.           following values:  compact break=fit. 
  19209.  
  19210.           Value          Meaning 
  19211.  
  19212.           EBADF          The file handle is not a handle for an open file. 
  19213.  
  19214.           EINVAL         Incorrect mode (neither O_TEXT nor O_BINARY) 
  19215.  
  19216.  Example Code 
  19217.  
  19218.           This example uses open to create the file setmode.dat and writes to 
  19219.           it.  The program then uses _setmode to change the translation mode of 
  19220.           setmode.dat from binary to text. 
  19221.  
  19222.                     #include <stdio.h>
  19223.                     #include <stdlib.h>
  19224.                     #include <fcntl.h>
  19225.                     #include <io.h>
  19226.                     #include <sys\stat.h>
  19227.  
  19228.                     #define  FILENAME      "setmode.dat"
  19229.  
  19230.                     /* routine to validate return codes                                           */
  19231.  
  19232.                     void ckrc(int rc)
  19233.                     {
  19234.                        if (-1 == rc) {
  19235.                           printf("Unexpected return code = -1\n");
  19236.                           remove(FILENAME);
  19237.                           exit(EXIT_FAILURE);
  19238.                        }
  19239.                     }
  19240.  
  19241.                     int main(void)
  19242.                     {
  19243.                        int h;
  19244.                        int xfer;
  19245.                        int mode;
  19246.                        char rbuf[256];
  19247.                        char wbuf[] = "123\n456\n";
  19248.  
  19249.                        ckrc(h = open(FILENAME, O_CREAT|O_RDWR|O_TRUNC|O_TEXT, S_IREAD|S_IWRITE));
  19250.                        ckrc(write(h, wbuf, sizeof(wbuf)));     /* write the file (text)           */
  19251.                        ckrc(lseek(h, 0, SEEK_SET));         /* seek back to the start of the file */
  19252.                        ckrc(xfer = read(h, rbuf, 5));           /* read the file text             */
  19253.                        printf("Read in %d characters (4 expected)\n", xfer);
  19254.                        ckrc(mode = _setmode(h, O_BINARY));
  19255.                        if (O_TEXT == mode)
  19256.                           printf("Mode changed from binary to text\n");
  19257.                        else
  19258.                           printf("Previous mode was not text (unexpected)\n");
  19259.                        ckrc(xfer = read(h, rbuf, 5));           /* read the file (binary)         */
  19260.                        printf("Read in %d characters (5 expected)\n", xfer);
  19261.                        ckrc(close(h));
  19262.                        remove(FILENAME);
  19263.                        return 0;
  19264.  
  19265.                        /****************************************************************************
  19266.                           The output should be:
  19267.  
  19268.                           Read in 4 characters (4 expected)
  19269.                           Mode changed from binary to text
  19270.                           Read in 5 characters (5 expected)
  19271.                        ****************************************************************************/
  19272.                     }
  19273.  
  19274.  Related Information 
  19275.  
  19276.               creat 
  19277.               open 
  19278.               _sopen 
  19279.               read 
  19280.               write 
  19281.  
  19282.  
  19283. ΓòÉΓòÉΓòÉ 3.184. setvbuf - Control Buffering ΓòÉΓòÉΓòÉ
  19284.  
  19285. setvbuf - Control Buffering 
  19286.  
  19287.  Syntax 
  19288.  
  19289.                     #include <stdio.h>
  19290.                     int setvbuf(FILE *stream, char *buf, int type, size_t size);
  19291.  
  19292.  Description 
  19293.  
  19294.           setvbuf allows control over the buffering strategy and buffer size 
  19295.           for a specified stream. The stream must refer to a file that has been 
  19296.           opened, but not read or written to. The array pointed to by buf 
  19297.           designates an area that you provide that the C library may choose to 
  19298.           use as a buffer for the stream.  A buf value of NULL indicates that 
  19299.           no such area is supplied and that the C library is to assume 
  19300.           responsibility for managing its own buffers for the stream.  If you 
  19301.           supply a buffer, it must exist until the stream is closed. 
  19302.  
  19303.           The type must be one of the following:  compact break=fit. 
  19304.  
  19305.           Value       Meaning 
  19306.  
  19307.           _IONBF      No buffer is used. 
  19308.  
  19309.           _IOFBF      Full buffering is used for input and output. Use buf as 
  19310.                       the buffer and size as the size of the buffer. 
  19311.  
  19312.           _IOLBF      Line buffering is used. The buffer is flushed when a 
  19313.                       new-line character is written, when the buffer is full, 
  19314.                       or when input is requested. 
  19315.  
  19316.           If type is _IOFBF or _IOLBF, size is the size of the supplied buffer. 
  19317.           If buf is NULL, the C library takes size as the suggested size for 
  19318.           its own buffer.  If type is _IONBF, both buf and size are ignored. 
  19319.  
  19320.           The value for size must be greater than 0. 
  19321.  
  19322.  Returns 
  19323.  
  19324.           setvbuf returns 0 if successful. It returns nonzero if an invalid 
  19325.           value was specified in the parameter list, or if the request cannot 
  19326.           be performed. 
  19327.  
  19328.           Warning: The array used as the buffer must still exist when the 
  19329.           specified stream is closed. For example, if the buffer is declared 
  19330.           within the scope of a function block, the stream must be closed 
  19331.           before the function is terminated and frees the storage allocated to 
  19332.           the buffer. 
  19333.  
  19334.  Example Code 
  19335.  
  19336.           This example sets up a buffer of buf for stream1 and specifies that 
  19337.           input to stream2 is to be unbuffered. 
  19338.  
  19339.                     #include <stdio.h>
  19340.                     #include <stdlib.h>
  19341.  
  19342.                     #define  BUF_SIZE      1024
  19343.                     #define  FILE1         "setvbuf1.dat"
  19344.                     #define  FILE2         "setvbuf2.dat"
  19345.  
  19346.                     char buf[BUF_SIZE];
  19347.                     FILE *stream1,*stream2;
  19348.  
  19349.                     int main(void)
  19350.                     {
  19351.                        int flag = EXIT_SUCCESS;
  19352.  
  19353.                        stream1 = fopen(FILE1, "r");
  19354.                        stream2 = fopen(FILE2, "r");
  19355.  
  19356.                        /* stream1 uses a user-assigned buffer of BUF_SIZE bytes                   */
  19357.  
  19358.                        if (setvbuf(stream1, buf, _IOFBF, sizeof(buf)) != 0) {
  19359.                           printf("Incorrect type or size of buffer\n");
  19360.                           flag = EXIT_FAILURE;
  19361.                        }
  19362.  
  19363.                        /* stream2 is unbuffered                                                   */
  19364.  
  19365.                        if (setvbuf(stream2, NULL, _IONBF, 0) != 0) {
  19366.                           printf("Incorrect type or size of buffer\n");
  19367.                           flag = EXIT_FAILURE;
  19368.                        }
  19369.  
  19370.                        fclose(stream1);
  19371.                        fclose(stream2);
  19372.                        return  flag;
  19373.                     }
  19374.  
  19375.  Related Information 
  19376.  
  19377.               fclose 
  19378.               fflush 
  19379.               _flushall 
  19380.               fopen 
  19381.               setbuf 
  19382.  
  19383.  
  19384. ΓòÉΓòÉΓòÉ 3.185. signal - Handle Interrupt Signals ΓòÉΓòÉΓòÉ
  19385.  
  19386. signal - Handle Interrupt Signals 
  19387.  
  19388.  Syntax 
  19389.  
  19390.                     #include <signal.h>
  19391.                     void ( *signal(int sig, void (*sig_handler)(int)) )(int);
  19392.  
  19393.  Description 
  19394.  
  19395.           signal function assigns the signal handler sig_handler to handle the 
  19396.           interrupt signal sig. Signals can be reported as a result of a 
  19397.           machine interrupt (for example, division by zero) or by an explicit 
  19398.           request to report a signal by using the raise function. 
  19399.  
  19400.           The sig argument must be one of the signal constants defined in 
  19401.           <signal.h>:  compact break=fit. 
  19402.  
  19403.           Value           Meaning 
  19404.  
  19405.           SIGABRT         Abnormal termination signal sent by abort. Default 
  19406.                           action: end the program. 
  19407.  
  19408.           SIGBREAK        Ctrl-Break signal. Default action: end the program. 
  19409.  
  19410.           SIGFPE          Floating-point exceptions that are not masked, such 
  19411.                           as overflow, division by zero, and invalid operation. 
  19412.                           Default action: end the program and provide an error 
  19413.                           message. If machine-state dumps are enabled, a dump 
  19414.                           is also provided. 
  19415.  
  19416.           SIGILL          Instruction not allowed.  Default action: end the 
  19417.                           program and provide an error message. If 
  19418.                           machine-state dumps are enabled, a dump is also 
  19419.                           provided. 
  19420.  
  19421.           SIGINT          Ctrl-C signal. Default action: end the program. 
  19422.  
  19423.           SIGSEGV         Access to memory not valid. Default action: end the 
  19424.                           program and provide an error message. If 
  19425.                           machine-state dumps are enabled, a dump is also 
  19426.                           provided. 
  19427.  
  19428.           SIGTERM         Program termination signal sent by the user. Default 
  19429.                           action: end the program. 
  19430.  
  19431.           SIGUSR1         Defined by the user. Default action: ignore the 
  19432.                           signal. 
  19433.  
  19434.           SIGUSR2         Defined by the user. Default action: ignore the 
  19435.                           signal. 
  19436.  
  19437.           SIGUSR3         Defined by the user. Default action: ignore the 
  19438.                           signal. 
  19439.  
  19440.           For sig_handler, you must specify either the SIG_DFL or SIG_IGN 
  19441.           constant (also defined in <signal.h>), or the address of a function 
  19442.           that takes an integer argument (the signal). The action taken when 
  19443.           the interrupt signal is received depends on the value of sig_handler: 
  19444.  
  19445.           Value           Meaning 
  19446.  
  19447.           SIG_DFL         Perform the default action. This is the initial 
  19448.                           setting for all signals. The default actions are 
  19449.                           described in the list of signals above. All files 
  19450.                           controlled by the process are closed, but buffers are 
  19451.                           not flushed. 
  19452.  
  19453.           SIG_IGN         Ignore the interrupt signal. 
  19454.  
  19455.           sig_handler     Call the function sig_handler, which you provide, to 
  19456.                           handle the signal specified. 
  19457.  
  19458.           Your signal handler function (sig_handler) must take two integer 
  19459.           arguments. The first argument is always the signal identifier. The 
  19460.           second argument is 0, unless the signal is SIG_FPE. For SIG_FPE 
  19461.           signals, the second argument passed is a floating-point error signal 
  19462.           as defined in <float.h>. If your sig_handler returns, the calling 
  19463.           process resumes running immediately following the point at which it 
  19464.           received the interrupt signal. 
  19465.  
  19466.           After a signal is reported and the sig_handler is called, signal 
  19467.           handling for that signal is reset to the default. Depending on the 
  19468.           purpose of the signal handler, you may want to call signal inside 
  19469.           sig_handler to reestablish sig_handler as the signal handler. You can 
  19470.           also reset the default handling at any time by calling signal and 
  19471.           specifying SIG_DFL. 
  19472.  
  19473.           Signals and signal handlers are not shared between threads. If you do 
  19474.           not establish a handler for a specific signal within a thread, the 
  19475.           default signal handling is used regardless of what handlers you may 
  19476.           have established in other concurrent threads. 
  19477.  
  19478.           Note:  If an exception occurs in a math or critical library function, 
  19479.                  it is handled by The Developer's Toolkit exception handler. 
  19480.                  Your sig_handler will not be called. For more information 
  19481.                  about signals and exceptions, refer to "Signal and OS/2 
  19482.                  Exception Handling" in the Programming Guide. 
  19483.  
  19484.  Returns 
  19485.  
  19486.           All calls to signal return the address of the previous handler for 
  19487.           the re-assigned signal. 
  19488.  
  19489.           A return value of SIG_ERR (defined in <signal.h>) indicates an error, 
  19490.           and errno is set to EINVAL. The possible causes of the error are an 
  19491.           incorrect sig value or an undefined value for sig_handler. 
  19492.  
  19493.  Example Code 
  19494.  
  19495.           In the following example, the call to signal in main establishes the 
  19496.           function handler to process the interrupt signal raised by abort. The 
  19497.           handler prints a message and returns to the system. 
  19498.  
  19499.                     #define INCL_DOSFILEMGR
  19500.                     #include <os2.h>
  19501.                     #include <signal.h>
  19502.                     #include <stdio.h>
  19503.                     #include <stdlib.h>
  19504.                     #include <string.h>
  19505.  
  19506.                     void handler(int sig)
  19507.                     {
  19508.                        UCHAR FileData[100];
  19509.                        ULONG Wrote;
  19510.  
  19511.                        strcpy(FileData, "Signal occurred.\n\r");
  19512.                        DosWrite(2, (PVOID)FileData, strlen(FileData), &Wrote);
  19513.                     }
  19514.  
  19515.                     int main(void)
  19516.                     {
  19517.                        if (SIG_ERR == signal(SIGABRT, handler)) {
  19518.                           perror("Could not set SIGABRT");
  19519.                           return EXIT_FAILURE;
  19520.                        }
  19521.                        abort();                             /* signal raised by abort             */
  19522.                        return 0;                            /* code should not reach here         */
  19523.  
  19524.                        /****************************************************************************
  19525.                           The output should be:
  19526.  
  19527.                           Signal occurred.
  19528.                        ****************************************************************************/
  19529.                     }
  19530.  
  19531.  Related Information 
  19532.  
  19533.               abort 
  19534.               atexit 
  19535.               exit 
  19536.               _exit 
  19537.               raise 
  19538.               _spawnl - _spawnvpe 
  19539.               "Signal and OS/2 Exception Handling" in the Programming Guide 
  19540.  
  19541.  
  19542. ΓòÉΓòÉΓòÉ 3.186. sin - Calculate Sine ΓòÉΓòÉΓòÉ
  19543.  
  19544. sin - Calculate Sine 
  19545.  
  19546.  Syntax 
  19547.  
  19548.                     #include <math.h>
  19549.                     double sin(double x);
  19550.  
  19551.  Description 
  19552.  
  19553.           sin calculates the sine of x, with x expressed in radians. If x is 
  19554.           too large, a partial loss of significance in the result may occur. 
  19555.  
  19556.  Returns 
  19557.  
  19558.           sin returns the value of the sine of x. 
  19559.  
  19560.  Example Code 
  19561.  
  19562.           This example computes y as the sine of pi/2. 
  19563.  
  19564.                     #include <math.h>
  19565.  
  19566.                     int main(void)
  19567.                     {
  19568.                        double pi,x,y;
  19569.  
  19570.                        pi = 3.1415926535;
  19571.                        x = pi/2;
  19572.                        y = sin(x);
  19573.                        printf("sin( %lf ) = %lf\n", x, y);
  19574.                        return 0;
  19575.  
  19576.                        /****************************************************************************
  19577.                           The output should be:
  19578.  
  19579.                           sin( 1.570796 ) = 1.000000
  19580.                        ****************************************************************************/
  19581.                     }
  19582.  
  19583.  Related Information 
  19584.  
  19585.               asin 
  19586.               cos 
  19587.               sinh 
  19588.               tan 
  19589.  
  19590.  
  19591. ΓòÉΓòÉΓòÉ 3.187. sinh - Calculate Hyperbolic Sine ΓòÉΓòÉΓòÉ
  19592.  
  19593. sinh - Calculate Hyperbolic Sine 
  19594.  
  19595.  Syntax 
  19596.  
  19597.                     #include <math.h>
  19598.                     double sinh(double x);
  19599.  
  19600.  Description 
  19601.  
  19602.           sinh calculates the hyperbolic sine of x, with x expressed in 
  19603.           radians. 
  19604.  
  19605.  Returns 
  19606.  
  19607.           sinh returns the value of the hyperbolic sine of x. If the result is 
  19608.           too large, sinh sets errno to ERANGE and returns the value HUGE_VAL 
  19609.           (positive or negative, depending on the value of x). 
  19610.  
  19611.  Example Code 
  19612.  
  19613.           This example computes y as the hyperbolic sine of pi/2. 
  19614.  
  19615.                     #include <math.h>
  19616.  
  19617.                     int main(void)
  19618.                     {
  19619.                        double pi,x,y;
  19620.  
  19621.                        pi = 3.1415926535;
  19622.                        x = pi/2;
  19623.                        y = sinh(x);
  19624.                        printf("sinh( %lf ) = %lf\n", x, y);
  19625.                        return 0;
  19626.  
  19627.                        /****************************************************************************
  19628.                           The output should be:
  19629.  
  19630.                           sinh( 1.570796 ) = 2.301299
  19631.                        ****************************************************************************/
  19632.                     }
  19633.  
  19634.  Related Information 
  19635.  
  19636.               asin 
  19637.               cosh 
  19638.               sin 
  19639.               tanh 
  19640.  
  19641.  
  19642. ΓòÉΓòÉΓòÉ 3.188. _sopen - Open Shared File ΓòÉΓòÉΓòÉ
  19643.  
  19644. _sopen - Open Shared File 
  19645.  
  19646.  Syntax 
  19647.  
  19648.                     #include <fcntl.h>
  19649.                     #include <sys\stat.h>
  19650.                     #include <share.h>
  19651.                     #include <io.h>
  19652.                     int _sopen(char *pathname, int oflag, int shflag, int pmode);
  19653.  
  19654.  Description 
  19655.  
  19656.           _sopen opens the file specified by pathname and prepares the file for 
  19657.           subsequent shared reading or writing as defined by oflag and shflag. 
  19658.           The oflag is an integer expression formed by combining one or more of 
  19659.           the constants defined in <fcntl.h>. When more than one constant is 
  19660.           given, the constants are joined with the OR operator (|).  compact 
  19661.           break=fit. 
  19662.  
  19663.           Oflag          Meaning 
  19664.  
  19665.           O_APPEND       Reposition the file pointer to the end of the file 
  19666.                          before every write operation. 
  19667.  
  19668.           O_CREAT        Create and open a new file.  This flag has no effect 
  19669.                          if the file specified by pathname exists. 
  19670.  
  19671.           O_EXCL         Return an error value if the file specified by 
  19672.                          pathname exists. This flag applies only when used with 
  19673.                          O_CREAT. 
  19674.  
  19675.           O_RDONLY       Open the file for reading only.  If this flag is 
  19676.                          given, neither O_RDWR nor O_WRONLY can be given. 
  19677.  
  19678.           O_RDWR         Open the file for both reading and writing.  If this 
  19679.                          flag is given, neither O_RDONLY nor O_WRONLY can be 
  19680.                          given. 
  19681.  
  19682.           O_TRUNC        Open and truncate an existing file to 0 length. The 
  19683.                          file must have write permission. The contents of the 
  19684.                          file are destroyed. On the OS/2 operating system, do 
  19685.                          not specify O_TRUNC with O_RDONLY. 
  19686.  
  19687.           O_WRONLY       Open the file for writing only.  If this flag is 
  19688.                          given, neither O_RDONLY nor O_RDWR can be given. 
  19689.  
  19690.           O_BINARY       Open the file in binary (untranslated) mode. 
  19691.  
  19692.           O_TEXT         Open the file in text (translated) mode. (See "Stream 
  19693.                          Processing" in the Programming Guide for a description 
  19694.                          of text and binary mode.) 
  19695.  
  19696.           The shflag argument is one of the following constants, defined in 
  19697.           <share.h>:  compact break=fit. 
  19698.  
  19699.           Shflag          Meaning 
  19700.  
  19701.           SH_DENYRW       Deny read and write access to file. 
  19702.  
  19703.           SH_DENYWR       Deny write access to file. 
  19704.  
  19705.           SH_DENYRD       Deny read access to file. 
  19706.  
  19707.           SH_DENYNO       Permit read and write access. 
  19708.  
  19709.           There is no default value for the shflag. 
  19710.  
  19711.           The pmode argument is required only when you specify O_CREAT. If the 
  19712.           file does not exist, pmode specifies the permission settings of the 
  19713.           file, which are set when the new file is closed for the first time. 
  19714.           If the file exists, the value of pmode is ignored. The pmode must be 
  19715.           one of the following values, defined in <sys\stat.h>:  compact 
  19716.           break=fit. 
  19717.  
  19718.           Value                   Meaning 
  19719.  
  19720.           S_IWRITE                Writing permitted 
  19721.  
  19722.           S_IREAD                 Reading permitted 
  19723.  
  19724.           S_IREAD | S_IWRITE      Reading and writing permitted. 
  19725.  
  19726.           If write permission is not given, the file is read-only. On the OS/2 
  19727.           operating system, all files are readable; you cannot give write-only 
  19728.           permission.  Thus, the modes S_IWRITE and S_IREAD | S_IWRITE are 
  19729.           equivalent. Specifying a pmode of S_IREAD is similar to making a file 
  19730.           read-only with the ATTRIB system command. 
  19731.  
  19732.           _sopen applies the current file permission mask to pmode before 
  19733.           setting the permissions. (See umask for information on file 
  19734.           permission masks.) 
  19735.  
  19736.  Returns 
  19737.  
  19738.           _sopen returns a file handle for the opened file. A return value of 
  19739.           -1 indicates an error, and errno is set to one of the following 
  19740.           values:  compact break=fit. 
  19741.  
  19742.           Value         Meaning 
  19743.  
  19744.           EACCESS       The given path name is a directory, but the file is 
  19745.                         read-only and at attempt was made to open if for 
  19746.                         writing, or a sharing violation occurred. 
  19747.  
  19748.           EEXIST        The O_CREAT and O_EXCL flags are specified, but the 
  19749.                         named file already exists. 
  19750.  
  19751.           EMFILE        No more file handles are available. 
  19752.  
  19753.           ENOENT        The file or path name was not found. 
  19754.  
  19755.           EINVAL        An incorrect argument was passed. 
  19756.  
  19757.           EOS2ERR       The call to the operating system was not successful. 
  19758.  
  19759.  Example Code 
  19760.  
  19761.           This example opens the file sopen.dat for shared reading and writing 
  19762.           using _sopen. It then opens the file for shared reading. 
  19763.  
  19764.                     #include <io.h>
  19765.                     #include <stdio.h>
  19766.                     #include <stdlib.h>
  19767.                     #include <fcntl.h>
  19768.                     #include <share.h>
  19769.  
  19770.                     #define FILENAME "sopen.dat"
  19771.  
  19772.                     int main(void)
  19773.                     {
  19774.                        int fh1,fh2;
  19775.  
  19776.                        printf("Creating file.\n");
  19777.                        system("echo Sample Program > " FILENAME);
  19778.  
  19779.                        /* share open the file for reading and writing                            */
  19780.                        if (-1 == (fh1 = _sopen(FILENAME, O_RDWR, SH_DENYNO))) {
  19781.                           perror("sopen failed");
  19782.                           remove(FILENAME);
  19783.                           return EXIT_FAILURE;
  19784.                        }
  19785.                        /* share open the file for reading only                                   */
  19786.                        if (-1 == (fh2 = _sopen(FILENAME, O_RDONLY, SH_DENYNO))) {
  19787.                           perror("sopen failed");
  19788.                           close(fh1);
  19789.                           remove(FILENAME);
  19790.                           return EXIT_FAILURE;
  19791.                        }
  19792.                        printf("File successfully opened for sharing.\n");
  19793.                        close(fh1);
  19794.                        close(fh2);
  19795.                        remove(FILENAME);
  19796.                        return 0;
  19797.  
  19798.                        /****************************************************************************
  19799.                           The output should be:
  19800.  
  19801.                           Creating file.
  19802.                           File successfully opened for sharing.
  19803.                        ****************************************************************************/
  19804.                     }
  19805.  
  19806.  Related Information 
  19807.  
  19808.               close 
  19809.               creat 
  19810.               open 
  19811.               fdopen 
  19812.               fopen 
  19813.               _sopen 
  19814.               umask 
  19815.  
  19816.  
  19817. ΓòÉΓòÉΓòÉ 3.189. _spawnl - _spawnvpe - Start and Run Child Processes ΓòÉΓòÉΓòÉ
  19818.  
  19819. _spawnl - _spawnvpe - Start and Run Child Processes 
  19820.  
  19821.  Syntax 
  19822.  
  19823.                     #include <process.h>
  19824.                     int _spawnl(int modeflag, char *pathname, char *arg0, char *arg1, ...,
  19825.                                   char *argn, NULL);
  19826.                     int _spawnlp(int modeflag, char *pathname, char *arg0, char *arg1, ...,
  19827.                                   char *argn, NULL);
  19828.                     int _spawnle(int modeflag, char *pathname, char *arg0, char *arg1, ...,
  19829.                                   char *argn, NULL, char *envp[ ]);
  19830.                     int _spawnlpe(int modeflag, char *pathname, char *arg0, char *arg1, ...,
  19831.                                   char *argn, NULL, char *envp[ ]);
  19832.                     int _spawnv(int modeflag, char *pathname, char *argv[ ]);
  19833.                     int _spawnvp(int modeflag, char *pathname, char *argv[ ]);
  19834.                     int _spawnve(int modeflag, char *pathname, char *argv[ ], char *envp[ ]);
  19835.                     int _spawnvpe(int modeflag, char *pathname, char *argv[ ], char *envp[ ])
  19836.  
  19837.  Description 
  19838.  
  19839.           Each of the _spawn functions creates and runs a new child process. 
  19840.           Enough storage must be available for loading and running the child 
  19841.           process. All of the _spawn functions are versions of the same 
  19842.           routine; the letters at the end determine the specific variation: 
  19843.           compact break=fit. 
  19844.  
  19845.           Letter    Variation 
  19846.  
  19847.            p        Uses PATH environment variable to find the file to be run 
  19848.  
  19849.            l        Lists command-line arguments separately 
  19850.  
  19851.            v        Passes to the child process an array of pointers to 
  19852.                     command-line arguments 
  19853.  
  19854.            e        Passes to the child process an array of pointers to 
  19855.                     environment strings. 
  19856.  
  19857.           The modeflag argument determines the action taken by the parent 
  19858.           process before and during the _spawn. The values for modeflag are 
  19859.           defined in <process.h>:  compact break=fit. 
  19860.  
  19861.           Value          Meaning 
  19862.  
  19863.           P_WAIT         Suspend the parent process until the child process is 
  19864.                          complete. 
  19865.  
  19866.           P_NOWAIT       Continue to run the parent process concurrently. 
  19867.  
  19868.           P_OVERLAY      Start the child process, and then, if successful, end 
  19869.                          the parent process.  (This has the same effect as exec 
  19870.                          calls.) 
  19871.  
  19872.           The pathname argument specifies the file to run as the child process. 
  19873.           The pathname can specify a full path (from the root), a partial path 
  19874.           (from the current working directory), or just a file name.  If 
  19875.           pathname does not have a file-name extension or end with a period, 
  19876.           the _spawn functions add the extension .EXE and search for the file. 
  19877.           If pathname has an extension, only that extension is used.  If 
  19878.           pathname ends with a period, the _spawn functions search for pathname 
  19879.           with no extension. The _spawnlp, _spawnlpe, _spawnvp, and _spawnvpe 
  19880.           functions search for pathname (using the same procedures) in the 
  19881.           directories specified by the PATH environment variable. 
  19882.  
  19883.           You pass arguments to the child process by giving one or more 
  19884.           pointers to character strings as arguments in the _spawn routine. 
  19885.           These character strings form the argument list for the child process. 
  19886.  
  19887.           The argument pointers can be passed as separate arguments (_spawnl, 
  19888.           _spawnle, _spawnlp, and _spawnlpe) or as an array of pointers 
  19889.           (_spawnv, _spawnve, _spawnvp, and _spawnvpe).  At least one argument, 
  19890.           either arg0 or argv[0], must be passed to the child process.  By 
  19891.           convention, this argument is a copy of the pathname argument. 
  19892.           However, a different value will not produce an error. 
  19893.  
  19894.           Use the _spawnl, _spawnle, _spawnlp, and _spawnlpe functions where 
  19895.           you know the number of arguments. The arg0 is usually a pointer to 
  19896.           pathname. The arg1 through argn arguments are pointers to the 
  19897.           character strings forming the new argument list. Following argn, a 
  19898.           NULL pointer must mark the end of the argument list. 
  19899.  
  19900.           The _spawnv, _spawnve, _spawnvp, and _spawnvpe functions are useful 
  19901.           when the number of arguments to the child process is variable. 
  19902.           Pointers to the arguments are passed as an array, argv.  The argv[0] 
  19903.           argument is usually a pointer to the pathname. The argv[1] through 
  19904.           argv[n] arguments are pointers to the character strings forming the 
  19905.           new argument list. The argv[n+1] argument must be a NULL pointer to 
  19906.           mark the end of the argument list. 
  19907.  
  19908.           Files that are open when a _spawn call is made remain open in the 
  19909.           child process.  In the _spawnl, _spawnlp, _spawnv, and _spawnvp 
  19910.           calls, the child process inherits the environment of the parent. The 
  19911.           _spawnle, _spawnlpe, _spawnve, and _spawnvpe functions let you alter 
  19912.           the environment for the child process by passing a list of 
  19913.           environment settings through the envp argument. The envp argument is 
  19914.           an array of character pointers, each element of which points to a 
  19915.           null-terminated string, that defines an environment variable. Such a 
  19916.           string has the form: 
  19917.  
  19918.                        NAME=value
  19919.           where NAME is the name of an environment variable, and value is the 
  19920.           string value to which that variable is set.  (Notice that value is 
  19921.           not enclosed in double quotation marks.) The final element of the 
  19922.           envp array should be NULL. When envp itself is NULL, the child 
  19923.           process inherits the environment settings of the parent process. 
  19924.  
  19925.           Note:  Signal settings are not preserved in child processes created 
  19926.                  by calls to _spawn functions. The signal settings are reset to 
  19927.                  the default in the child process. 
  19928.  
  19929.  Returns 
  19930.  
  19931.           The return from a spawn function has one of two different meanings. 
  19932.           The return value of a synchronous spawn is the exit status of the 
  19933.           child process. The return value of an asynchronous spawn is the 
  19934.           process identification of the child process. You can use wait or 
  19935.           _cwait to get the child process exit code if an asynchronous spawn 
  19936.           was done. 
  19937.  
  19938.           A return value of -1 indicates an error (the child process is not 
  19939.           started), and errno is set to one of the following values:  compact 
  19940.           break=fit. 
  19941.  
  19942.           Value       Meaning 
  19943.  
  19944.           EAGAIN      The limit of the number of processes that the operating 
  19945.                       system permits has been reached. 
  19946.  
  19947.           EINVAL      The modeflag argument is incorrect. 
  19948.  
  19949.           ENOENT      The file or path name was not found or was not specified 
  19950.                       correctly. 
  19951.  
  19952.           ENOEXEC     The specified file is not executable or has an incorrect 
  19953.                       executable file format. 
  19954.  
  19955.           ENOMEM      Not enough storage is available to run the child process. 
  19956.  
  19957.  Example Code 
  19958.  
  19959.           This example calls four of the eight _spawn routines. When called 
  19960.           without arguments from the command line, the program first runs the 
  19961.           code for case PARENT. It spawns a copy of itself, waits for its child 
  19962.           process to run, and then spawns a second child process. The 
  19963.           instructions for the child process are blocked to run only if argv[0] 
  19964.           and one parameter were passed (case CHILD). In its turn, each child 
  19965.           process spawns a grandchild as a copy of the same program. The 
  19966.           grandchild instructions are blocked by the existence of two passed 
  19967.           parameters. The grandchild process can overlay the child process. 
  19968.           Each of the processes prints a message identifying itself. 
  19969.  
  19970.                     #include <stdio.h>
  19971.                     #include <process.h>
  19972.  
  19973.                     #define  PARENT        1
  19974.                     #define  CHILD         2
  19975.                     #define  GRANDCHILD    3
  19976.  
  19977.                     int main(int argc,char **argv,char **envp)
  19978.                     {
  19979.                        int result;
  19980.                        char *args[4];
  19981.  
  19982.                        switch (argc) {
  19983.                           case  PARENT :  /* no argument was passed: spawn child and wait         */
  19984.                              result = _spawnle(P_WAIT, argv[0], argv[0], "one", NULL, envp);
  19985.                              if (result)
  19986.                                 abort();
  19987.                              args[0] = argv[0];
  19988.                              args[1] = "two";
  19989.                              args[2] = NULL;
  19990.  
  19991.                               /* spawn another child, and wait for it                             */
  19992.  
  19993.                              result = _spawnve(P_WAIT, argv[0], args, envp);
  19994.                              if (result)
  19995.                                 abort();
  19996.                              printf("Parent process ended\n");
  19997.                              exit(0);
  19998.  
  19999.                           case  CHILD :  /* one argument passed: allow grandchild to overlay      */
  20000.                              printf("child process %s began\n", argv[1]);
  20001.                              if ('o' == *argv[1])                             /* child one?       */
  20002.                                 {
  20003.                                 _spawnl(P_OVERLAY, argv[0], argv[0], "one", "two", NULL);
  20004.                                 abort();       /* not executed because child was overlaid         */
  20005.                              }
  20006.                              if ('t' == *argv[1])                             /* child two?       */
  20007.                                 {
  20008.                                 args[0] = argv[0];
  20009.                                 args[1] = "two";
  20010.                                 args[2] = "one";
  20011.                                 args[3] = NULL;
  20012.                                 _spawnv(P_OVERLAY, argv[0], args);
  20013.                                 abort();       /* not executed because child was overlaid         */
  20014.                              }
  20015.                              abort();                            /* argument not valid            */
  20016.                           case  GRANDCHILD :   /* two arguments passed                            */
  20017.                              printf("grandchild %s ran\n", argv[1]);
  20018.                              exit(0);
  20019.                        }
  20020.                        /****************************************************************************
  20021.                           The output should be:
  20022.  
  20023.                           child process one began
  20024.                           grandchild one ran
  20025.                           child process two began
  20026.                           grandchild two ran
  20027.                           Parent process ended
  20028.                        ****************************************************************************/
  20029.                     }
  20030.  
  20031.  Related Information 
  20032.  
  20033.               abort 
  20034.               _cwait 
  20035.               execl - _execvpe 
  20036.               exit 
  20037.               _exit 
  20038.               wait 
  20039.  
  20040.  
  20041. ΓòÉΓòÉΓòÉ 3.190. _splitpath - Decompose Path Name ΓòÉΓòÉΓòÉ
  20042.  
  20043. _splitpath - Decompose Path Name 
  20044.  
  20045.  Syntax 
  20046.  
  20047.                     #include <stdlib.h>
  20048.                     void _splitpath(char *path, char *drive, char *dir,
  20049.                                         char *fname, char *ext);
  20050.  
  20051.  Description 
  20052.  
  20053.           _splitpath decomposes an existing path name path into its four 
  20054.           components. The path should point to a buffer containing the complete 
  20055.           path name. 
  20056.  
  20057.           The maximum size necessary for each buffer is specified by the 
  20058.           _MAX_DRIVE, _MAX_DIR, _MAX_FNAME, and _MAX_EXT constants defined in 
  20059.           <stdlib.h>. The other arguments point to the following buffers used 
  20060.           to store the path name elements:  compact break=fit. 
  20061.  
  20062.           Buffer    Description 
  20063.  
  20064.           drive     Contains the drive letter followed by a colon (:) if a 
  20065.                     drive is specified in path. 
  20066.  
  20067.           dir       Contains the path of subdirectories, if any, including the 
  20068.                     trailing slash.  Slashes (/), backslashes (\), or both may 
  20069.                     be present in path. 
  20070.  
  20071.           fname     Contains the base file name without any extensions. 
  20072.  
  20073.           ext       Contains the file name extension, if any, including the 
  20074.                     leading period (.). 
  20075.  
  20076.           You can specify NULL for any of the buffer pointers to indicate that 
  20077.           you do not want the string for that component returned. 
  20078.  
  20079.           The return parameters contain empty strings for any path name 
  20080.           components not found in path. 
  20081.  
  20082.  Returns 
  20083.  
  20084.           There is no return value. 
  20085.  
  20086.  Example Code 
  20087.  
  20088.           This example builds a file name path from the specified components, 
  20089.           and then extracts the individual components. 
  20090.  
  20091.                     #include <stdio.h>
  20092.                     #include <stdlib.h>
  20093.  
  20094.                     int main(void)
  20095.                     {
  20096.                        char path_buffer[_MAX_PATH];
  20097.                        char drive[_MAX_DRIVE];
  20098.                        char dir[_MAX_DIR];
  20099.                        char fname[_MAX_FNAME];
  20100.                        char ext[_MAX_EXT];
  20101.  
  20102.                        _makepath(path_buffer, "c", "qc\\bob\\eclibref\\e", "makepath", "c");
  20103.                        printf("Path created with _makepath: %s\n\n", path_buffer);
  20104.                        _splitpath(path_buffer, drive, dir, fname, ext);
  20105.                        printf("Path extracted with _splitpath:\n");
  20106.                        printf("drive: %s\n", drive);
  20107.                        printf("directory: %s\n", dir);
  20108.                        printf("file name: %s\n", fname);
  20109.                        printf("extension: %s\n", ext);
  20110.                        return 0;
  20111.  
  20112.                        /****************************************************************************
  20113.                           The output should be:
  20114.  
  20115.                           Path created with _makepath: c:qc\bob\eclibref\e\makepath.c
  20116.  
  20117.                           Path extracted with _splitpath:
  20118.                           drive: c:
  20119.                           directory: qc\bob\eclibref\e\
  20120.                           file name: makepath
  20121.                           extension: .c
  20122.                        ****************************************************************************/
  20123.                     }
  20124.  
  20125.  Related Information 
  20126.  
  20127.               _fullpath 
  20128.               _getcwd 
  20129.               _getdcwd 
  20130.               _makepath 
  20131.  
  20132.  
  20133. ΓòÉΓòÉΓòÉ 3.191. sprintf - Print Formatted Data to Buffer ΓòÉΓòÉΓòÉ
  20134.  
  20135. sprintf - Print Formatted Data to Buffer 
  20136.  
  20137.  Syntax 
  20138.  
  20139.                     #include <stdio.h>
  20140.                     int sprintf(char *buffer, const char *format-string, argument-list);
  20141.  
  20142.  Description 
  20143.  
  20144.           sprintf formats and stores a series of characters and values in the 
  20145.           array buffer. Any argument-list is converted and put out according to 
  20146.           the corresponding format specification in the format-string. 
  20147.  
  20148.           The format-string consists of ordinary characters and has the same 
  20149.           form and function as the format-string argument for the printf 
  20150.           function. See printf for a description of the format-string and 
  20151.           arguments. 
  20152.  
  20153.           In extended mode, sprintf also converts floating-point values of NaN 
  20154.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  20155.           "infinity". The case and sign of the string is determined by the 
  20156.           format specifiers. See Infinity and NaN Support for more information 
  20157.           on infinity and NaN values. 
  20158.  
  20159.  Returns 
  20160.  
  20161.           sprintf returns the number of bytes written in the array, not 
  20162.           counting the ending null character. 
  20163.  
  20164.  Example Code 
  20165.  
  20166.           This example uses sprintf to format and print various data. 
  20167.  
  20168.                     #include <stdio.h>
  20169.  
  20170.                     char buffer[200];
  20171.                     int i,j;
  20172.                     double fp;
  20173.                     char *s = "baltimore";
  20174.                     char c;
  20175.  
  20176.                     int main(void)
  20177.                     {
  20178.                        c = 'l';
  20179.                        i = 35;
  20180.                        fp = 1.7320508;
  20181.  
  20182.                         /* Format and print various data                                          */
  20183.  
  20184.                        j = sprintf(buffer, "%s\n", s);
  20185.                        j += sprintf(buffer+j, "%c\n", c);
  20186.                        j += sprintf(buffer+j, "%d\n", i);
  20187.                        j += sprintf(buffer+j, "%f\n", fp);
  20188.                        printf("string:\n%s\ncharacter count = %d\n", buffer, j);
  20189.                        return 0;
  20190.  
  20191.                        /****************************************************************************
  20192.                           The output should be:
  20193.  
  20194.                           string:
  20195.                           baltimore
  20196.                           l
  20197.                           35
  20198.                           1.732051
  20199.  
  20200.                           character count = 24
  20201.                        ****************************************************************************/
  20202.                     }
  20203.  
  20204.  Related Information 
  20205.  
  20206.               Infinity and NaN Support 
  20207.               _cprintf 
  20208.               fprintf 
  20209.               printf 
  20210.               sscanf 
  20211.               vfprintf 
  20212.               vprintf 
  20213.               vsprintf 
  20214.  
  20215.  
  20216. ΓòÉΓòÉΓòÉ 3.192. sqrt - Calculate Square Root ΓòÉΓòÉΓòÉ
  20217.  
  20218. sqrt - Calculate Square Root 
  20219.  
  20220.  Syntax 
  20221.  
  20222.                     #include <math.h>
  20223.                     double sqrt(double x);
  20224.  
  20225.  Description 
  20226.  
  20227.           sqrt calculates the nonnegative value of the square root of x. 
  20228.  
  20229.  Returns 
  20230.  
  20231.           sqrt returns the square root result.  If x is negative, the function 
  20232.           sets errno to EDOM, and returns 0. 
  20233.  
  20234.  Example Code 
  20235.  
  20236.           This example computes the square root of 45. 
  20237.  
  20238.                     #include <stdio.h>
  20239.                     #include <stdlib.h>
  20240.                     #include <math.h>
  20241.  
  20242.                     int main(int argc,char **argv)
  20243.                     {
  20244.                        double value = 45.0;
  20245.  
  20246.                        printf("sqrt( %f ) = %f\n", value, sqrt(value));
  20247.                        return 0;
  20248.  
  20249.                        /****************************************************************************
  20250.                           The output should be:
  20251.  
  20252.                           sqrt( 45.000000 ) = 6.708204
  20253.                        ****************************************************************************/
  20254.                     }
  20255.  
  20256.  Related Information 
  20257.  
  20258.               exp 
  20259.               hypot 
  20260.               log 
  20261.               log10 
  20262.               pow 
  20263.  
  20264.  
  20265. ΓòÉΓòÉΓòÉ 3.193. srand - Set Seed for rand Function ΓòÉΓòÉΓòÉ
  20266.  
  20267. srand - Set Seed for rand Function 
  20268.  
  20269.  Syntax 
  20270.  
  20271.                     #include <stdlib.h>
  20272.                     void srand(unsigned int seed);
  20273.  
  20274.  Description 
  20275.  
  20276.           srand sets the starting point for producing a series of pseudo-random 
  20277.           integers. If srand is not called, the rand seed is set as if srand(1) 
  20278.           were called at program start.  Any other value for seed sets the 
  20279.           generator to a different starting point. 
  20280.  
  20281.           The rand function generates the pseudo-random numbers. 
  20282.  
  20283.  Returns 
  20284.  
  20285.           There is no return value. 
  20286.  
  20287.  Example Code 
  20288.  
  20289.           This example first calls srand with a value other than 1 to initiate 
  20290.           the random value sequence.  Then the program computes five random 
  20291.           values for the array of integers called ranvals. 
  20292.  
  20293.                     #include <stdlib.h>
  20294.                     #include <stdio.h>
  20295.  
  20296.                     int main(void)
  20297.                     {
  20298.                        int i,ranvals[5];
  20299.  
  20300.                        srand(17);
  20301.                        for (i = 0; i < 5; i++) {
  20302.                           ranvals[i] = rand();
  20303.                           printf("Iteration %d ranvals [%d] = %d\n", i+1, i, ranvals[i]);
  20304.                        }
  20305.                        return 0;
  20306.  
  20307.                        /****************************************************************************
  20308.                           The output should be similar to:
  20309.  
  20310.                           Iteration 1 ranvals [0] = 24107
  20311.                           Iteration 2 ranvals [1] = 16552
  20312.                           Iteration 3 ranvals [2] = 12125
  20313.                           Iteration 4 ranvals [3] = 9427
  20314.                           Iteration 5 ranvals [4] = 13152
  20315.                        ****************************************************************************/
  20316.                     }
  20317.  
  20318.  Related Information 
  20319.  
  20320.               rand 
  20321.  
  20322.  
  20323. ΓòÉΓòÉΓòÉ 3.194. sscanf - Read Data ΓòÉΓòÉΓòÉ
  20324.  
  20325. sscanf - Read Data 
  20326.  
  20327.  Syntax 
  20328.  
  20329.                     #include <stdio.h>
  20330.                     int sscanf(const char *buffer, const char *format, argument-list);
  20331.  
  20332.  Description 
  20333.  
  20334.           sscanf reads data from buffer into the locations given by 
  20335.           argument-list.  Each argument must be a pointer to a variable with a 
  20336.           type that corresponds to a type specifier in the format-string. See 
  20337.           scanf for a description of the format-string. 
  20338.  
  20339.  Returns 
  20340.  
  20341.           sscanf returns the number of fields that were successfully converted 
  20342.           and assigned.  The return value does not include fields that were 
  20343.           read but not assigned. 
  20344.  
  20345.           The return value is EOF when the end of the string is encountered 
  20346.           before anything is converted. 
  20347.  
  20348.  Example Code 
  20349.  
  20350.           This example uses sscanf to read various data from the string 
  20351.           tokenstring, and then displays that data. 
  20352.  
  20353.                     #include <stdio.h>
  20354.  
  20355.                     #define  SIZE          81
  20356.  
  20357.                     char *tokenstring = "15 12 14";
  20358.                     int i;
  20359.                     float fp;
  20360.                     char s[SIZE];
  20361.                     char c;
  20362.  
  20363.                     int main(void)
  20364.                     {
  20365.  
  20366.                         /* Input various data                                                     */
  20367.  
  20368.                        sscanf(tokenstring, "%s %c%d%f", s, &c, &i, &fp);
  20369.  
  20370.                         /* If there were no space between %s and %c,                              */
  20371.                         /* sscanf would read the first character following                        */
  20372.                         /* the string, which is a blank space.                                    */
  20373.                         /* Display the data                                                       */
  20374.  
  20375.                        printf("string = %s\n", s);
  20376.                        printf("character = %c\n", c);
  20377.                        printf("integer = %d\n", i);
  20378.                        printf("floating-point number = %f\n", fp);
  20379.                        return 0;
  20380.  
  20381.                        /****************************************************************************
  20382.                           The output should be:
  20383.  
  20384.                           string = 15
  20385.                           character = 1
  20386.                           integer = 2
  20387.                           floating-point number = 14.000000
  20388.                        ****************************************************************************/
  20389.                     }
  20390.  
  20391.                     /*****************  Output should be similar to:  *****************
  20392.  
  20393.                     string = 15
  20394.                     character = 1
  20395.                     integer = 2
  20396.                     floating-point number = 14.000000
  20397.                     */
  20398.  
  20399.  Related Information 
  20400.  
  20401.               Infinity and NaN Support 
  20402.               _cscanf 
  20403.               fscanf 
  20404.               scanf 
  20405.               sprintf 
  20406.  
  20407.  
  20408. ΓòÉΓòÉΓòÉ 3.195. stat - Get Information about File or Directory ΓòÉΓòÉΓòÉ
  20409.  
  20410. stat - Get Information about File or Directory 
  20411.  
  20412.  Syntax 
  20413.  
  20414.                     #include <sys\types.h>
  20415.                     #include <sys\stat.h>
  20416.                     int stat(const char *pathname, struct stat *buffer)    ;
  20417.  
  20418.  Description 
  20419.  
  20420.           stat stores information about the file or directory specified by 
  20421.           pathname in the structure to which buffer points. The stat structure, 
  20422.           defined in <sys\stat.h>, contains the following fields: 
  20423.  
  20424.           Field          Value 
  20425.  
  20426.           st_mode        Bit mask for file-mode information. stat sets the 
  20427.                          S_IFCHR bit if handle refers to a device. The S_IFDIR 
  20428.                          bit is set if pathname specifies a directory. The 
  20429.                          S_IFREG bit is set if pathname specifies an ordinary 
  20430.                          file.  User read/write bits are set according to the 
  20431.                          permission mode of the file. The S_IEXEC bit is set 
  20432.                          using the file name extension. The other bits are 
  20433.                          undefined. 
  20434.  
  20435.           st_dev         Drive number of the disk containing the file. 
  20436.  
  20437.           st_rdev        Drive number of the disk containing the file (same as 
  20438.                          st_dev). 
  20439.  
  20440.           st_nlink       Always 1. 
  20441.  
  20442.           st_size        Size of the file in bytes. 
  20443.  
  20444.           st_atime       Time of last access of file. 
  20445.  
  20446.           st_mtime       Time of last modification of file. 
  20447.  
  20448.           st_ctime       Time of file creation. 
  20449.  
  20450.           Note:  In earlier releases of C Set ++, stat began with an underscore 
  20451.                  (_stat). Because it is defined by the X/Open standard, the 
  20452.                  underscore has been removed. For compatibility, The 
  20453.                  Developer's Toolkit will map _stat to stat for you. 
  20454.  
  20455.  Returns 
  20456.  
  20457.           stat returns the value 0 if the file status information is obtained. 
  20458.           A return value of -1 indicates an error, and errno is set to ENOENT, 
  20459.           indicating that the file name or path name could not be found. 
  20460.  
  20461.  Example Code 
  20462.  
  20463.           This example requests that the status information for the file 
  20464.           test.exe be placed into the structure buf. If the request is 
  20465.           successful and the file is executable, the example runs test.exe. 
  20466.  
  20467.                     #include <sys\types.h>
  20468.                     #include <sys\stat.h>
  20469.                     #include <process.h>
  20470.                     #include <stdio.h>
  20471.  
  20472.                     int main(void)
  20473.                     {
  20474.                        struct stat buf;
  20475.  
  20476.                        if (0 == stat("test.exe", &buf)) {
  20477.                           if ((buf.st_mode&S_IFREG) && (buf.st_mode&S_IEXEC))
  20478.                              execl("test.exe", "test", NULL);         /* file is executable       */
  20479.                        }
  20480.                        else
  20481.                           printf("File could not be found\n");
  20482.                        return 0;
  20483.  
  20484.                        /****************************************************************************
  20485.                           The source for test.exe is:
  20486.  
  20487.                           #include <stdio.h>
  20488.                           int main(void)
  20489.                           {
  20490.                               puts("test.exe is an executable file");
  20491.                           }
  20492.  
  20493.                           The output should be:
  20494.  
  20495.                           test.exe is an executable file
  20496.                        ****************************************************************************/
  20497.                     }
  20498.  
  20499.  Related Information 
  20500.  
  20501.               fstat 
  20502.  
  20503.  
  20504. ΓòÉΓòÉΓòÉ 3.196. strcat - Concatenate Strings ΓòÉΓòÉΓòÉ
  20505.  
  20506. strcat - Concatenate Strings 
  20507.  
  20508.  Syntax 
  20509.  
  20510.                     #include <string.h>
  20511.                     char *strcat(char *string1, const char *string2);
  20512.  
  20513.  Description 
  20514.  
  20515.           strcat concatenates string2 to string1 and ends the resulting string 
  20516.           with the null character. 
  20517.  
  20518.           strcat operates on null-terminated strings. The string arguments to 
  20519.           the function should contain a null character (\0) marking the end of 
  20520.           the string. No length checking is performed. You should not use a 
  20521.           literal string for a string1 value, although string2 may be a literal 
  20522.           string. 
  20523.  
  20524.           If the storage of string1 overlaps the storage of string2, the 
  20525.           behavior is undefined. 
  20526.  
  20527.  Returns 
  20528.  
  20529.           strcat returns a pointer to the concatenated string (string1). 
  20530.  
  20531.  Example Code 
  20532.  
  20533.           This example creates the string "computer program" using strcat. 
  20534.  
  20535.                     #include <stdio.h>
  20536.                     #include <string.h>
  20537.  
  20538.                     #define  SIZE          40
  20539.  
  20540.                     int main(void)
  20541.                     {
  20542.                        char buffer1[SIZE] = "computer";
  20543.                        char *ptr;
  20544.  
  20545.                        ptr = strcat(buffer1, " program");
  20546.                        printf("buffer1 = %s\n", buffer1);
  20547.                        return 0;
  20548.  
  20549.                        /****************************************************************************
  20550.                           The output should be:
  20551.  
  20552.                           buffer1 = computer program
  20553.                        ****************************************************************************/
  20554.                     }
  20555.  
  20556.  Related Information 
  20557.  
  20558.               strchr 
  20559.               strcmp 
  20560.               strcpy 
  20561.               strcspn 
  20562.               strncat 
  20563.               wcscat 
  20564.               wcsncat 
  20565.  
  20566.  
  20567. ΓòÉΓòÉΓòÉ 3.197. strchr - Search for Byte ΓòÉΓòÉΓòÉ
  20568.  
  20569. strchr - Search for Byte 
  20570.  
  20571.  Syntax 
  20572.  
  20573.                     #include <string.h>
  20574.                     char *strchr(const char *string, int c);
  20575.  
  20576.  Description 
  20577.  
  20578.           strchr finds the first occurrence of a byte in a string. The byte c 
  20579.           can be the null byte (\0); the ending null byte of string is included 
  20580.           in the search. 
  20581.  
  20582.           The strchr function operates on null-terminated strings. The string 
  20583.           arguments to the function should contain a null byte (\0) marking the 
  20584.           end of the string. 
  20585.  
  20586.  Returns 
  20587.  
  20588.           strchr returns a pointer to the first occurrence of c in string. The 
  20589.           function returns NULL if the specified byte is not found. 
  20590.  
  20591.  Example Code 
  20592.  
  20593.           This example finds the first occurrence of the character p in 
  20594.           "computer program". 
  20595.  
  20596.                     #include <stdio.h>
  20597.                     #include <string.h>
  20598.  
  20599.                     #define  SIZE          40
  20600.  
  20601.                     int main(void)
  20602.                     {
  20603.                        char buffer1[SIZE] = "computer program";
  20604.                        char *ptr;
  20605.                        int ch = 'p';
  20606.  
  20607.                        ptr = strchr(buffer1, ch);
  20608.                        printf("The first occurrence of %c in '%s' is '%s'\n", ch, buffer1, ptr);
  20609.                        return 0;
  20610.  
  20611.                        /****************************************************************************
  20612.                           The output should be:
  20613.  
  20614.                           The first occurrence of p in 'computer program' is 'puter program'
  20615.                        ****************************************************************************/
  20616.                     }
  20617.  
  20618.  Related Information 
  20619.  
  20620.               strcmp 
  20621.               strcspn 
  20622.               strncmp 
  20623.               strpbrk 
  20624.               strrchr 
  20625.               strspn 
  20626.               wcschr 
  20627.               wcsspn 
  20628.  
  20629.  
  20630. ΓòÉΓòÉΓòÉ 3.198. strcmp - Compare Strings ΓòÉΓòÉΓòÉ
  20631.  
  20632. strcmp - Compare Strings 
  20633.  
  20634.  Syntax 
  20635.  
  20636.                     #include <string.h>
  20637.                     int strcmp(const char *string1, const char *string2);
  20638.  
  20639.  Description 
  20640.  
  20641.           strcmp compares the strings pointed to by string1 and string2. The 
  20642.           function operates on null-terminated strings. The string arguments to 
  20643.           the function should contain a null character (\0) marking the end of 
  20644.           the string. 
  20645.  
  20646.  Returns 
  20647.  
  20648.           strcmp returns a value indicating the relationship between the two 
  20649.           strings, as follows:  compact break=fit. 
  20650.  
  20651.           Value             Meaning 
  20652.  
  20653.           Less than 0       string1 less than string2 
  20654.  
  20655.           0                 string1 identical to string2 
  20656.  
  20657.           Greater than 0    string1 greater than string2. 
  20658.  
  20659.  Example Code 
  20660.  
  20661.           This example compares the two strings passed to main using strcmp. 
  20662.  
  20663.                     #include <stdio.h>
  20664.                     #include <string.h>
  20665.  
  20666.                     int main(int argc,char **argv)
  20667.                     {
  20668.                        int result;
  20669.  
  20670.                        if (argc != 3) {
  20671.                           printf("Usage: %s string1 string2\n", argv[0]);
  20672.                        }
  20673.                        else {
  20674.                           result = strcmp(argv[1], argv[2]);
  20675.                           if (0 == result)
  20676.                              printf("\"%s\" is identical to \"%s\"\n", argv[1], argv[2]);
  20677.                           else
  20678.                              if (result < 0)
  20679.                                 printf("\"%s\" is less than \"%s\"\n", argv[1], argv[2]);
  20680.                              else
  20681.                                 printf("\"%s\" is greater than \"%s\"\n", argv[1], argv[2]);
  20682.                        }
  20683.                        return 0;
  20684.  
  20685.                        /****************************************************************************
  20686.                           If the following arguments are passed to this program:
  20687.  
  20688.                           "is this first?" "is this before that one?"
  20689.  
  20690.                           The output should be:
  20691.  
  20692.                           "is this first?" is greater than "is this before that one?"
  20693.                        ****************************************************************************/
  20694.                     }
  20695.  
  20696.  Related Information 
  20697.  
  20698.               strcmpi 
  20699.               strcoll 
  20700.               strcspn 
  20701.               stricmp 
  20702.               strncmp 
  20703.               strnicmp 
  20704.               wcscmp 
  20705.               wcsncmp 
  20706.  
  20707.  
  20708. ΓòÉΓòÉΓòÉ 3.199. strcmpi - Compare Strings Without Case Sensitivity ΓòÉΓòÉΓòÉ
  20709.  
  20710. strcmpi - Compare Strings Without Case Sensitivity 
  20711.  
  20712.  Syntax 
  20713.  
  20714.                     #include <string.h>
  20715.                     int strcmpi(const char *string1, const char *string2);
  20716.  
  20717.  Description 
  20718.  
  20719.           strcmpi compares string1 and string2 without sensitivity to case. 
  20720.           All alphabetic characters in the two arguments string1 and string2 
  20721.           are converted to lowercase before the comparison. 
  20722.  
  20723.           The function operates on null-ended strings. The string arguments to 
  20724.           the function are expected to contain a null character (\0) marking 
  20725.           the end of the string. 
  20726.  
  20727.  Returns 
  20728.  
  20729.           strcmpi returns a value indicating the relationship between the two 
  20730.           strings, as follows:  compact break=fit. 
  20731.  
  20732.           Value             Meaning 
  20733.  
  20734.           Less than 0       string1 less than string2 
  20735.  
  20736.           0                 string1 equivalent to string2 
  20737.  
  20738.           Greater than 0    string1 greater than string2. 
  20739.  
  20740.  Example Code 
  20741.  
  20742.           This example uses strcmpi to compare two strings. 
  20743.  
  20744.                     #include <stdio.h>
  20745.                     #include <string.h>
  20746.  
  20747.                     int main(void)
  20748.                     {
  20749.  
  20750.                        /* Compare two strings without regard to case                              */
  20751.  
  20752.                        if (0 == strcmpi("hello", "HELLO"))
  20753.                           printf("The strings are equivalent.\n");
  20754.                        else
  20755.                           printf("The strings are not equivalent.\n");
  20756.                        return 0;
  20757.  
  20758.                        /****************************************************************************
  20759.                           The output should be:
  20760.  
  20761.                           The strings are equivalent.
  20762.                        ****************************************************************************/
  20763.                     }
  20764.  
  20765.  Related Information 
  20766.  
  20767.               strcoll 
  20768.               strcspn 
  20769.               strdup 
  20770.               stricmp 
  20771.               strncmp 
  20772.               strnicmp 
  20773.               wcscmp 
  20774.               wcsncmp 
  20775.  
  20776.  
  20777. ΓòÉΓòÉΓòÉ 3.200. strcoll - Compare Strings Using Collation Rules ΓòÉΓòÉΓòÉ
  20778.  
  20779. strcoll - Compare Strings Using Collation Rules 
  20780.  
  20781.  Syntax 
  20782.  
  20783.                     #include <string.h>
  20784.                     int strcoll(const char *string1, const char *string2);
  20785.  
  20786.  Description 
  20787.  
  20788.           strcoll compares the string pointed to by string1 against the string 
  20789.           pointed to by string2, both interpreted according to the information 
  20790.           in the LC_COLLATE category of the current locale. 
  20791.  
  20792.           strcoll differs from the strcmp function. strcoll performs a 
  20793.           comparison between two character strings based on language collation 
  20794.           rules as controlled by the LC_COLLATE category. In contrast, strcmp 
  20795.           performs a character to character comparison. 
  20796.  
  20797.               If a string will be collated many times, as when inserting an 
  20798.                entry into a sorted list, strxfrm followed by strcmp can be more 
  20799.                efficient. 
  20800.               If only comparison for strict equality is desired, strcmp should 
  20801.                be used, since it is more efficient. 
  20802.  
  20803.  Returns 
  20804.  
  20805.           strcoll returns an integer value indicating the relationship between 
  20806.           the strings, as listed below:  compact break=fit. 
  20807.  
  20808.           Value             Meaning 
  20809.  
  20810.           Less than 0       string1 is less than string2 
  20811.  
  20812.           0                 string1 is equivalent to string2 
  20813.  
  20814.           Greater than 0    string1 is greater than string2 
  20815.  
  20816.           Note: 
  20817.  
  20818.               strcoll might need to allocate additional memory to perform the 
  20819.                comparison algorithm specified in the LC_COLLATE. If the memory 
  20820.                request cannot be satisfied (by malloc), then strcoll fails. 
  20821.  
  20822.               If the locale supports double-byte characters (MB_CUR_MAX 
  20823.                specified as 2), strcoll validates the multibyte characters. 
  20824.                strcoll fails if the string contains invalid multibyte 
  20825.                characters. 
  20826.  
  20827.  Related Information 
  20828.  
  20829.           This example compares the two strings passed to main. 
  20830.  
  20831.                     #include <stdio.h>
  20832.                     #include <string.h>
  20833.  
  20834.                     int main(int argc,char **argv)
  20835.                     {
  20836.                        int result;
  20837.  
  20838.                        if (argc != 3) {
  20839.                           printf("Usage: %s string1 string2\n", argv[0]);
  20840.                        }
  20841.                        else {
  20842.                           result = strcoll(argv[1], argv[2]);
  20843.                           if (0 == result)
  20844.                              printf("\"%s\" is identical to \"%s\"\n", argv[1], argv[2]);
  20845.                           else
  20846.                              if (result < 0)
  20847.                                 printf("\"%s\" is less than \"%s\"\n", argv[1], argv[2]);
  20848.                              else
  20849.                                 printf("\"%s\" is greater than \"%s\"\n", argv[1], argv[2]);
  20850.                        }
  20851.                        return 0;
  20852.  
  20853.                        /****************************************************************************
  20854.                           If the program is passed the following arguments:
  20855.  
  20856.                           "firststring" "secondstring"
  20857.  
  20858.                           The output should be:
  20859.  
  20860.                           "firststring" is less than "secondstring"
  20861.                        ****************************************************************************/
  20862.                     }
  20863.  
  20864.  Related Information 
  20865.  
  20866.               setlocale 
  20867.               strcmp 
  20868.               strcmpi 
  20869.               strncmp 
  20870.               wcscoll 
  20871.  
  20872.  
  20873. ΓòÉΓòÉΓòÉ 3.201. strcpy - Copy Strings ΓòÉΓòÉΓòÉ
  20874.  
  20875. strcpy - Copy Strings 
  20876.  
  20877.  Syntax 
  20878.  
  20879.                     #include <string.h>
  20880.                     char *strcpy(char *string1, const char *string2);
  20881.  
  20882.  Description 
  20883.  
  20884.           strcpy copies string2, including the ending null character, to the 
  20885.           location specified by string1. 
  20886.  
  20887.           strcpy operates on null-terminated strings. The string arguments to 
  20888.           the function should contain a null character (\0) marking the end of 
  20889.           the string. No length checking is performed. You should not use a 
  20890.           literal string for a string1 value, although string2 may be a literal 
  20891.           string. 
  20892.  
  20893.  Returns 
  20894.  
  20895.           strcpy returns a pointer to the copied string (string1.). 
  20896.  
  20897.  Example Code 
  20898.  
  20899.           This example copies the contents of source to destination. 
  20900.  
  20901.                     #include <stdio.h>
  20902.                     #include <string.h>
  20903.  
  20904.                     #define  SIZE          40
  20905.  
  20906.                     int main(void)
  20907.                     {
  20908.                        char source[SIZE] = "123456789";
  20909.                        char source1[SIZE] = "123456789";
  20910.                        char destination[SIZE] = "abcdefg";
  20911.                        char destination1[SIZE] = "abcdefg";
  20912.                        char *return_string;
  20913.                        int index = 5;
  20914.  
  20915.                        /* This is how strcpy works                                                */
  20916.  
  20917.                        printf("destination is originally = '%s'\n", destination);
  20918.                        return_string = strcpy(destination, source);
  20919.                        printf("After strcpy, destination becomes '%s'\n\n", destination);
  20920.  
  20921.                        /* This is how strncpy works                                               */
  20922.  
  20923.                        printf("destination1 is originally = '%s'\n", destination1);
  20924.                        return_string = strncpy(destination1, source1, index);
  20925.                        printf("After strncpy, destination1 becomes '%s'\n", destination1);
  20926.                        return 0;
  20927.  
  20928.                        /****************************************************************************
  20929.                           The output should be:
  20930.  
  20931.                           destination is originally = 'abcdefg'
  20932.                           After strcpy, destination becomes '123456789'
  20933.  
  20934.                           destination1 is originally = 'abcdefg'
  20935.                           After strncpy, destination1 becomes '12345fg'
  20936.                        ****************************************************************************/
  20937.                     }
  20938.  
  20939.  Related Information 
  20940.  
  20941.               strcat 
  20942.               strdup 
  20943.               strncpy 
  20944.               wcscpy 
  20945.               wcsncpy 
  20946.  
  20947.  
  20948. ΓòÉΓòÉΓòÉ 3.202. strcspn - Get Length of a Substring ΓòÉΓòÉΓòÉ
  20949.  
  20950. strcspn - Get Length of a Substring 
  20951.  
  20952.  Syntax 
  20953.  
  20954.                     #include <string.h>
  20955.                     size_t strcspn(const char *string1, const char *string2);
  20956.  
  20957.  Description 
  20958.  
  20959.           strcspn finds the first occurrence of a byte in string1 that belongs 
  20960.           to the set of bytes specified by string2 and calculates the length of 
  20961.           the substring pointed to by string1. Ending null characters are not 
  20962.           considered in the search. 
  20963.  
  20964.           The strcspn function operates on null-terminated strings. The string 
  20965.           arguments to the function should contain a null byte (\0) marking the 
  20966.           end of the string. 
  20967.  
  20968.  Returns 
  20969.  
  20970.           strcspn returns the index of the first character found. This value is 
  20971.           equivalent to the length of the initial substring of string1 that 
  20972.           consists entirely of characters not in string2. 
  20973.  
  20974.  Example Code 
  20975.  
  20976.           This example uses strcspn to find the first occurrence of any of the 
  20977.           characters a, x, l or e in string. 
  20978.  
  20979.                     #include <stdio.h>
  20980.                     #include <string.h>
  20981.  
  20982.                     #define  SIZE          40
  20983.  
  20984.                     int main(void)
  20985.                     {
  20986.                        char string[SIZE] = "This is the source string";
  20987.                        char *substring = "axle";
  20988.  
  20989.                        printf("The first %i characters in the string \"%s\" are not in the "
  20990.                           "string \"%s\" \n", strcspn(string, substring), string, substring);
  20991.                        return 0;
  20992.  
  20993.                        /****************************************************************************
  20994.                           The output should be:
  20995.  
  20996.                           The first 10 characters in the string "This is the source string" are not
  20997.                           in the string "axle"
  20998.                        ****************************************************************************/
  20999.                     }
  21000.  
  21001.  Related Information 
  21002.  
  21003.               strchr 
  21004.               strcmp 
  21005.               strcmpi 
  21006.               stricmp 
  21007.               strncmp 
  21008.               strnicmp 
  21009.               strpbrk 
  21010.               strspn 
  21011.               wcscmp 
  21012.               wcsncmp 
  21013.  
  21014.  
  21015. ΓòÉΓòÉΓòÉ 3.203. _strdate - Copy Current Date ΓòÉΓòÉΓòÉ
  21016.  
  21017. _strdate - Copy Current Date 
  21018.  
  21019.  Syntax 
  21020.  
  21021.                     #include <time.h>
  21022.                     char *_strdate(char *date);
  21023.  
  21024.  Description 
  21025.  
  21026.           _strdate stores the current date as a string in the buffer pointed to 
  21027.           by date in the following format: 
  21028.  
  21029.                        mm/dd/yy
  21030.  
  21031.           The two digits mm represent the month, the digits dd represent the 
  21032.           day of the month, and the digits yy represent the year.  For example, 
  21033.           the string 10/08/91 represents October 8, 1991. The buffer must be at 
  21034.           least 9 bytes. 
  21035.  
  21036.           Note:  The time and date functions begin at 00:00:00 Coordinated 
  21037.                  Universal Time, January 1, 1970. 
  21038.  
  21039.  Returns 
  21040.  
  21041.           _strdate returns a pointer to the buffer containing the date string. 
  21042.           There is no error return. 
  21043.  
  21044.  Example Code 
  21045.  
  21046.           This example prints the current date. 
  21047.  
  21048.                     #include <stdio.h>
  21049.                     #include <time.h>
  21050.  
  21051.                     int main(void)
  21052.                     {
  21053.                        char buffer[9];
  21054.  
  21055.                        printf("The current date is %s \n", _strdate(buffer));
  21056.                        return 0;
  21057.  
  21058.                        /****************************************************************************
  21059.                           The output should be similar to:
  21060.  
  21061.                           The current date is 01/02/95
  21062.                        ****************************************************************************/
  21063.                     }
  21064.  
  21065.  Related Information 
  21066.  
  21067.               asctime 
  21068.               ctime 
  21069.               _ftime 
  21070.               gmtime 
  21071.               localtime 
  21072.               mktime 
  21073.               time 
  21074.               tzset 
  21075.  
  21076.  
  21077. ΓòÉΓòÉΓòÉ 3.204. strdup - Duplicate String ΓòÉΓòÉΓòÉ
  21078.  
  21079. strdup - Duplicate String 
  21080.  
  21081.  Syntax 
  21082.  
  21083.                     #include <string.h>
  21084.                     char *strdup(const char *string);
  21085.  
  21086.  Description 
  21087.  
  21088.           strdup reserves storage space for a copy of string by calling malloc. 
  21089.           The string argument to this function is expected to contain a null 
  21090.           character (\0) marking the end of the string. Remember to free the 
  21091.           storage reserved with the call to strdup. 
  21092.  
  21093.  Returns 
  21094.  
  21095.           strdup returns a pointer to the storage space containing the copied 
  21096.           string. If it cannot reserve storage strdup returns NULL. 
  21097.  
  21098.  Example Code 
  21099.  
  21100.           This example uses strdup to duplicate a string and print the copy. 
  21101.  
  21102.                     #include <stdio.h>
  21103.                     #include <string.h>
  21104.  
  21105.                     int main(void)
  21106.                     {
  21107.                        char *string = "this is a copy";
  21108.                        char *newstr;
  21109.  
  21110.                        /* Make newstr point to a duplicate of string                              */
  21111.  
  21112.                        if ((newstr = strdup(string)) != NULL)
  21113.                           printf("The new string is: %s\n", newstr);
  21114.                        return 0;
  21115.  
  21116.                        /****************************************************************************
  21117.                           The output should be:
  21118.  
  21119.                           The new string is: this is a copy
  21120.                        ****************************************************************************/
  21121.                     }
  21122.  
  21123.  Related Information 
  21124.  
  21125.               strcpy 
  21126.               strncpy 
  21127.               wcscpy 
  21128.               wcsncpy 
  21129.  
  21130.  
  21131. ΓòÉΓòÉΓòÉ 3.205. strerror - Set Pointer to Run-Time Error Message ΓòÉΓòÉΓòÉ
  21132.  
  21133. strerror - Set Pointer to Run-Time Error Message 
  21134.  
  21135.  Syntax 
  21136.  
  21137.                     #include <string.h>
  21138.                     char *strerror(int errnum);
  21139.  
  21140.  Description 
  21141.  
  21142.           strerror maps the error number in errnum to an error message string. 
  21143.  
  21144.  Returns 
  21145.  
  21146.           strerror returns a pointer to the string. The contents of the error 
  21147.           message string is determined by the setting of the LC_MESSAGES 
  21148.           category in the current locale. 
  21149.  
  21150.           The value of errno may be set to: 
  21151.  
  21152.           EILSEQ  An encoding error has occurred converting a multibyte 
  21153.                   character. 
  21154.           E2BIG   The output buffer is too small. 
  21155.  
  21156.  Example Code 
  21157.  
  21158.           This example opens a file and prints a run-time error message if an 
  21159.           error occurs. 
  21160.  
  21161.                     #include <stdio.h>
  21162.                     #include <string.h>
  21163.                     #include <errno.h>
  21164.  
  21165.                     #define FILENAME "strerror.dat"
  21166.  
  21167.                     int main(void)
  21168.                     {
  21169.                        FILE *stream;
  21170.  
  21171.                        if (NULL == (stream = fopen(FILENAME, "r")))
  21172.                           printf(" %s \n", strerror(errno));
  21173.                        return 0;
  21174.                     }
  21175.  
  21176.  Related Information 
  21177.  
  21178.               clearerr 
  21179.               ferror 
  21180.               perror 
  21181.               _strerror 
  21182.  
  21183.  
  21184. ΓòÉΓòÉΓòÉ 3.206. _strerror - Set Pointer to System Error String ΓòÉΓòÉΓòÉ
  21185.  
  21186. _strerror - Set Pointer to System Error String 
  21187.  
  21188.  Syntax 
  21189.  
  21190.                     #include <string.h>
  21191.                     char *_strerror(char *string);
  21192.  
  21193.  Description 
  21194.  
  21195.           _strerror tests for system error. It gets the system error message 
  21196.           for the last library call that produced an error and prefaces it with 
  21197.           your string message. 
  21198.  
  21199.           Your string message can be a maximum of 94 bytes. 
  21200.  
  21201.           Unlike perror, _strerror by itself does not print a message.  To 
  21202.           print the message returned by _strerror to stdout, use a printf 
  21203.           statement similar to the following: 
  21204.  
  21205.                        if ((access("datafile",2)) == -1)
  21206.                           printf(stderr,_strerror(NULL));
  21207.  
  21208.           You could also print the message to stderr with an fprintf statement. 
  21209.  
  21210.           To produce accurate results, call _strerror immediately after a 
  21211.           library function returns with an error. Otherwise, subsequent calls 
  21212.           might write over the errno value. 
  21213.  
  21214.  Returns 
  21215.  
  21216.           If string is equal to NULL, _strerror returns a pointer to a string 
  21217.           containing the system error message for the last library call that 
  21218.           produced an error, ended by a new-line character (\n). 
  21219.  
  21220.           If string is not equal to NULL, _strerror returns a pointer to a 
  21221.           string containing: 
  21222.  
  21223.               Your string message 
  21224.               A colon 
  21225.               A space 
  21226.               The system error message for the last library call producing an 
  21227.                error 
  21228.               A new-line character (\n). 
  21229.  
  21230.  Example Code 
  21231.  
  21232.           This example shows how _strerror can be used with the fopen function. 
  21233.  
  21234.                     #include <string.h>
  21235.                     #include <stdio.h>
  21236.  
  21237.                     #define INFILE    "_strerro.in"
  21238.                     #define OUTFILE   "_strerro.out"
  21239.  
  21240.                     int main(void)
  21241.                     {
  21242.                        FILE *fh1,*fh2;
  21243.  
  21244.                        fh1 = fopen(INFILE, "r");
  21245.                        if (NULL == fh1)
  21246.                          /*  the error message goes through stdout not stderr                     */
  21247.                           printf(_strerror("Open failed on input file"));
  21248.                        fh2 = fopen(OUTFILE, "w+");
  21249.                        if (NULL == fh2)
  21250.                           printf(_strerror("Open failed on output file"));
  21251.                        else
  21252.                           printf("Open on output file was successful.\n");
  21253.                        if (fh1 != NULL)
  21254.                           fclose(fh1);
  21255.                        if (fh2 != NULL)
  21256.                           fclose(fh2);
  21257.                        remove(OUTFILE);
  21258.                        return 0;
  21259.  
  21260.                        /****************************************************************************
  21261.                           The output should be:
  21262.  
  21263.                           Open failed on input file: The file cannot be found.
  21264.                           Open on output file was successful.
  21265.                        ****************************************************************************/
  21266.                     }
  21267.  
  21268.  Related Information 
  21269.  
  21270.               clearerr 
  21271.               ferror 
  21272.               perror 
  21273.               strerror 
  21274.  
  21275.  
  21276. ΓòÉΓòÉΓòÉ 3.207. strfmon - Convert Monetary Value to String ΓòÉΓòÉΓòÉ
  21277.  
  21278. strfmon - Convert Monetary Value to String 
  21279.  
  21280.  Syntax 
  21281.  
  21282.                     #include <monetary.h>
  21283.                     int strfmon(char *s, size_t maxsize, const char *format, ...);
  21284.  
  21285.  Description 
  21286.  
  21287.           strfmon places characters into the array pointed to by *s, as 
  21288.           controlled by the string pointed to by format. No more than maxsize 
  21289.           bytes are placed into the array. 
  21290.  
  21291.           The character string format contains two types of objects: 
  21292.  
  21293.               Plain characters, which are copied to the output array. 
  21294.  
  21295.               Directives, each of which results in the fetching of zero or 
  21296.                more arguments that are converted and formatted. 
  21297.  
  21298.           The results are undefined if there are insufficient arguments for the 
  21299.           format. If the format is exhausted while arguments remain, the excess 
  21300.           arguments are simply ignored. If objects pointed to by s and format 
  21301.           overlap, the behavior is undefined. 
  21302.  
  21303.           The directive (conversion specification) consists of the following 
  21304.           sequence. 
  21305.  
  21306.             1. A % character 
  21307.  
  21308.             2. Optional flags, described below: =f, ^, then +, (, then ! 
  21309.  
  21310.             3. Optional field width (may be preceded by -) 
  21311.  
  21312.             4. Optional left precision: #n 
  21313.  
  21314.             5. Optional right precision: .p 
  21315.  
  21316.             6. Required conversion character to indicate what conversion should 
  21317.                be performed: i or n. 
  21318.  
  21319.           Each directive is replaced by the appropriate characters, as 
  21320.           described in the following list: 
  21321.  
  21322.           %i          The double argument is formatted according to the 
  21323.                       locale's international currency format (for example, in 
  21324.                       USA: USD 1,234.56). 
  21325.  
  21326.           %n          The double argument is formatted according to the 
  21327.                       locale's national currency format (for example, in USA: 
  21328.                       $1,234.56). 
  21329.  
  21330.           %% is replaced by %. No argument is converted. 
  21331.  
  21332.           You can give optional conversion specifications immediately after the 
  21333.           initial % of a directive in the following order: 
  21334.  
  21335.           Specifier   Meaning 
  21336.  
  21337.           =f          Specifies f as the numeric fill character. This flag is 
  21338.                       used in conjunction with the maximum digits specification 
  21339.                       #n (see below). The default numeric fill character is the 
  21340.                       space character. This option does not affect the other 
  21341.                       fill operations that always use a space as the fill 
  21342.                       character. 
  21343.  
  21344.           ^           Formats the currency amount without thousands grouping 
  21345.                       characters. The default is to insert the grouping 
  21346.                       characters if defined for the current locale. 
  21347.  
  21348.           + | (       Specifies the style of representing positive and negative 
  21349.                       currency amounts. You can specify only one of + or (. The 
  21350.                       + specifies to use the locale's equivalent of + and -. 
  21351.                       For example, in USA, the empty (null) string if positive 
  21352.                       and - if negative. The ( specifies to use the locale's 
  21353.                       equivalent of enclosing negative amounts within 
  21354.                       parenthesis. If this option is not included, a default 
  21355.                       specified by the current locale is used. 
  21356.  
  21357.           !           Suppresses the currency symbol from the output 
  21358.                       conversion. 
  21359.  
  21360.           [-]w        A decimal digit string that specifies a minimum field 
  21361.                       width in which the result of the conversion is 
  21362.                       right-justified (or left-justified if the - flag is 
  21363.                       specified). 
  21364.  
  21365.           #n          A decimal digit string that specifies a maximum number of 
  21366.                       digits expected to be formatted to the left of the radix 
  21367.                       character. You can use this option to keep the formatted 
  21368.                       output from multiple calls to strfmon aligned in the same 
  21369.                       columns. You can also use it to fill unused positions 
  21370.                       with a special character, as in $***123.45. This option 
  21371.                       causes an amount to be formatted as if it has the number 
  21372.                       of digits specified by n. If more digit positions are 
  21373.                       required than specified, this conversion specification is 
  21374.                       ignored. Digit positions in excess of those actually 
  21375.                       required are filled with the numeric fill character. (See 
  21376.                       the =f specification above). 
  21377.  
  21378.                       If thousands grouping is enabled, the behavior is: 
  21379.  
  21380.                         1. Format the number as if it is an n digit number. 
  21381.  
  21382.                         2. Insert fill characters to the left of the leftmost 
  21383.                            digit (for example, $0001234.56 or $***1234.56). 
  21384.  
  21385.                         3. Insert the separator character (for example, 
  21386.                            $0,001,234.56 or $*,**1,234.56). 
  21387.  
  21388.                         4. If the fill character is not the digit zero, the 
  21389.                            separators are replaced by the fill character (for 
  21390.                            example, $****1,234.56). 
  21391.  
  21392.                       To ensure alignment, any characters appearing before or 
  21393.                       after the number in the formatted output, such as 
  21394.                       currency or sign symbols, are padded with space 
  21395.                       characters to make their positive and negative formats an 
  21396.                       equal length. 
  21397.  
  21398.           .p          A decimal digit string that specifies the number of 
  21399.                       digits after the radix character. If the value of the 
  21400.                       precision p is 0, no radix character appears. If this 
  21401.                       option is not included, a default specified by the 
  21402.                       current locale is used. The amount being formatted is 
  21403.                       rounded to the specified number of digits prior to 
  21404.                       formatting. 
  21405.  
  21406.           The LC_MONETARY category of the program's locale affects the behavior 
  21407.           of this function, including the monetary radix character (which is 
  21408.           different from the numeric radix character affected by the LC_NUMERIC 
  21409.           category), the thousands (or alternate grouping) separator, the 
  21410.           currency symbols, and formats. 
  21411.  
  21412.  Returns 
  21413.  
  21414.           If the total number of resulting bytes including the terminating null 
  21415.           character is not more than maxsize, strfmon returns the number of 
  21416.           bytes placed into the array pointed to by s, not including the 
  21417.           terminating null character. Otherwise, strfmon returns -1 and the 
  21418.           contents of the array are indeterminate. 
  21419.  
  21420.  Example Code 
  21421.  
  21422.           This example uses strfmon to format the monetary value for money, 
  21423.           then prints the resulting string. 
  21424.  
  21425.                     #include <monetary.h>
  21426.                     #include <locale.h>
  21427.                     #include <stdio.h>
  21428.                     #include <stdlib.h>
  21429.  
  21430.                     int main(void)
  21431.                     {
  21432.                        char   string[100];     /* hold the string returned from strfmon() */
  21433.                        double money = 1234.56;
  21434.  
  21435.                        if (NULL == setlocale(LC_ALL, "en_us.ibm-850")) {
  21436.                           printf("Unable to setlocale().\n");
  21437.                           exit(EXIT_FAILURE);
  21438.                        }
  21439.                        strfmon(string, 100, "%i", money);
  21440.                        printf("International currency format = \"%s\"\n", string);
  21441.                        strfmon(string, 100, "%n", money);
  21442.                        printf("National currency format      = \"%s\"\n", string);
  21443.                        return 0;
  21444.  
  21445.                        /****************************************************************************
  21446.                           The output should be similar to :
  21447.  
  21448.                           International currency format = "USD 1,234.56"
  21449.                           National currency format      = "$1,234.56"
  21450.                        ****************************************************************************/
  21451.                     }
  21452.  
  21453.  Related Information 
  21454.  
  21455.               strftime 
  21456.  
  21457.  
  21458. ΓòÉΓòÉΓòÉ 3.208. strftime - Convert to Formatted Time ΓòÉΓòÉΓòÉ
  21459.  
  21460. strftime - Convert to Formatted Time 
  21461.  
  21462.  Syntax 
  21463.  
  21464.                     #include <time.h>
  21465.                     size_t strftime(char *dest, size_t maxsize,
  21466.                                     const char *format, const struct tm *timeptr);
  21467.  
  21468.  Description 
  21469.  
  21470.           strftime converts the time and date specification in the timeptr 
  21471.           structure into a character string. It then stores the null-terminated 
  21472.           string in the array pointed to by dest according to the format string 
  21473.           pointed to by format. maxsize specifies the maximum number of bytes 
  21474.           that can be copied into the array. 
  21475.  
  21476.           The format string is a multibyte character string containing: 
  21477.  
  21478.               Conversion specification characters, preceded by a % sign. 
  21479.               Ordinary multibyte characters, which are copied into the array 
  21480.                unchanged. 
  21481.  
  21482.           If data has the form of a conversion specifier, but is not one of the 
  21483.           accepted specifiers, the characters following the % are copied to the 
  21484.           output. 
  21485.  
  21486.           The characters that are converted are determined by the LC_TIME 
  21487.           category of the current locale and by the values in the time 
  21488.           structure pointed to by timeptr. The time structure pointed to by 
  21489.           timeptr is usually obtained by calling the gmtime or localtime 
  21490.           function. 
  21491.  
  21492.           When objects to be copied overlap, the behavior is undefined. 
  21493.  
  21494.           The following table lists the strftime conversion specifiers: 
  21495.  
  21496.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  21497.                     Γöé SpecifierΓöé Meaning                        Γöé
  21498.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21499.                     Γöé %a    Γöé Replace with abbreviated weekday name from locale.  Γöé
  21500.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21501.                     Γöé %A    Γöé Replace with full weekday name from locale.      Γöé
  21502.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21503.                     Γöé %b    Γöé Replace with abbreviated month name from locale.   Γöé
  21504.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21505.                     Γöé %B    Γöé Replace with full month name from locale.       Γöé
  21506.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21507.                     Γöé %c    Γöé Replace with date and time from locale.        Γöé
  21508.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21509.                     Γöé %C    Γöé Replace with locale's century number (year divided  Γöé
  21510.                     Γöé      Γöé by 100 and truncated)                 Γöé
  21511.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21512.                     Γöé %d    Γöé Replace with day of the month as a decimal number   Γöé
  21513.                     Γöé      Γöé (01-31).                       Γöé
  21514.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21515.                     Γöé %D    Γöé Insert date in mm/dd/yy form, regardless of locale.  Γöé
  21516.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21517.                     Γöé %e    Γöé Insert day of the month as a decimal number      Γöé
  21518.                     Γöé      Γöé (" 1"-"31").  A space precedes a single digit.    Γöé
  21519.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21520.                     Γöé %Ec    Γöé Replace with the locale's alternative date and time  Γöé
  21521.                     Γöé      Γöé representation.                    Γöé
  21522.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21523.                     Γöé %EC    Γöé Replace with the name of the base year (period) in  Γöé
  21524.                     Γöé      Γöé the locale's alternate representation.        Γöé
  21525.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21526.                     Γöé %Ex    Γöé Replace with the locale's alternative date represen- Γöé
  21527.                     Γöé      Γöé tation.                        Γöé
  21528.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21529.                     Γöé %EX    Γöé Replace with the locale's alternative time represen- Γöé
  21530.                     Γöé      Γöé tation.                        Γöé
  21531.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21532.                     Γöé %Ey    Γöé Replace with the offset from %EC (year only) in the  Γöé
  21533.                     Γöé      Γöé locale's alternate representation.          Γöé
  21534.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21535.                     Γöé %EY    Γöé Replace with the full alternative year represen-   Γöé
  21536.                     Γöé      Γöé tation.                        Γöé
  21537.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21538.                     Γöé %h    Γöé Replace with locale's abbreviated month name. This  Γöé
  21539.                     Γöé      Γöé is the same as %b.                  Γöé
  21540.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21541.                     Γöé %H    Γöé Replace with hour (24-hour clock) as a decimal    Γöé
  21542.                     Γöé      Γöé number (00-23).                    Γöé
  21543.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21544.                     Γöé %I    Γöé Replace with hour (12-hour clock) as a decimal    Γöé
  21545.                     Γöé      Γöé number (01-12).                    Γöé
  21546.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21547.                     Γöé %j    Γöé Replace with day of the year as a decimal number   Γöé
  21548.                     Γöé      Γöé (001-366).                      Γöé
  21549.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21550.                     Γöé %m    Γöé Replace with month as a decimal number (01-12).    Γöé
  21551.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21552.                     Γöé %M    Γöé Replace with minute as a decimal number (00-59).   Γöé
  21553.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21554.                     Γöé %n    Γöé Replace with a newline character.           Γöé
  21555.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21556.                     Γöé %Od    Γöé Replace with the day of month, using the locale's   Γöé
  21557.                     Γöé      Γöé alternative numeric symbols, filled as needed with  Γöé
  21558.                     Γöé      Γöé leading zeroes if there is any alternative symbol   Γöé
  21559.                     Γöé      Γöé for zero; otherwise fill with leading spaces.     Γöé
  21560.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21561.                     Γöé %Oe    Γöé Replace with the day of the month, using the     Γöé
  21562.                     Γöé      Γöé locale's alternative numeric symbols, filled as    Γöé
  21563.                     Γöé      Γöé needed with leading spaces.              Γöé
  21564.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21565.                     Γöé %OH    Γöé Replace with the hour (24-hour clock), using the   Γöé
  21566.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21567.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21568.                     Γöé %OI    Γöé Replace with the hour (12-hour clock), using the   Γöé
  21569.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21570.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21571.                     Γöé %Om    Γöé Replace with the month, using the locale's alterna-  Γöé
  21572.                     Γöé      Γöé tive numeric symbols.                 Γöé
  21573.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21574.                     Γöé %OM    Γöé Replace with the minutes, using the locale's alter-  Γöé
  21575.                     Γöé      Γöé native numeric symbols.                Γöé
  21576.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21577.                     Γöé %OS    Γöé Replace with the seconds, using the locale's alter-  Γöé
  21578.                     Γöé      Γöé native numeric symbols.                Γöé
  21579.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  21580.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  21581.                     Γöé %Ou    Γöé Replace with the weekday as a decimal number (1 to  Γöé
  21582.                     Γöé      Γöé 7), with 1 representing Monday, using the locale's  Γöé
  21583.                     Γöé      Γöé alternative numeric symbols.             Γöé
  21584.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21585.                     Γöé %OU    Γöé Replace with the week number of the year (00-53),   Γöé
  21586.                     Γöé      Γöé where Sunday is the first day of the week, using the Γöé
  21587.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21588.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21589.                     Γöé &OV    Γöé Replace with week number of the year (01-53), where  Γöé
  21590.                     Γöé      Γöé Sunday is the first day of the week, using the    Γöé
  21591.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21592.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21593.                     Γöé %Ow    Γöé Replace with the weekday (Sunday=0), using the    Γöé
  21594.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21595.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21596.                     Γöé % OW    Γöé Replace with the week number of the year (01-53),   Γöé
  21597.                     Γöé      Γöé where Monday is the first day of the week, using the Γöé
  21598.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21599.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21600.                     Γöé %Oy    Γöé Replace with the year (offset from %C) in the     Γöé
  21601.                     Γöé      Γöé locale's alternative representation, using the    Γöé
  21602.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  21603.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21604.                     Γöé %p    Γöé Replace with the locale's equivalent of AM or PM.   Γöé
  21605.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21606.                     Γöé %r    Γöé Replace with a string equivalent to %I:%M:%S %p.   Γöé
  21607.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21608.                     Γöé %R    Γöé Replace with time in 24 hour notation (%H:%M)     Γöé
  21609.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21610.                     Γöé %S    Γöé Replace with second as a decimal number (00-61).   Γöé
  21611.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21612.                     Γöé %t    Γöé Replace with a tab.                  Γöé
  21613.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21614.                     Γöé %T    Γöé Replace with a string equivalent to %H:%M:%S.     Γöé
  21615.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21616.                     Γöé %u    Γöé Replace with the weekday as a decimal number (1 to  Γöé
  21617.                     Γöé      Γöé 7), with 1 representing Monday.            Γöé
  21618.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21619.                     Γöé %U    Γöé Replace with week number of the year (00-53), where  Γöé
  21620.                     Γöé      Γöé Sunday is the first day of the week.         Γöé
  21621.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21622.                     Γöé %V    Γöé Replace with week number of the year (01-53), where  Γöé
  21623.                     Γöé      Γöé Monday is the first day of the week.  If the week of Γöé
  21624.                     Γöé      Γöé January 1 is four or more days in the new year, it  Γöé
  21625.                     Γöé      Γöé is week 1; otherwise, it is week 53 of the previous  Γöé
  21626.                     Γöé      Γöé year and the following week is week 1.        Γöé
  21627.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21628.                     Γöé %w    Γöé Replace with weekday (0-6), where Sunday is 0.    Γöé
  21629.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21630.                     Γöé %W    Γöé Replace with week number of the year (00-53), where  Γöé
  21631.                     Γöé      Γöé Monday is the first day of the week.         Γöé
  21632.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21633.                     Γöé %x    Γöé Replace with date representation of locale.      Γöé
  21634.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21635.                     Γöé %X    Γöé Replace with time representation of locale.      Γöé
  21636.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21637.                     Γöé %y    Γöé Replace with year without the century as a decimal  Γöé
  21638.                     Γöé      Γöé number (00-99).                    Γöé
  21639.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21640.                     Γöé %Y    Γöé Replace with year including the century as a decimal Γöé
  21641.                     Γöé      Γöé number.                        Γöé
  21642.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21643.                     Γöé %Z    Γöé Replace with name of time zone, or no characters if  Γöé
  21644.                     Γöé      Γöé time zone is not available.              Γöé
  21645.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  21646.                     Γöé %%    Γöé Replace with %.                    Γöé
  21647.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  21648.  
  21649.           For %Z, the tm_isdst flag in the tm structure passed to strftime 
  21650.           specifies whether the time zone is standard or Daylight Savings time. 
  21651.  
  21652.           If data has the form of a directive, but is not one of the above, the 
  21653.           characters following the % are copied to the output. 
  21654.  
  21655.  Returns 
  21656.  
  21657.           If the total number of bytes in the resulting string including the 
  21658.           terminating null byte does not exceed maxsize, strftime returns the 
  21659.           number of bytes placed into dest, not including the terminating null 
  21660.           byte; otherwise, strftime returns 0 and the content of the string is 
  21661.           indeterminate. 
  21662.  
  21663.  Example Code 
  21664.  
  21665.           This example gets the time and date from localtime, calls strftime to 
  21666.           format it, and prints the resulting string. 
  21667.  
  21668.                     #include <stdio.h>
  21669.                     #include <time.h>
  21670.  
  21671.                     int main(void)
  21672.                     {
  21673.                        char dest[70];
  21674.                        int ch;
  21675.                        time_t temp;
  21676.                        struct tm *timeptr;
  21677.  
  21678.                        temp = time(NULL);
  21679.                        timeptr = localtime(&temp);
  21680.                        ch = strftime(dest, sizeof(dest)-1, "Today is %A,"" %b %d. \n Time: %I:%M %p"
  21681.                           , timeptr);
  21682.                        printf("%d characters placed in string to make: \n \n %s", ch, dest);
  21683.                        return 0;
  21684.  
  21685.                        /****************************************************************************
  21686.                           The output should be similar to:
  21687.  
  21688.                           41 characters placed in string to make:
  21689.                            Today is Monday, Sep 16.
  21690.                            Time: 06:31 pm
  21691.                        ****************************************************************************/
  21692.                     }
  21693.  
  21694.  Related Information 
  21695.  
  21696.               asctime 
  21697.               ctime 
  21698.               gmtime 
  21699.               localtime 
  21700.               setlocale 
  21701.               strptime 
  21702.               time 
  21703.               wcsftime 
  21704.  
  21705.  
  21706. ΓòÉΓòÉΓòÉ 3.209. stricmp - Compare Strings as Lowercase ΓòÉΓòÉΓòÉ
  21707.  
  21708. stricmp - Compare Strings as Lowercase 
  21709.  
  21710.  Syntax 
  21711.  
  21712.                     #include <string.h>
  21713.                     int stricmp(const char *string1, const char *string2);
  21714.  
  21715.  Description 
  21716.  
  21717.           stricmp compares string1 and string2 without sensitivity for case. 
  21718.           All alphabetic characters in the arguments string1 and string2 are 
  21719.           converted to lowercase before the comparison using locale 
  21720.           information. stricmp operates on null-terminated strings. 
  21721.  
  21722.  Returns 
  21723.  
  21724.           stricmp returns a value that indicates the following relationship 
  21725.           between the two strings :  compact break=fit. 
  21726.  
  21727.           Value             Meaning 
  21728.  
  21729.           Less than 0       string1 less than string2 
  21730.  
  21731.           0                 string1 identical to string2 
  21732.  
  21733.           Greater than 0    string1 greater than string2. 
  21734.  
  21735.  Example Code 
  21736.  
  21737.           This example uses stricmp to compare two strings. 
  21738.  
  21739.                     #include <stdio.h>
  21740.                     #include <string.h>
  21741.  
  21742.                     int main(void)
  21743.                     {
  21744.                        char *str1 = "this is a string";
  21745.                        char *str2 = "THIS IS A STRING";
  21746.  
  21747.                        /* Compare two strings without regard to case                              */
  21748.  
  21749.                        if (stricmp(str1, str2))
  21750.                           printf("str1 is not the same as str2\n");
  21751.                        else
  21752.                           printf("str1 is the same as str2\n");
  21753.                        return 0;
  21754.  
  21755.                        /****************************************************************************
  21756.                           The output should be:
  21757.  
  21758.                           str1 is the same as str2
  21759.                        ****************************************************************************/
  21760.                     }
  21761.  
  21762.  Related Information 
  21763.  
  21764.               strcmp 
  21765.               strcmpi 
  21766.               strcspn 
  21767.               strncmp 
  21768.               strnicmp 
  21769.               wcscmp 
  21770.               wcsncmp 
  21771.  
  21772.  
  21773. ΓòÉΓòÉΓòÉ 3.210. strlen - Determine String Length ΓòÉΓòÉΓòÉ
  21774.  
  21775. strlen - Determine String Length 
  21776.  
  21777.  Syntax 
  21778.  
  21779.                     #include <string.h>
  21780.                     size_t strlen(const char *string);
  21781.  
  21782.  Description 
  21783.  
  21784.           strlen determines the length of string excluding the terminating null 
  21785.           byte. 
  21786.  
  21787.  Returns 
  21788.  
  21789.           strlen returns the length of string. 
  21790.  
  21791.  Example Code 
  21792.  
  21793.           This example determines the length of a string. 
  21794.  
  21795.                     #include <stdio.h>
  21796.                     #include <string.h>
  21797.  
  21798.                     int main(int argc,char **argv)
  21799.                     {
  21800.                        char *String = "How long is this string?";
  21801.  
  21802.                        printf("Length of string \"%s\" is %i.\n", String, strlen(String));
  21803.                        return 0;
  21804.  
  21805.                        /****************************************************************************
  21806.                           The output should be:
  21807.  
  21808.                           Length of string "How long is this string?" is 24.
  21809.                        ****************************************************************************/
  21810.                     }
  21811.  
  21812.  Related Information 
  21813.  
  21814.               mblen 
  21815.               strrev 
  21816.               wcslen 
  21817.  
  21818.  
  21819. ΓòÉΓòÉΓòÉ 3.211. strlwr - Convert Uppercase to Lowercase ΓòÉΓòÉΓòÉ
  21820.  
  21821. strlwr - Convert Uppercase to Lowercase 
  21822.  
  21823.  Syntax 
  21824.  
  21825.                     #include <string.h>
  21826.                     char *strlwr(char *string);
  21827.  
  21828.  Description 
  21829.  
  21830.           strlwr converts any uppercase letters in the given null-terminated 
  21831.           string to lowercase. Other characters are not affected. 
  21832.  
  21833.  Returns 
  21834.  
  21835.           strlwr returns a pointer to the converted string. There is no error 
  21836.           return. 
  21837.  
  21838.  Example Code 
  21839.  
  21840.           This example makes a copy in all lowercase of the string "General 
  21841.           Assembly", and then prints the copy. 
  21842.  
  21843.                     #include <string.h>
  21844.                     #include <stdio.h>
  21845.  
  21846.                     int main(void)
  21847.                     {
  21848.                        char *string = "General Assembly";
  21849.                        char *copy;
  21850.  
  21851.                        copy = strlwr(strdup(string));
  21852.                        printf("Expected result: general assembly\n");
  21853.                        printf("strlwr returned: %s\n", copy);
  21854.                        return 0;
  21855.  
  21856.                        /****************************************************************************
  21857.                           The output should be:
  21858.  
  21859.                           Expected result: general assembly
  21860.                           strlwr returned: general assembly
  21861.                        ****************************************************************************/
  21862.                     }
  21863.  
  21864.  Related Information 
  21865.  
  21866.               strupr 
  21867.               _toascii - _tolower - _toupper 
  21868.               tolower - toupper 
  21869.               towlower - towupper 
  21870.  
  21871.  
  21872. ΓòÉΓòÉΓòÉ 3.212. strncat - Concatenate Strings ΓòÉΓòÉΓòÉ
  21873.  
  21874. strncat - Concatenate Strings 
  21875.  
  21876.  Syntax 
  21877.  
  21878.                     #include <string.h>
  21879.                     char *strncat(char *string1, const char *string2, size_t count);
  21880.  
  21881.  Description 
  21882.  
  21883.           strncat appends the first count bytes of string2 to string1 and ends 
  21884.           the resulting string with a null byte (\0). If count is greater than 
  21885.           the length of string2, the length of string2 is used in place of 
  21886.           count. 
  21887.  
  21888.           The strncat function operates on null-terminated strings. The string 
  21889.           argument to the function should contain a null byte (\0) marking the 
  21890.           end of the string. 
  21891.  
  21892.  Returns 
  21893.  
  21894.           strncat returns a pointer to the joined string (string1). 
  21895.  
  21896.  Example Code 
  21897.  
  21898.           This example demonstrates the difference between strcat and strncat. 
  21899.           strcat appends the entire second string to the first, whereas strncat 
  21900.           appends only the specified number of bytes in the second string to 
  21901.           the first. 
  21902.  
  21903.                     #include <stdio.h>
  21904.                     #include <string.h>
  21905.  
  21906.                     #define  SIZE          40
  21907.  
  21908.                     int main(void)
  21909.                     {
  21910.                        char buffer1[SIZE] = "computer";
  21911.                        char *ptr;
  21912.  
  21913.                        /* Call strcat with buffer1 and " program"                                 */
  21914.  
  21915.                        ptr = strcat(buffer1, " program");
  21916.                        printf("strcat : buffer1 = \"%s\"\n", buffer1);
  21917.  
  21918.                        /* Reset buffer1 to contain just the string "computer" again               */
  21919.  
  21920.                        memset(buffer1, '\0', sizeof(buffer1));
  21921.                        ptr = strcpy(buffer1, "computer");
  21922.  
  21923.                        /* Call strncat with buffer1 and " program"                                */
  21924.  
  21925.                        ptr = strncat(buffer1, " program", 3);
  21926.                        printf("strncat: buffer1 = \"%s\"\n", buffer1);
  21927.                        return 0;
  21928.  
  21929.                        /****************************************************************************
  21930.                           The output should be:
  21931.  
  21932.                           strcat : buffer1 = "computer program"
  21933.                           strncat: buffer1 = "computer pr"
  21934.                        ****************************************************************************/
  21935.                     }
  21936.  
  21937.  Related Information 
  21938.  
  21939.               strcat 
  21940.               strnicmp 
  21941.               wcscat 
  21942.               wcsncat 
  21943.  
  21944.  
  21945. ΓòÉΓòÉΓòÉ 3.213. strncmp - Compare Strings ΓòÉΓòÉΓòÉ
  21946.  
  21947. strncmp - Compare Strings 
  21948.  
  21949.  Syntax 
  21950.  
  21951.                     #include <string.h>
  21952.                     int strncmp(const char *string1, const char *string2, size_t count);
  21953.  
  21954.  Description 
  21955.  
  21956.           strncmp compares the first count bytes of string1 and string2. 
  21957.  
  21958.  Returns 
  21959.  
  21960.           strncmp returns a value indicating the relationship between the 
  21961.           substrings, as follows:  compact break=fit. 
  21962.  
  21963.           Value             Meaning 
  21964.  
  21965.           Less than 0       substring1 less than substring2 
  21966.  
  21967.           0                 substring1 equivalent to substring2 
  21968.  
  21969.           Greater than 0    substring1 greater than substring2 
  21970.  
  21971.  Example Code 
  21972.  
  21973.           This example demonstrates the difference between strcmp and strncmp. 
  21974.  
  21975.                     #include <stdio.h>
  21976.                     #include <string.h>
  21977.  
  21978.                     #define  SIZE          10
  21979.  
  21980.                     int main(void)
  21981.                     {
  21982.                        int result;
  21983.                        int index = 3;
  21984.                        char buffer1[SIZE] = "abcdefg";
  21985.                        char buffer2[SIZE] = "abcfg";
  21986.                        void print_result(int, char *, char *);
  21987.  
  21988.                        result = strcmp(buffer1, buffer2);
  21989.                        printf("Comparison of each character\n");
  21990.                        printf("  strcmp: ");
  21991.                        print_result(result, buffer1, buffer2);
  21992.                        result = strncmp(buffer1, buffer2, index);
  21993.                        printf("\nComparison of only the first %i characters\n", index);
  21994.                        printf("  strncmp: ");
  21995.                        print_result(result, buffer1, buffer2);
  21996.                        return 0;
  21997.                        /****************************************************************************
  21998.                           The output should be:
  21999.  
  22000.                           Comparison of each character
  22001.                             strcmp: "abcdefg" is less than "abcfg"
  22002.  
  22003.                           Comparison of only the first 3 characters
  22004.                             strncmp: "abcdefg" is identical to "abcfg"
  22005.                        ****************************************************************************/
  22006.                     }
  22007.  
  22008.                     void print_result(int res,char *p_buffer1,char *p_buffer2)
  22009.                     {
  22010.                        if (0 == res)
  22011.                           printf("\"%s\" is identical to \"%s\"\n", p_buffer1, p_buffer2);
  22012.                        else
  22013.                           if (res < 0)
  22014.                              printf("\"%s\" is less than \"%s\"\n", p_buffer1, p_buffer2);
  22015.                           else
  22016.                              printf("\"%s\" is greater than \"%s\"\n", p_buffer1, p_buffer2);
  22017.                     }
  22018.  
  22019.  Related Information 
  22020.  
  22021.               strcmp 
  22022.               strcmpi 
  22023.               strcoll 
  22024.               strcspn 
  22025.               stricmp 
  22026.               strnicmp 
  22027.               wcscmp 
  22028.               wcsncmp 
  22029.  
  22030.  
  22031. ΓòÉΓòÉΓòÉ 3.214. strncpy - Copy Strings ΓòÉΓòÉΓòÉ
  22032.  
  22033. strncpy - Copy Strings 
  22034.  
  22035.  Syntax 
  22036.  
  22037.                     #include <string.h>
  22038.                     char *strncpy(char *string1, const char *string2, size_t count);
  22039.  
  22040.  Description 
  22041.  
  22042.           strncpy copies count bytes of string2 to string1. If count is less 
  22043.           than or equal to the length of string2, a null byte (\0) is not 
  22044.           appended to the copied string. If count is greater than the length of 
  22045.           string2, the string1 result is padded with null bytes (\0) up to 
  22046.           length count. 
  22047.  
  22048.  Returns 
  22049.  
  22050.           strncpy returns a pointer to string1. 
  22051.  
  22052.  Example Code 
  22053.  
  22054.           This example demonstrates the difference between strcpy and strncpy. 
  22055.  
  22056.                     #include <stdio.h>
  22057.                     #include <string.h>
  22058.  
  22059.                     #define  SIZE          40
  22060.  
  22061.                     int main(void)
  22062.                     {
  22063.                        char source[SIZE] = "123456789";
  22064.                        char source1[SIZE] = "123456789";
  22065.                        char destination[SIZE] = "abcdefg";
  22066.                        char destination1[SIZE] = "abcdefg";
  22067.                        char *return_string;
  22068.                        int index = 5;
  22069.  
  22070.                        /* This is how strcpy works                                                */
  22071.  
  22072.                        printf("destination is originally = '%s'\n", destination);
  22073.                        return_string = strcpy(destination, source);
  22074.                        printf("After strcpy, destination becomes '%s'\n\n", destination);
  22075.  
  22076.                        /* This is how strncpy works                                               */
  22077.  
  22078.                        printf("destination1 is originally = '%s'\n", destination1);
  22079.                        return_string = strncpy(destination1, source1, index);
  22080.                        printf("After strncpy, destination1 becomes '%s'\n", destination1);
  22081.                        return 0;
  22082.  
  22083.                        /****************************************************************************
  22084.                           The output should be:
  22085.  
  22086.                           destination is originally = 'abcdefg'
  22087.                           After strcpy, destination becomes '123456789'
  22088.  
  22089.                           destination1 is originally = 'abcdefg'
  22090.                           After strncpy, destination1 becomes '12345fg'
  22091.                        ****************************************************************************/
  22092.                     }
  22093.  
  22094.  Related Information 
  22095.  
  22096.               strcpy 
  22097.               strdup 
  22098.               strnicmp 
  22099.  
  22100.  
  22101. ΓòÉΓòÉΓòÉ 3.215. strnicmp - Compare Strings Without Case Sensitivity ΓòÉΓòÉΓòÉ
  22102.  
  22103. strnicmp - Compare Strings Without Case Sensitivity 
  22104.  
  22105.  Syntax 
  22106.  
  22107.                     #include <string.h>
  22108.                     int strnicmp(const char *string1, const char *string2, int n);
  22109.  
  22110.  Description 
  22111.  
  22112.           strnicmp compares, at most, the first n characters of string1 and 
  22113.           string2. It operates on null-terminated strings. 
  22114.  
  22115.           strnicmp is case-insensitive; the uppercase and lowercase forms of a 
  22116.           letter are considered equivalent. Conversion to lowercase uses locale 
  22117.           information. 
  22118.  
  22119.  Returns 
  22120.  
  22121.           strnicmp returns a value indicating the relationship between the 
  22122.           substrings, as listed below:  compact break=fit. 
  22123.  
  22124.           Value             Meaning 
  22125.  
  22126.           Less than 0       substring1 less than substring2 
  22127.  
  22128.           0                 substring1 equivalent to substring2 
  22129.  
  22130.           Greater than 0    substring1 greater than substring2. 
  22131.  
  22132.  Example Code 
  22133.  
  22134.           This example uses strnicmp to compare two strings. 
  22135.  
  22136.                     #include <string.h>
  22137.                     #include <stdio.h>
  22138.  
  22139.                     int main(void)
  22140.                     {
  22141.                        char *str1 = "THIS IS THE FIRST STRING";
  22142.                        char *str2 = "This is the second string";
  22143.                        int numresult;
  22144.  
  22145.                          /* Compare the first 11 characters of str1 and str2
  22146.                             without regard to case                                                */
  22147.  
  22148.                        numresult = strnicmp(str1, str2, 11);
  22149.                        if (numresult < 0)
  22150.                           printf("String 1 is less than string2.\n");
  22151.                        else
  22152.                           if (numresult > 0)
  22153.                              printf("String 1 is greater than string2.\n");
  22154.                           else
  22155.                              printf("The two strings are equivalent.\n");
  22156.                        return 0;
  22157.  
  22158.                        /****************************************************************************
  22159.                           The output should be:
  22160.  
  22161.                           The two strings are equivalent.
  22162.                        ****************************************************************************/
  22163.                     }
  22164.  
  22165.  Related Information 
  22166.  
  22167.               strcmp 
  22168.               strcmpi 
  22169.               stricmp 
  22170.               strncmp 
  22171.               wcscmp 
  22172.               wcsncmp 
  22173.  
  22174.  
  22175. ΓòÉΓòÉΓòÉ 3.216. strnset - strset - Set Bytes in String ΓòÉΓòÉΓòÉ
  22176.  
  22177. strnset - strset - Set Bytes in String 
  22178.  
  22179.  Syntax 
  22180.  
  22181.                     #include <string.h>
  22182.                     char *strnset(char *string, int c, size_t n);
  22183.                     char *strset(char *string, int c);
  22184.  
  22185.  Description 
  22186.  
  22187.           strnset sets, at most, the first n bytes of string to c (converted to 
  22188.           a char). If n is greater than the length of string, the length of 
  22189.           string is used in place of n. strset sets all bytes of string, except 
  22190.           the ending null character (\0), to c (converted to a char). 
  22191.  
  22192.           For both functions, the string must be initialized and must end with 
  22193.           a null character (\0). 
  22194.  
  22195.  Returns 
  22196.  
  22197.           Both strset and strnset return a pointer to the altered string. There 
  22198.           is no error return value. 
  22199.  
  22200.  Example Code 
  22201.  
  22202.           In this example, strnset sets not more than four bytes of a string to 
  22203.           the byte 'x'. Then the strset function changes any non-null bytes of 
  22204.           the string to the byte 'k'. 
  22205.  
  22206.                     #include <stdio.h>
  22207.                     #include <string.h>
  22208.  
  22209.                     int main(void)
  22210.                     {
  22211.                        char *str = "abcdefghi";
  22212.  
  22213.                        printf("This is the string: %s\n", str);
  22214.                        printf("This is the string after strnset: %s\n", strnset(str, 'x', 4));
  22215.                        printf("This is the string after strset: %s\n", strset(str, 'k'));
  22216.                        return 0;
  22217.  
  22218.                        /****************************************************************************
  22219.                           The output should be:
  22220.  
  22221.                           This is the string: abcdefghi
  22222.                           This is the string after strnset: xxxxefghi
  22223.                           This is the string after strset: kkkkkkkkk
  22224.                        ****************************************************************************/
  22225.                     }
  22226.  
  22227.  Related Information 
  22228.  
  22229.               strchr 
  22230.               strpbrk 
  22231.               wcschr 
  22232.               wcspbrk 
  22233.  
  22234.  
  22235. ΓòÉΓòÉΓòÉ 3.217. strpbrk - Find Bytes in String ΓòÉΓòÉΓòÉ
  22236.  
  22237. strpbrk - Find Bytes in String 
  22238.  
  22239.  Syntax 
  22240.  
  22241.                     #include <string.h>
  22242.                     char *strpbrk(const char *string1, const char *string2);
  22243.  
  22244.  Description 
  22245.  
  22246.           strpbrk locates the first occurrence in the string pointed to by 
  22247.           string1 of any bytes from the string pointed to by string2. 
  22248.  
  22249.  Returns 
  22250.  
  22251.           strpbrk returns a pointer to the byte. If string1 and string2 have no 
  22252.           bytes in common, a NULL pointer is returned. 
  22253.  
  22254.  Example Code 
  22255.  
  22256.           This example returns a pointer to the first occurrence in the array 
  22257.           string of either a or b. 
  22258.  
  22259.                     #include <stdio.h>
  22260.                     #include <string.h>
  22261.  
  22262.                     int main(void)
  22263.                     {
  22264.                        char *result,*string = "A Blue Danube";
  22265.                        char *chars = "ab";
  22266.  
  22267.                        result = strpbrk(string, chars);
  22268.                        printf("The first occurrence of any of the characters \"%s\" in "
  22269.                           "\"%s\" is \"%s\"\n", chars, string, result);
  22270.                        return 0;
  22271.  
  22272.                        /****************************************************************************
  22273.                           The output should be:
  22274.  
  22275.                           The first occurrence of any of the characters "ab" in
  22276.                           "A Blue Danube" is "anube"
  22277.                        ****************************************************************************/
  22278.                     }
  22279.  
  22280.  Related Information 
  22281.  
  22282.               strchr 
  22283.               strcspn 
  22284.               strrchr 
  22285.               strspn 
  22286.               wcschr 
  22287.               wcscspn 
  22288.               wcspbrk 
  22289.               wcsrchr 
  22290.               wcswcs 
  22291.  
  22292.  
  22293. ΓòÉΓòÉΓòÉ 3.218. strptime - Convert to Formatted Date and Time ΓòÉΓòÉΓòÉ
  22294.  
  22295. strptime - Convert to Formatted Date and Time 
  22296.  
  22297.  Syntax 
  22298.  
  22299.                     #include <time.h>
  22300.                     char *strptime(const char *buf, const char *fmt, struct tm *tm);
  22301.  
  22302.  Description 
  22303.  
  22304.           strptime uses the format specified by fmt to convert the character 
  22305.           string pointed to by buf to values that are stored in the structure 
  22306.           pointed to by tm. 
  22307.  
  22308.           The *fmt is composed of zero or more directives. Each directive is 
  22309.           composed of one of the following: 
  22310.  
  22311.               One or more white-space characters (as specified by the isspace 
  22312.                function) 
  22313.               An ordinary character (neither % nor a white-space character) 
  22314.               A conversion specifier. 
  22315.  
  22316.           Each conversion specifier consists of a % character followed by a 
  22317.           conversion character that specifies the replacement required. There 
  22318.           must be white-space or other non-alphanumeric characters between any 
  22319.           two conversion specifiers. 
  22320.  
  22321.           For a directive composed of white-space characters, strptime scans 
  22322.           input up to the first character that is not white space (which 
  22323.           remains unscanned), or until no more characters can be scanned. 
  22324.  
  22325.           For a directive that is an ordinary character, strptime scans the 
  22326.           next character from the buffer. If the scanned character differs from 
  22327.           the one comprising the directive, the directive fails and the 
  22328.           differing and subsequent characters remain unscanned. 
  22329.  
  22330.           For a series of directives composed of %n, %t, white-space 
  22331.           characters, or any combination, strptime scans up to the first 
  22332.           character that is not white space (which remains unscanned), or until 
  22333.           no more characters can be scanned. 
  22334.  
  22335.           For any other conversion specification, strptime scans characters 
  22336.           until a character matching the next directive is scanned, or until no 
  22337.           more characters can be scanned. It then compares these characters, 
  22338.           excepting the one matching the next directive, to the locale values 
  22339.           associated with the conversion specifier. If a match is found, 
  22340.           strptime sets the appropriate tm structure members to values 
  22341.           corresponding to the locale information. Case is ignored when items 
  22342.           in buf are matched, such as month or weekday names. If no match is 
  22343.           found, strptime fails and no more characters are scanned. 
  22344.  
  22345.           The following tables list the conversion specifiers for strptime. 
  22346.  
  22347.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  22348.                     Γöé SpecifierΓöé Meaning                        Γöé
  22349.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22350.                     Γöé %a    Γöé Day of week, using locale's abbreviated or full    Γöé
  22351.                     Γöé      Γöé weekday name.                     Γöé
  22352.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22353.                     Γöé %A    Γöé Day of week, using locale's abbreviated or full    Γöé
  22354.                     Γöé      Γöé weekday name.                     Γöé
  22355.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22356.                     Γöé %b    Γöé Month, using locale's abbreviated or full month    Γöé
  22357.                     Γöé      Γöé name.                         Γöé
  22358.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22359.                     Γöé %B    Γöé Month, using locale's abbreviated or full month    Γöé
  22360.                     Γöé      Γöé name.                         Γöé
  22361.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22362.                     Γöé %c    Γöé Date and time, using locale's date and time.     Γöé
  22363.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22364.                     Γöé %C    Γöé Century number (year divided by 100 and truncated to Γöé
  22365.                     Γöé      Γöé an integer)                      Γöé
  22366.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22367.                     Γöé %d    Γöé Day of the month (1-31; leading zeros permitted but  Γöé
  22368.                     Γöé      Γöé not required).                    Γöé
  22369.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22370.                     Γöé %D    Γöé Date as %m/%d/%y.                   Γöé
  22371.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22372.                     Γöé %e    Γöé Day of the month (1-31; leading zeros permitted but  Γöé
  22373.                     Γöé      Γöé not required).                    Γöé
  22374.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22375.                     Γöé %h    Γöé Month, using locale's abbreviated or full month    Γöé
  22376.                     Γöé      Γöé name.                         Γöé
  22377.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22378.                     Γöé %H    Γöé Hour (0-23; leading zeros permitted but not      Γöé
  22379.                     Γöé      Γöé required).                      Γöé
  22380.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22381.                     Γöé %I    Γöé Hour (0-12; leading zeros permitted but not      Γöé
  22382.                     Γöé      Γöé required).                      Γöé
  22383.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22384.                     Γöé %j    Γöé Day number of the year (001-366).           Γöé
  22385.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22386.                     Γöé %m    Γöé Month number (1-12; leading zeros permitted but not  Γöé
  22387.                     Γöé      Γöé required).                      Γöé
  22388.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22389.                     Γöé %M    Γöé Minute (0-59; leading zeros permitted but not     Γöé
  22390.                     Γöé      Γöé required).                      Γöé
  22391.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22392.                     Γöé %n    Γöé Any white space.                   Γöé
  22393.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22394.                     Γöé %p    Γöé Locale's equivalent of AM or PM.           Γöé
  22395.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22396.                     Γöé %r    Γöé Time as %I:%M:%S a.m. or %I:%M:%S p.m.        Γöé
  22397.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22398.                     Γöé %R    Γöé Time in 24 hour notation (5/11/99M)            Γöé
  22399.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22400.                     Γöé %S    Γöé Seconds (0-61; leading zeros permitted but not    Γöé
  22401.                     Γöé      Γöé required).                      Γöé
  22402.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22403.                     Γöé %t    Γöé Tab character.                    Γöé
  22404.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22405.                     Γöé %T    Γöé Time as %H:%M:%S.                   Γöé
  22406.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22407.                     Γöé %U    Γöé Week number of the year (0-53; where Sunday is the  Γöé
  22408.                     Γöé      Γöé first day of the week; leading zeros permitted but  Γöé
  22409.                     Γöé      Γöé not required).                    Γöé
  22410.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22411.                     Γöé %w    Γöé Weekday (0-6; where Sunday is 0; leading zeros per-  Γöé
  22412.                     Γöé      Γöé mitted but not required).               Γöé
  22413.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22414.                     Γöé %W    Γöé Week number of the year (0-53; where Monday is the  Γöé
  22415.                     Γöé      Γöé first day of the week; leading zeros permitted but  Γöé
  22416.                     Γöé      Γöé not required).                    Γöé
  22417.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22418.                     Γöé %x    Γöé Date, using locale's date format.           Γöé
  22419.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22420.                     Γöé %X    Γöé Time, using locale's time format.           Γöé
  22421.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22422.                     Γöé %y    Γöé Year within century (0-99; leading zeros permitted  Γöé
  22423.                     Γöé      Γöé but not required).                  Γöé
  22424.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22425.                     Γöé %Y    Γöé Year, including century.               Γöé
  22426.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22427.                     Γöé %Z    Γöé Time zone name                    Γöé
  22428.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22429.                     Γöé %%    Γöé Replace with %.                    Γöé
  22430.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  22431.  
  22432.           Some directives can be modified by the E or O modifier characters to 
  22433.           indicate that an alternative format or specification should be used 
  22434.           rather than the one normally used by the unmodified directive. If the 
  22435.           alternative format or specification does not exist in the current 
  22436.           locale, the behavior will be as if the unmodified directive were 
  22437.           used. 
  22438.  
  22439.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  22440.                     Γöé SpecifierΓöé Meaning                        Γöé
  22441.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22442.                     Γöé %Ec    Γöé Replace with the locale's alternative date and time  Γöé
  22443.                     Γöé      Γöé representation.                    Γöé
  22444.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22445.                     Γöé %EC    Γöé Replace with the name of the base year (period) in  Γöé
  22446.                     Γöé      Γöé the locale's alternative representation.       Γöé
  22447.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22448.                     Γöé %Ex    Γöé Replace with the locale's alternative date represen- Γöé
  22449.                     Γöé      Γöé tation.                        Γöé
  22450.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22451.                     Γöé %EX    Γöé Replace with the locale's alternative time represen- Γöé
  22452.                     Γöé      Γöé tation.                        Γöé
  22453.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22454.                     Γöé %Ey    Γöé Replace with the offset from %EC (year only) in the  Γöé
  22455.                     Γöé      Γöé locale's alternative representation.         Γöé
  22456.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22457.                     Γöé %EY    Γöé Replace with the full alternative year represen-   Γöé
  22458.                     Γöé      Γöé tation.                        Γöé
  22459.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22460.                     Γöé %Od    Γöé Replace with the day of month, using the locale's   Γöé
  22461.                     Γöé      Γöé alternative numeric symbols, filled as needed with  Γöé
  22462.                     Γöé      Γöé leading zeroes if there is any alternative symbol   Γöé
  22463.                     Γöé      Γöé for zero; otherwise, fill with leading spaces.    Γöé
  22464.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22465.                     Γöé %Oe    Γöé Replace with the day of the month, using the     Γöé
  22466.                     Γöé      Γöé locale's alternative numeric symbols, filled as    Γöé
  22467.                     Γöé      Γöé needed with leading spaces.              Γöé
  22468.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22469.                     Γöé %OH    Γöé Replace with the hour (24-hour clock), using the   Γöé
  22470.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  22471.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22472.                     Γöé %OI    Γöé Replace with the hour (12-hour clock), using the   Γöé
  22473.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  22474.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22475.                     Γöé %Om    Γöé Replace with the month, using the locale's alterna-  Γöé
  22476.                     Γöé      Γöé tive numeric symbols.                 Γöé
  22477.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22478.                     Γöé %OM    Γöé Replace with the minutes, using the locale's alter-  Γöé
  22479.                     Γöé      Γöé native numeric symbols.                Γöé
  22480.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22481.                     Γöé %OS    Γöé Replace with the seconds, using the locale's alter-  Γöé
  22482.                     Γöé      Γöé native numeric symbols.                Γöé
  22483.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22484.                     Γöé %OU    Γöé Replace with the week number of the year (Sunday as  Γöé
  22485.                     Γöé      Γöé the first day of the week, rules corresponding to   Γöé
  22486.                     Γöé      Γöé %U), using the locale's alternative numeric symbols. Γöé
  22487.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22488.                     Γöé %Ow    Γöé Replace with the weekday (Sunday=0), using the    Γöé
  22489.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  22490.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22491.                     Γöé %OW    Γöé Replace with the week number of the year (Monday as  Γöé
  22492.                     Γöé      Γöé the first day of the week), using the locale's    Γöé
  22493.                     Γöé      Γöé alternative numeric symbols.             Γöé
  22494.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  22495.                     Γöé %Oy    Γöé Replace with the year (offset from %C) in the     Γöé
  22496.                     Γöé      Γöé locale's alternative representation, using the    Γöé
  22497.                     Γöé      Γöé locale's alternative numeric symbols.         Γöé
  22498.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  22499.  
  22500.  Returns 
  22501.  
  22502.           If successful, strptime returns a pointer to the character following 
  22503.           the last character parsed. Otherwise, a null pointer is returned. 
  22504.  
  22505.  Example Code 
  22506.  
  22507.           This example uses strptime to convert a string to the structure xmas, 
  22508.           then prints the contents of the structure. 
  22509.  
  22510.                     #include <time.h>
  22511.                     #include <stdio.h>
  22512.                     #include <stdlib.h>
  22513.  
  22514.                     int main(void)
  22515.                     {
  22516.                        struct tm xmas;
  22517.  
  22518.                        if (NULL == strptime("12/25/94 12:00:01", "%D %T", &xmas)) {
  22519.                           printf("strptime() failed.\n");
  22520.                           exit(EXIT_FAILURE);
  22521.                        }
  22522.                        printf("tm_sec  = %3d\n", xmas.tm_sec );
  22523.                        printf("tm_min  = %3d\n", xmas.tm_min );
  22524.                        printf("tm_hour = %3d\n", xmas.tm_hour);
  22525.                        printf("tm_mday = %3d\n", xmas.tm_mday);
  22526.                        printf("tm_mon  = %3d\n", xmas.tm_mon );
  22527.                        printf("tm_year = %3d\n", xmas.tm_year);
  22528.                        return 0;
  22529.  
  22530.                        /****************************************************************************
  22531.                           The output should be similar to :
  22532.  
  22533.                           tm_sec  =   1
  22534.                           tm_min  =   0
  22535.                           tm_hour =  12
  22536.                           tm_mday =  25
  22537.                           tm_mon  =  11
  22538.                           tm_year =  94
  22539.                        ****************************************************************************/
  22540.                     }
  22541.  
  22542.  Related Information 
  22543.  
  22544.               strftime 
  22545.               wcsftime 
  22546.  
  22547.  
  22548. ΓòÉΓòÉΓòÉ 3.219. strrchr - Find Last Occurrence of Byte in String ΓòÉΓòÉΓòÉ
  22549.  
  22550. strrchr - Find Last Occurrence of Byte in String 
  22551.  
  22552.  Syntax 
  22553.  
  22554.                     #include <string.h>
  22555.                     char *strrchr(const char *string, int c);
  22556.  
  22557.  Description 
  22558.  
  22559.           strrchr finds the last occurrence of c (converted to a byte) in 
  22560.           string. The ending null byte is considered part of the string. 
  22561.  
  22562.  Returns 
  22563.  
  22564.           strrchr returns a pointer to the last occurrence of c in string. If 
  22565.           the given byte is not found, a NULL pointer is returned. 
  22566.  
  22567.  Example Code 
  22568.  
  22569.           This example compares the use of strchr and strrchr. It searches the 
  22570.           string for the first and last occurrence of p in the string. 
  22571.  
  22572.                     #include <stdio.h>
  22573.                     #include <string.h>
  22574.  
  22575.                     #define  SIZE          40
  22576.  
  22577.                     int main(void)
  22578.                     {
  22579.                        char buf[SIZE] = "computer program";
  22580.                        char *ptr;
  22581.                        int ch = 'p';
  22582.  
  22583.                        /* This illustrates strchr                                                 */
  22584.  
  22585.                        ptr = strchr(buf, ch);
  22586.                        printf("The first occurrence of %c in '%s' is '%s'\n", ch, buf, ptr);
  22587.  
  22588.                        /* This illustrates strrchr                                                */
  22589.  
  22590.                        ptr = strrchr(buf, ch);
  22591.                        printf("The last occurrence of %c in '%s' is '%s'\n", ch, buf, ptr);
  22592.                        return 0;
  22593.  
  22594.                        /****************************************************************************
  22595.                           The output should be:
  22596.  
  22597.                           The first occurrence of p in 'computer program' is 'puter program'
  22598.                           The last occurrence of p in 'computer program' is 'program'
  22599.                        ****************************************************************************/
  22600.                     }
  22601.  
  22602.  Related Information 
  22603.  
  22604.               strchr 
  22605.               strcspn 
  22606.               strpbrk 
  22607.               strspn 
  22608.               wcschr 
  22609.               wcspbrk 
  22610.               wcsrchr 
  22611.               wcswcs 
  22612.  
  22613.  
  22614. ΓòÉΓòÉΓòÉ 3.220. strrev - Reverse String ΓòÉΓòÉΓòÉ
  22615.  
  22616. strrev - Reverse String 
  22617.  
  22618.  Syntax 
  22619.  
  22620.                     #include <string.h>
  22621.                     char *strrev(char *string);
  22622.  
  22623.  Description 
  22624.  
  22625.           strrev reverses the order of the characters in the given string.  The 
  22626.           ending null character (\0) remains in place. 
  22627.  
  22628.  Returns 
  22629.  
  22630.           strrev returns a pointer to the altered string.  There is no error 
  22631.           return value. 
  22632.  
  22633.  Example Code 
  22634.  
  22635.           This example determines whether a string is a palindrome.  A 
  22636.           palindrome is a string that reads the same forward and backward. 
  22637.  
  22638.                     #include <stdio.h>
  22639.                     #include <stdlib.h>
  22640.                     #include <string.h>
  22641.  
  22642.                     int palindrome(char *string)
  22643.                     {
  22644.                        char *string2;
  22645.                        int  rc;
  22646.  
  22647.                        /* Duplicate string for comparison                                         */
  22648.  
  22649.                        if (NULL == (string2 = strdup(string))) {
  22650.                           printf("Storage could not be reserved for string\n");
  22651.                           exit(EXIT_FAILURE);
  22652.                        }
  22653.  
  22654.                        /* If result equals 0, the string is a palindrome                          */
  22655.  
  22656.                        rc = strcmp(string), strrev(string2));
  22657.                        free(string2);
  22658.                        return rc;
  22659.                     }
  22660.  
  22661.                     int main(void)
  22662.                     {
  22663.                        char string[81];
  22664.  
  22665.                        printf("Please enter a string.\n");
  22666.                        scanf("%80s", string);
  22667.                        if (palindrome(string))
  22668.                           printf("The string is not a palindrome.\n");
  22669.                        else
  22670.                           printf("The string is a palindrome.\n");
  22671.                        return 0;
  22672.  
  22673.                        /****************************************************************************
  22674.                           Sample output from program:
  22675.  
  22676.                           Please enter a string.
  22677.                           level
  22678.                           The string is a palindrome.
  22679.                           ... or ...
  22680.                           Please enter a string.
  22681.                           levels
  22682.                           The string is not a palindrome.
  22683.                        ****************************************************************************/
  22684.                     }
  22685.  
  22686.  Related Information 
  22687.  
  22688.               strcat 
  22689.               strcmp 
  22690.               strcpy 
  22691.               strdup 
  22692.               strnset - strset 
  22693.  
  22694.  
  22695. ΓòÉΓòÉΓòÉ 3.221. strspn - Get Length of Substring ΓòÉΓòÉΓòÉ
  22696.  
  22697. strspn - Get Length of Substring 
  22698.  
  22699.  Syntax 
  22700.  
  22701.                     #include <string.h>
  22702.                     size_t strspn(const char *string1, const char *string2);
  22703.  
  22704.  Description 
  22705.  
  22706.           strspn computes the number of bytes in the maximum initial segment of 
  22707.           the string pointed to by string1, which consists entirely of bytes 
  22708.           from the string pointed to by string2. 
  22709.  
  22710.  Returns 
  22711.  
  22712.           strspn returns the index of the first byte found. This value is equal 
  22713.           to the length of the initial substring of string1 that consists 
  22714.           entirely of bytes from string2. If string1 begins with a byte not in 
  22715.           string2, strspn returns 0. If all the bytes in string1 are found in 
  22716.           string2, the length of string1 is returned. 
  22717.  
  22718.  Example Code 
  22719.  
  22720.           This example finds the first occurrence in the array string of a byte 
  22721.           that is not an a, b, or c. Because the string in this example is 
  22722.           cabbage, strspn returns 5, the length of the segment of cabbage 
  22723.           before a byte that is not an a, b, or c. 
  22724.  
  22725.                     #include <stdio.h>
  22726.                     #include <string.h>
  22727.  
  22728.                     int main(void)
  22729.                     {
  22730.                        char *string = "cabbage";
  22731.                        char *source = "abc";
  22732.                        int index;
  22733.  
  22734.                        index = strspn(string, "abc");
  22735.                        printf("The first %d characters of \"%s\" are found in \"%s\"\n", index,
  22736.                           string, source);
  22737.                        return 0;
  22738.  
  22739.                        /****************************************************************************
  22740.                           The output should be:
  22741.  
  22742.                           The first 5 characters of "cabbage" are found in "abc"
  22743.                        ****************************************************************************/
  22744.                     }
  22745.  
  22746.  Related Information 
  22747.  
  22748.               strchr 
  22749.               strcspn 
  22750.               strpbrk 
  22751.               strrchr 
  22752.               wcschr 
  22753.               wcscspn 
  22754.               wcspbrk 
  22755.               wcsrchr 
  22756.               wcsspn 
  22757.               wcswcs 
  22758.  
  22759.  
  22760. ΓòÉΓòÉΓòÉ 3.222. strstr - Locate Substring ΓòÉΓòÉΓòÉ
  22761.  
  22762. strstr - Locate Substring 
  22763.  
  22764.  Syntax 
  22765.  
  22766.                     #include <string.h>
  22767.                     char *strstr(const char *string1, const char *string2);
  22768.  
  22769.  Description 
  22770.  
  22771.           strstr finds the first occurrence of string2 in string1. The function 
  22772.           ignores the null byte (\0) that ends string2 in the matching process. 
  22773.  
  22774.  Returns 
  22775.  
  22776.           strstr returns a pointer to the beginning of the first occurrence of 
  22777.           string2 in string1. If string2 does not appear in string1, strstr 
  22778.           returns NULL. If string2 points to a string with zero length, strstr 
  22779.           returns string1. 
  22780.  
  22781.  Example Code 
  22782.  
  22783.           This example locates the string haystack in the string "needle in a 
  22784.           haystack". 
  22785.  
  22786.                     #include <string.h>
  22787.  
  22788.                     int main(void)
  22789.                     {
  22790.                        char *string1 = "needle in a haystack";
  22791.                        char *string2 = "haystack";
  22792.                        char *result;
  22793.  
  22794.                        result = strstr(string1, string2);
  22795.  
  22796.                        /* Result = a pointer to "haystack"                                        */
  22797.  
  22798.                        printf("%s\n", result);
  22799.                        return 0;
  22800.  
  22801.                        /****************************************************************************
  22802.                           The output should be:
  22803.  
  22804.                           haystack
  22805.                        ****************************************************************************/
  22806.                     }
  22807.  
  22808.  Related Information 
  22809.  
  22810.               strchr 
  22811.               strcspn 
  22812.               strpbrk 
  22813.               strrchr 
  22814.               strspn 
  22815.               wcschr 
  22816.               wcscspn 
  22817.               wcspbrk 
  22818.               wcsrchr 
  22819.               wcsspn 
  22820.               wcswcs 
  22821.  
  22822.  
  22823. ΓòÉΓòÉΓòÉ 3.223. _strtime - Copy Time ΓòÉΓòÉΓòÉ
  22824.  
  22825. _strtime - Copy Time 
  22826.  
  22827.  Syntax 
  22828.  
  22829.                     #include <time.h>
  22830.                     char *_strtime(char *time);
  22831.  
  22832.  Description 
  22833.  
  22834.           _strtime copies the current time into the buffer that time points to. 
  22835.           The format is: 
  22836.  
  22837.                        hh:mm:ss
  22838.           where 
  22839.  
  22840.                hh represents the hour in 24-hour notation, 
  22841.                mm represents the minutes past the hour, 
  22842.                ss represents the number of seconds. 
  22843.  
  22844.           For example, the string 18:23:44 represents 23 minutes and 44 seconds 
  22845.           past 6 p.m. 
  22846.  
  22847.           The buffer must be at least 9 bytes. 
  22848.  
  22849.           Note:  The time and date functions begin at 00:00:00 Coordinated 
  22850.                  Universal Time, January 1, 1970. 
  22851.  
  22852.  Returns 
  22853.  
  22854.           _strtime returns a pointer to the buffer. There is no error return. 
  22855.  
  22856.  Example Code 
  22857.  
  22858.           This example prints the current time: 
  22859.  
  22860.                     #include <stdio.h>
  22861.                     #include <time.h>
  22862.  
  22863.                     int main(void)
  22864.                     {
  22865.                        char buffer[9];
  22866.  
  22867.                        printf("The current time is %s \n", _strtime(buffer));
  22868.                        return 0;
  22869.  
  22870.                        /****************************************************************************
  22871.                           The output should be similar to:
  22872.  
  22873.                           The current time is 16:47:22
  22874.                        ****************************************************************************/
  22875.                     }
  22876.  
  22877.  Related Information 
  22878.  
  22879.               asctime 
  22880.               ctime 
  22881.               gmtime 
  22882.               localtime 
  22883.               mktime 
  22884.               time 
  22885.               tzset 
  22886.  
  22887.  
  22888. ΓòÉΓòÉΓòÉ 3.224. strtod - Convert Character String to Double ΓòÉΓòÉΓòÉ
  22889.  
  22890. strtod - Convert Character String to Double 
  22891.  
  22892.  Syntax 
  22893.  
  22894.                     #include <stdlib.h>
  22895.                     double strtod(const char *nptr, char **endptr);
  22896.  
  22897.  Description 
  22898.  
  22899.           strtod converts a character string to a double-precision value. The 
  22900.           parameter nptr points to a sequence of characters that can be 
  22901.           interpreted as a numerical value of the type double.  This function 
  22902.           stops reading the string at the first character that it cannot 
  22903.           recognize as part of a number.  This character can be the null 
  22904.           character at the end of the string. 
  22905.  
  22906.           The strtod function expects nptr to point to a string with the 
  22907.           following form: 
  22908.  
  22909.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  22910.                     Γöé                                        Γöé
  22911.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ>         Γöé
  22912.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇdigitsΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöñ           Γöé
  22913.                     Γöé            ΓööΓöÇΓö┤ΓöÇΓöÿ  Γöé     ΓööΓöÇ.ΓöÇΓöÿ  ΓööΓöÇdigitsΓöÇΓöÿ Γöé           Γöé
  22914.                     Γöé               ΓööΓöÇ.ΓöÇΓöÇdigitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ           Γöé
  22915.                     Γöé                                        Γöé
  22916.                     Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                        Γöé
  22917.                     Γöé   ΓööΓöÇΓö¼ΓöÇeΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÿ                          Γöé
  22918.                     Γöé    ΓööΓöÇEΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ                               Γöé
  22919.                     Γöé       ΓööΓöÇΓö┤ΓöÇΓöÿ                               Γöé
  22920.                     Γöé                                        Γöé
  22921.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  22922.  
  22923.           The first character that does not fit this form stops the scan. The 
  22924.           radix character is defined in the program's locale by the category 
  22925.           LC_NUMERIC. 
  22926.  
  22927.  Returns 
  22928.  
  22929.           strtod returns the value of the floating-point number, except when 
  22930.           the representation causes an underflow or overflow. For an overflow, 
  22931.           it returns -HUGE_VAL or +HUGE_VAL; for an underflow, it returns 0. 
  22932.  
  22933.           In both cases, errno is set to ERANGE, depending on the base of the 
  22934.           value. If the string pointed to by nptr does not have the expected 
  22935.           form, no conversion is performed and the value of nptr is stored in 
  22936.           the object pointed to by endptr, provided that endptr is not a NULL 
  22937.           pointer. 
  22938.  
  22939.           strtod does not fail if a character other than a digit follows an E 
  22940.           or e read in as an exponent. For example, 100elf will be converted to 
  22941.           the floating-point value 100.0. 
  22942.  
  22943.  Example Code 
  22944.  
  22945.           This example converts the strings to a double value. It prints out 
  22946.           the converted value and the substring that stopped the conversion. 
  22947.  
  22948.                     #include <stdlib.h>
  22949.                     #include <stdio.h>
  22950.  
  22951.                     int main(void)
  22952.                     {
  22953.                        char *string,*stopstring;
  22954.                        double x;
  22955.  
  22956.                        string = "3.1415926This stopped it";
  22957.                        x = strtod(string, &stopstring);
  22958.                        printf("string = %s\n", string);
  22959.                        printf("   strtod = %f\n", x);
  22960.                        printf("   Stopped scan at %s\n\n", stopstring);
  22961.                        string = "100ergs";
  22962.                        x = strtod(string, &stopstring);
  22963.                        printf("string = \"%s\"\n", string);
  22964.                        printf("   strtod = %f\n", x);
  22965.                        printf("   Stopped scan at \"%s\"\n\n", stopstring);
  22966.                        return 0;
  22967.  
  22968.                        /****************************************************************************
  22969.                           The output should be:
  22970.  
  22971.                           string = 3.1415926This stopped it
  22972.                              strtod = 3.141593
  22973.                              Stopped scan at This stopped it
  22974.  
  22975.                           string = "100ergs"
  22976.                              strtod = 100.000000
  22977.                              Stopped scan at "ergs"
  22978.                        ****************************************************************************/
  22979.                     }
  22980.  
  22981.  Related Information 
  22982.  
  22983.               atof 
  22984.               atoi 
  22985.               atol 
  22986.               _atold 
  22987.               strtol 
  22988.               strtold 
  22989.               strtoul 
  22990.               wcstod 
  22991.               wcstol 
  22992.               wcstoul 
  22993.  
  22994.  
  22995. ΓòÉΓòÉΓòÉ 3.225. strtok - Tokenize String ΓòÉΓòÉΓòÉ
  22996.  
  22997. strtok - Tokenize String 
  22998.  
  22999.  Syntax 
  23000.  
  23001.                     #include <string.h>
  23002.                     char *strtok(char *string1, const char *string2);
  23003.  
  23004.  Description 
  23005.  
  23006.           strtok reads string1 as a series of zero or more tokens, and string2 
  23007.           as the set of bytes serving as delimiters of the tokens in string1. 
  23008.           The tokens in string1 can be separated by one or more of the 
  23009.           delimiters from string2. The tokens in string1 can be located by a 
  23010.           series of calls to strtok. 
  23011.  
  23012.           In the first call to strtok for a given string1, strtok searches for 
  23013.           the first token in string1, skipping over leading delimiters.  A 
  23014.           pointer to the first token is returned. 
  23015.  
  23016.           To read the next token from string1, call strtok with a NULL string1 
  23017.           argument. A NULL string1 argument causes strtok to search for the 
  23018.           next token in the previous token string. Each delimiter is replaced 
  23019.           by a null character. The set of delimiters can vary from call to 
  23020.           call, so string2 can take any value. 
  23021.  
  23022.  Returns 
  23023.  
  23024.           The first time strtok is called, it returns a pointer to the first 
  23025.           token in string1.  In later calls with the same token string, strtok 
  23026.           returns a pointer to the next token in the string. A NULL pointer is 
  23027.           returned when there are no more tokens. All tokens are 
  23028.           null-terminated. 
  23029.  
  23030.  Example Code 
  23031.  
  23032.           Using a loop, this example gathers tokens, separated by blanks or 
  23033.           commas, from a string until no tokens are left.  After processing the 
  23034.           tokens (not shown), the example returns the pointers to the tokens 
  23035.           a,string, of, and tokens. The next call to strtok returns NULL, and 
  23036.           the loop ends. 
  23037.  
  23038.                     #include <stdio.h>
  23039.                     #include <string.h>
  23040.  
  23041.                     int main(void)
  23042.                     {
  23043.                        char *token,*string = "a string, of, ,tokens\0,after null terminator";
  23044.  
  23045.                         /* the string pointed to by string is broken up into the tokens
  23046.                            "a string", " of", " ", and "tokens" ; the null terminator (\0)
  23047.                            is encountered and execution stops after the token "tokens"            */
  23048.  
  23049.                        token = strtok(string, ",");
  23050.                        do {
  23051.                           printf("token: %s\n", token);
  23052.                        }  while (token = strtok(NULL, ","));
  23053.                        return 0;
  23054.  
  23055.                        /****************************************************************************
  23056.                           The output should be:
  23057.  
  23058.                           token: a string
  23059.                           token:  of
  23060.                           token:
  23061.                           token: tokens
  23062.                        ****************************************************************************/
  23063.                     }
  23064.  
  23065.  Related Information 
  23066.  
  23067.               strcat 
  23068.               strchr 
  23069.               strcmp 
  23070.               strcpy 
  23071.               strcspn 
  23072.               strspn 
  23073.               wcstok 
  23074.  
  23075.  
  23076. ΓòÉΓòÉΓòÉ 3.226. strtol - Convert Character String to Long Integer ΓòÉΓòÉΓòÉ
  23077.  
  23078. strtol - Convert Character String to Long Integer 
  23079.  
  23080.  Syntax 
  23081.  
  23082.                     #include <stdlib.h>
  23083.                     long int strtol(const char *nptr, char **endptr, int base);
  23084.  
  23085.  Description 
  23086.  
  23087.           strtol converts a character string to a long-integer value. The 
  23088.           parameter nptr points to a sequence of characters that can be 
  23089.           interpreted as a numerical value of type long int. This function 
  23090.           stops reading the string at the first character that it cannot 
  23091.           recognize as part of a number. This character can be the null 
  23092.           character (\0) at the end of the string. The ending character can 
  23093.           also be the first numeric character greater than or equal to the 
  23094.           base. 
  23095.  
  23096.           When you use the strtol function, nptr should point to a string with 
  23097.           the following form: 
  23098.  
  23099.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  23100.                     Γöé                                        Γöé
  23101.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><              Γöé
  23102.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇ0ΓöÇΓöÇΓöñ  ΓööΓöÇdigitsΓöÇΓöÿ                Γöé
  23103.                     Γöé            ΓööΓöÇΓö┤ΓöÇΓöÿ  Γö£ΓöÇ0xΓöÇΓöñ                      Γöé
  23104.                     Γöé               ΓööΓöÇ0XΓöÇΓöÿ                      Γöé
  23105.                     Γöé                                        Γöé
  23106.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  23107.  
  23108.           If base is in the range of 2 through 36, it becomes the base of the 
  23109.           number. If base is 0, the prefix determines the base (8, 16, or 10): 
  23110.           the prefix 0 means base 8 (octal);  the prefix 0x or 0X means base 16 
  23111.           (hexadecimal); using any other digit without a prefix means decimal. 
  23112.  
  23113.  Returns 
  23114.  
  23115.           strtol returns the value represented in the string, except when the 
  23116.           representation causes an overflow. For an overflow, it returns 
  23117.           LONG_MAX or LONG_MIN, according to the sign of the value and errno is 
  23118.           set to ERANGE. If base is not a valid number, strtol sets errno to 
  23119.           EDOM. 
  23120.  
  23121.           errno is set to ERANGE for the exceptional cases, depending on the 
  23122.           base of the value.  If the string pointed to by nptr does not have 
  23123.           the expected form, no conversion is performed and the value of nptr 
  23124.           is stored in the object pointed to by endptr, provided that endptr is 
  23125.           not a NULL pointer. 
  23126.  
  23127.  Example Code 
  23128.  
  23129.           This example converts the strings to a long value.  It prints out the 
  23130.           converted value and the substring that stopped the conversion. 
  23131.  
  23132.                     #include <stdlib.h>
  23133.                     #include <stdio.h>
  23134.  
  23135.                     int main(void)
  23136.                     {
  23137.                        char *string,*stopstring;
  23138.                        long l;
  23139.                        int bs;
  23140.  
  23141.                        string = "10110134932";
  23142.                        printf("string = %s\n", string);
  23143.                        for (bs = 2; bs <= 8; bs *= 2) {
  23144.                           l = strtol(string, &stopstring, bs);
  23145.                           printf("   strtol = %ld (base %d)\n", l, bs);
  23146.                           printf("   Stopped scan at %s\n\n", stopstring);
  23147.                        }
  23148.                        return 0;
  23149.  
  23150.                        /****************************************************************************
  23151.                           The output should be:
  23152.  
  23153.                           string = 10110134932
  23154.                              strtol = 45 (base 2)
  23155.                              Stopped scan at 34932
  23156.  
  23157.                           strtol = 4423 (base 4)
  23158.                           Stopped scan at 4932
  23159.  
  23160.                           strtol = 2134108 (base 8)
  23161.                           Stopped scan at 932
  23162.                        ****************************************************************************/
  23163.                     }
  23164.  
  23165.  Related Information 
  23166.  
  23167.               atof 
  23168.               atoi 
  23169.               atol 
  23170.               _atold 
  23171.               _ltoa 
  23172.               strtod 
  23173.               strtold 
  23174.               strtoul 
  23175.               wcstod 
  23176.               wcstol 
  23177.               wcstoul 
  23178.  
  23179.  
  23180. ΓòÉΓòÉΓòÉ 3.227. strtold - Convert String to Long Double ΓòÉΓòÉΓòÉ
  23181.  
  23182. strtold - Convert String to Long Double 
  23183.  
  23184.  Syntax 
  23185.  
  23186.                     #include <stdlib.h>
  23187.                     long double strtold(const char *nptr, char **endptr);
  23188.  
  23189.  Description 
  23190.  
  23191.           strtold converts a character string pointed to by nptr to a long 
  23192.           double value.  When it reads a character it does not recognize as 
  23193.           part of a number, strtold stops conversion and endptr points to the 
  23194.           remainder of nptr.  This character may be the ending null character. 
  23195.  
  23196.           The string pointed to by nptr must have the following format: 
  23197.  
  23198.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  23199.                     Γöé                                        Γöé
  23200.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ>       Γöé
  23201.                     Γöé   ΓööΓöÇwhitespaceΓöÇΓöÿ  ΓööΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇdigitsΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓö¼ΓöÇΓöÿ        Γöé
  23202.                     Γöé            Γö£ΓöÇ + ΓöÇΓöñ  Γöé     ΓööΓöÇ.ΓöÇΓöÿ  ΓööΓöÇdigitsΓöÇΓöÿ Γöé         Γöé
  23203.                     Γöé            ΓööΓöÇ Γö┤ ΓöÇΓöÿ  ΓööΓöÇ.ΓöÇΓöÇdigitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ         Γöé
  23204.                     Γöé                                        Γöé
  23205.                     Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                      Γöé
  23206.                     Γöé   ΓööΓöÇΓö¼ΓöÇ e ΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÿ                        Γöé
  23207.                     Γöé    ΓööΓöÇ E ΓöÇΓöÿ  Γö£ΓöÇ + ΓöÇΓöñ                             Γöé
  23208.                     Γöé        ΓööΓöÇ Γö┤ ΓöÇΓöÿ                             Γöé
  23209.                     Γöé                                        Γöé
  23210.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  23211.  
  23212.           The digits are one or more decimal digits.  If no digits appear 
  23213.           before the decimal point, at least one digit must follow the decimal 
  23214.           point.  An exponent expressed as a decimal integer can follow the 
  23215.           digits.  The exponent can be signed. 
  23216.  
  23217.           The value of nptr can also be one of the strings infinity, inf, or 
  23218.           nan. These strings are case-insensitive, and can be preceded by a 
  23219.           unary minus (-). They are converted to infinity and NaN values. See 
  23220.           Infinity and NaN Support for more information about using infinity 
  23221.           and NaN values. 
  23222.  
  23223.           If the string pointed to by nptr does not have the expected form, no 
  23224.           conversion is performed and endptr points to the value of nptr. 
  23225.  
  23226.           The strtold function ignores any white-space characters, as defined 
  23227.           by the isspace function. 
  23228.  
  23229.  Returns 
  23230.  
  23231.           If successful, strtold returns the value of the long double number. 
  23232.           If it fails, strtold returns 0. For an underflow or overflow, it 
  23233.           returns the following: 
  23234.  
  23235.           Condition           Return Value 
  23236.           Underflow           0 with errno set to ERANGE 
  23237.           Positive overflow   +_LHUGE_VAL 
  23238.           Negative overflow   -_LHUGE_VAL. 
  23239.  
  23240.  Example Code 
  23241.  
  23242.           This example uses strtold to convert two strings, " 
  23243.           -001234.5678e10end of string" and "NaNQthis cannot be converted" to 
  23244.           their corresponding long double values.  It also prints out the part 
  23245.           of the string that cannot be converted. 
  23246.  
  23247.                     #include <stdlib.h>
  23248.                     #include <stdio.h>
  23249.  
  23250.                     int main(void)
  23251.                     {
  23252.                        char *nptr;
  23253.                        char *endptr;
  23254.  
  23255.                        nptr = "  -001234.5678e10end of string";
  23256.                        printf("strtold = %.10Le\n", strtold(nptr, &endptr));
  23257.                        printf("end pointer at = %s\n\n", endptr);
  23258.                        nptr = "NaNthis cannot be converted";
  23259.                        printf("strtold = %.10Le\n", strtold(nptr, &endptr));
  23260.                        printf("end pointer at = %s\n\n", endptr);
  23261.                        return 0;
  23262.  
  23263.                        /****************************************************************************
  23264.                           The output should be:
  23265.  
  23266.                           strtold = -1.2345678000e+13
  23267.                           end pointer at = end of string
  23268.  
  23269.                           strtold = nan
  23270.                           end pointer at = this cannot be converted
  23271.                        ****************************************************************************/
  23272.                     }
  23273.  
  23274.  Related Information 
  23275.  
  23276.               atof 
  23277.               atoi 
  23278.               atol 
  23279.               _atold 
  23280.               strtod 
  23281.               strtol 
  23282.               strtoul 
  23283.               wcstod 
  23284.               wcstol 
  23285.               wcstoul 
  23286.               Infinity and NaN Support 
  23287.  
  23288.  
  23289. ΓòÉΓòÉΓòÉ 3.228. strtoul - Convert String Segment to Unsigned Integer ΓòÉΓòÉΓòÉ
  23290.  
  23291. strtoul - Convert String Segment to Unsigned Integer 
  23292.  
  23293.  Syntax 
  23294.  
  23295.                     #include <stdlib.h>
  23296.                     unsigned long int strtoul(const char *string1, char **string2, int base);
  23297.  
  23298.  Description 
  23299.  
  23300.           strtoul converts a character string to an unsigned long integer 
  23301.           value. The input string1 is a sequence of characters that can be 
  23302.           interpreted as a numerical value of the type unsigned long int. 
  23303.           strtoul stops reading the string at the first character that it 
  23304.           cannot recognize as part of a number. This character can be the first 
  23305.           numeric character greater than or equal to the base. strtoul  sets 
  23306.           string2 to point to the resulting output string if a conversion is 
  23307.           performed, and provided that string2 is not a NULL pointer. 
  23308.  
  23309.           When you use strtoul, string1 should point to a string with the 
  23310.           following form: 
  23311.  
  23312.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  23313.                     Γöé                                        Γöé
  23314.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><              Γöé
  23315.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇ0ΓöÇΓöÇΓöñ  ΓööΓöÇdigitsΓöÇΓöÿ                Γöé
  23316.                     Γöé            ΓööΓöÇΓö┤ΓöÇΓöÿ  Γö£ΓöÇ0xΓöÇΓöñ                      Γöé
  23317.                     Γöé               ΓööΓöÇ0XΓöÇΓöÿ                      Γöé
  23318.                     Γöé                                        Γöé
  23319.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  23320.  
  23321.           If base is in the range of 2 through 36, it becomes the base of the 
  23322.           number.  If base is 0, the prefix determines the base (8, 16, or 10): 
  23323.           the prefix 0 means base 8 (octal); the prefix 0x or 0X means base 16 
  23324.           (hexadecimal);  using any other digit without a prefix means decimal. 
  23325.  
  23326.  Returns 
  23327.  
  23328.           strtoul returns the value represented in the string, or 0 if no 
  23329.           conversion could be performed. For an overflow, strtoul returns 
  23330.           ULONG_MAX and sets errno to ERANGE. If base is not a valid number, 
  23331.           strtoul sets errno to EDOM. 
  23332.  
  23333.  Example Code 
  23334.  
  23335.           This example converts the string to an unsigned long value.  It 
  23336.           prints out the converted value and the substring that stopped the 
  23337.           conversion. 
  23338.  
  23339.                     #include <stdio.h>
  23340.                     #include <stdlib.h>
  23341.  
  23342.                     #define  BASE          2
  23343.  
  23344.                     int main(void)
  23345.                     {
  23346.                        char *string,*stopstring;
  23347.                        unsigned long ul;
  23348.  
  23349.                        string = "1000e13 e";
  23350.                        printf("string = %s\n", string);
  23351.                        ul = strtoul(string, &stopstring, BASE);
  23352.                        printf("   strtoul = %ld (base %d)\n", ul, BASE);
  23353.                        printf("   Stopped scan at %s\n\n", stopstring);
  23354.                        return 0;
  23355.  
  23356.                        /****************************************************************************
  23357.                           The output should be:
  23358.  
  23359.                           string = 1000e13 e
  23360.                              strtoul = 8 (base 2)
  23361.                              Stopped scan at e13 e
  23362.                        ****************************************************************************/
  23363.                     }
  23364.  
  23365.  Related Information 
  23366.  
  23367.               atof 
  23368.               atoi 
  23369.               atol 
  23370.               _atold 
  23371.               strtod 
  23372.               strtol 
  23373.               strtold 
  23374.               wcstod 
  23375.               wcstol 
  23376.               wcstoul 
  23377.  
  23378.  
  23379. ΓòÉΓòÉΓòÉ 3.229. strupr - Convert Lowercase to Uppercase ΓòÉΓòÉΓòÉ
  23380.  
  23381. strupr - Convert Lowercase to Uppercase 
  23382.  
  23383.  Syntax 
  23384.  
  23385.                     #include <string.h>
  23386.                     char *strupr(char *string);
  23387.  
  23388.  Description 
  23389.  
  23390.           strupr converts any lowercase letters in string to uppercase. Other 
  23391.           characters are not affected. 
  23392.  
  23393.  Returns 
  23394.  
  23395.           strupr returns a pointer to the converted string. There is no error 
  23396.           return. 
  23397.  
  23398.  Example Code 
  23399.  
  23400.           This example makes a copy in all uppercase of the string "DosWrite", 
  23401.           and then prints the copy. 
  23402.  
  23403.                     #include <string.h>
  23404.                     #include <stdio.h>
  23405.  
  23406.                     int main(void)
  23407.                     {
  23408.                        char *string = "DosWrite";
  23409.                        char *copy;
  23410.  
  23411.                        copy = strupr(strdup(string));
  23412.                        printf("This is a copy of the string\n");
  23413.                        printf("with all letters capitalized: %s\n", copy);
  23414.                        return 0;
  23415.  
  23416.                        /****************************************************************************
  23417.                           The output should be:
  23418.  
  23419.                           This is a copy of the string
  23420.                           with all letters capitalized: DOSWRITE
  23421.                        ****************************************************************************/
  23422.                     }
  23423.  
  23424.  Related Information 
  23425.  
  23426.               strlwr 
  23427.               _toascii - _tolower - _toupper 
  23428.               tolower - toupper 
  23429.               towlower - towupper 
  23430.  
  23431.  
  23432. ΓòÉΓòÉΓòÉ 3.230. strxfrm - Transform String ΓòÉΓòÉΓòÉ
  23433.  
  23434. strxfrm - Transform String 
  23435.  
  23436.  Syntax 
  23437.  
  23438.                     #include <string.h>
  23439.                     size_t strxfrm(char *str1, const char *str2, size_t n);
  23440.  
  23441.  Description 
  23442.  
  23443.           strxfrm transforms the string pointed to by str2 and places the 
  23444.           resulting string into the array pointed to by str1. The 
  23445.           transformation is determined by the program's locale. The transformed 
  23446.           string is not necessarily readable, but can be used with the strcmp 
  23447.           or strncmp functions. qsort and bsearch can also be used on the 
  23448.           results. 
  23449.  
  23450.           The transformation is such that, if strcmp or strncmp were applied to 
  23451.           the two transformed strings, the results would be the same as 
  23452.           applying strcoll to the two corresponding untransformed strings. 
  23453.  
  23454.           No more than n bytes are placed into the area pointed to by str1, 
  23455.           including the terminating null byte. If n is 0, str1 can be a null 
  23456.           pointer. 
  23457.  
  23458.  Returns 
  23459.  
  23460.           strxfrm returns the length of the transformed string (excluding the 
  23461.           null byte).  When n is 0 and str1 is a null pointer, the length 
  23462.           returned is one less than the number of bytes required to contain the 
  23463.           transformed string. If an error occurs, strxfrm function returns 
  23464.           (size_t)-1 and sets errno to indicate the error. 
  23465.  
  23466.           Note: 
  23467.  
  23468.               The string returned by strxfrm may be longer than the input 
  23469.                string; it does not contain printable characters. 
  23470.  
  23471.               strxfrm calls malloc when the LC_COLLATE category specifies 
  23472.                backward on the order_start keyword, the substitute keyword is 
  23473.                specified, or the locale has one-to-many mapping. If malloc 
  23474.                fails, strxfrm also fails. 
  23475.  
  23476.  Example Code 
  23477.  
  23478.           This example uses strxfrm to transform two different strings that 
  23479.           have the same collating weight. It then calls strcmp to compare the 
  23480.           new strings. 
  23481.  
  23482.                     #include <stdlib.h>
  23483.                     #include <stdio.h>
  23484.                     #include <locale.h>
  23485.  
  23486.                     int main(void)
  23487.                     {
  23488.                        char *string1 = "stride ng1";
  23489.                        char *string2 = "stri*ng1";
  23490.                        char *newstring1, *newstring2;
  23491.                        int  length1, length2;
  23492.  
  23493.                        if (NULL == setlocale(LC_ALL, "Fr_FR")) {
  23494.                           printf("setlocale failed.\n");
  23495.                           exit(EXIT_FAILURE);
  23496.                        }
  23497.                        length1=strxfrm(NULL, string1, 0);
  23498.                        length2=strxfrm(NULL, string2, 0);
  23499.                        if (NULL == (newstring1 = calloc(length1 + 1, 1)) ||
  23500.                            NULL == (newstring2 = calloc(length2 + 1, 1))) {
  23501.                           printf("insufficient memory\n");
  23502.                           exit(EXIT_FAILURE);
  23503.                        }
  23504.                        if ((strxfrm(newstring1, string1, length1 + 1) != length1) ||
  23505.                            (strxfrm(newstring2, string2, length2 + 1) != length2)) {
  23506.                           printf("error in string processing\n");
  23507.                           exit(EXIT_FAILURE);
  23508.                        }
  23509.                        if (0 != strcmp(newstring1, newstring2))
  23510.                           printf("wrong results\n");
  23511.                        else
  23512.                           printf("correct results\n");
  23513.                        return 0;
  23514.  
  23515.                        /****************************************************************************
  23516.                           The output should be similar to :
  23517.  
  23518.                           correct results
  23519.                        ****************************************************************************/
  23520.                     }
  23521.  
  23522.  Related Information 
  23523.  
  23524.               localeconv 
  23525.               setlocale 
  23526.               strcmp 
  23527.               strcoll 
  23528.               strncmp 
  23529.               wcsxfrm 
  23530.  
  23531.  
  23532. ΓòÉΓòÉΓòÉ 3.231. swab - Swap Adjacent Bytes ΓòÉΓòÉΓòÉ
  23533.  
  23534. swab - Swap Adjacent Bytes 
  23535.  
  23536.  Syntax 
  23537.  
  23538.                     #include <stdlib.h>
  23539.                     void swab(char *source, char *destination, int n);
  23540.  
  23541.  Description 
  23542.  
  23543.           swab copies n bytes from source, swaps each pair of adjacent bytes, 
  23544.           and stores the result at destination.  The integer n should be an 
  23545.           even number to allow for swapping. If n is an odd number, a null 
  23546.           character (\0) is added after the last byte. 
  23547.  
  23548.           swab is typically used to prepare binary data for transfer to a 
  23549.           machine that uses a different byte order. 
  23550.  
  23551.           Note:  In earlier releases of C Set ++, swab began with an underscore 
  23552.                  (_swab). Because it is defined by the X/Open standard, the 
  23553.                  underscore has been removed. For compatibility, The 
  23554.                  Developer's Toolkit will map _swab to swab for you. 
  23555.  
  23556.  Returns 
  23557.  
  23558.           There is no return value. 
  23559.  
  23560.  Example Code 
  23561.  
  23562.           This example copies n bytes from one location to another, swapping 
  23563.           each pair of adjacent bytes: 
  23564.  
  23565.                     #include <stdlib.h>
  23566.                     #include <stdio.h>
  23567.  
  23568.                     int main(void)
  23569.                     {
  23570.                        char from[20] = "hTsii  s atsirgn..x ";
  23571.                        char to[20];
  23572.  
  23573.                        swab(from, to, 19);  /* swap bytes */
  23574.                        printf("%s\n", to);
  23575.  
  23576.                        return 0;
  23577.  
  23578.                        /****************************************************************************
  23579.                           The output should be:
  23580.  
  23581.                           This is a string..
  23582.                        ****************************************************************************/
  23583.                     }
  23584.  
  23585.  Related Information 
  23586.  
  23587.               fgetc 
  23588.               fputc 
  23589.  
  23590.  
  23591. ΓòÉΓòÉΓòÉ 3.232. system - Invoke the Command Processor ΓòÉΓòÉΓòÉ
  23592.  
  23593. system - Invoke the Command Processor 
  23594.  
  23595.  Syntax 
  23596.  
  23597.                     #include <stdlib.h>
  23598.                     int system(char *string);
  23599.  
  23600.  Description 
  23601.  
  23602.           system passes the command string to a command processor to be run. 
  23603.           The command processor specified in the COMSPEC environment variable 
  23604.           is first searched for. If it does not exist or is not a valid 
  23605.           executable file, the default command processor, CMD.EXE, is searched 
  23606.           for in the current directory and in all the directories specified in 
  23607.           the PATH environment variable. 
  23608.  
  23609.           If the specified command is the name of an executable file created 
  23610.           from a C program, full initialization and termination are performed, 
  23611.           including automatic flushing of buffers and closing of files.  To 
  23612.           pass information across a system function, use a method of 
  23613.           interprocess communication like pipes or shared memory. 
  23614.  
  23615.           You can also use system to redirect standard streams using the 
  23616.           redirection operators (the angle brackets), for example: 
  23617.  
  23618.                        rc = system("cprogram < in.file");
  23619.  
  23620.           The defaults for the standard streams will be whatever the standard 
  23621.           streams are at the point of the system call;  for example, if the 
  23622.           root program redirects stdout to file.txt, a printf call in a C 
  23623.           module invoked by a system call will append to file.txt. 
  23624.  
  23625.  Returns 
  23626.  
  23627.           If the argument is a null pointer, system returns nonzero if a 
  23628.           command processor exists, and 0 if it does not. system returns the 
  23629.           the return value from the command processor if it is successfully 
  23630.           called. If system cannot call the command processor successfully, the 
  23631.           return value is -1 and errno is set to one of the following values: 
  23632.           compact break=fit. 
  23633.  
  23634.           Value         Meaning 
  23635.  
  23636.           ENOCMD        No valid command processor found. 
  23637.  
  23638.           ENOMEM        Insufficient memory to complete the function. 
  23639.  
  23640.           EOS2ERR       A system error occurred.  Check _doserrno for the 
  23641.                         specific OS/2 error code. 
  23642.  
  23643.  Example Code 
  23644.  
  23645.           This example shows how to use system to execute the OS/2 command dir 
  23646.           c:\ : 
  23647.  
  23648.                     #include <stdlib.h>
  23649.  
  23650.                     int main(void)
  23651.                     {
  23652.                        int rc;
  23653.  
  23654.                        rc = system("dir c:\\");
  23655.                        return rc;
  23656.  
  23657.                        /* The output should be a listing of the root directory on the c: drive    */
  23658.                     }
  23659.  
  23660.  Related Information 
  23661.  
  23662.               exit 
  23663.               _exit 
  23664.  
  23665.  
  23666. ΓòÉΓòÉΓòÉ 3.233. tan - Calculate Tangent ΓòÉΓòÉΓòÉ
  23667.  
  23668. tan - Calculate Tangent 
  23669.  
  23670.  Syntax 
  23671.  
  23672.                     #include <math.h>
  23673.                     double tan(double x);
  23674.  
  23675.  Description 
  23676.  
  23677.           tan calculates the tangent of x, where x is expressed in radians. If 
  23678.           x is too large, a partial loss of significance in the result can 
  23679.           occur. 
  23680.  
  23681.  Returns 
  23682.  
  23683.           tan returns the value of the tangent of x. 
  23684.  
  23685.  Example Code 
  23686.  
  23687.           This example computes x as the tangent of pi/4. 
  23688.  
  23689.                     #include <math.h>
  23690.  
  23691.                     int main(void)
  23692.                     {
  23693.                        double pi,x;
  23694.  
  23695.                        pi = 3.1415926;
  23696.                        x = tan(pi/4.0);
  23697.                        printf("tan( %lf ) is %lf\n", pi/4, x);
  23698.                        return 0;
  23699.  
  23700.                        /****************************************************************************
  23701.                           The output should be:
  23702.  
  23703.                           tan( 0.785398 ) is 1.000000
  23704.                        ****************************************************************************/
  23705.                     }
  23706.  
  23707.  Related Information 
  23708.  
  23709.               atan - atan2 
  23710.               cos 
  23711.               sin 
  23712.               tanh 
  23713.  
  23714.  
  23715. ΓòÉΓòÉΓòÉ 3.234. tanh - Calculate Hyperbolic Tangent ΓòÉΓòÉΓòÉ
  23716.  
  23717. tanh - Calculate Hyperbolic Tangent 
  23718.  
  23719.  Syntax 
  23720.  
  23721.                     #include <math.h>
  23722.                     double tanh(double x);
  23723.  
  23724.  Description 
  23725.  
  23726.           tanh calculates the hyperbolic tangent of x, where x is expressed in 
  23727.           radians. 
  23728.  
  23729.  Returns 
  23730.  
  23731.           tanh returns the value of the hyperbolic tangent of x. The result of 
  23732.           tanh cannot have a range error. 
  23733.  
  23734.  Example Code 
  23735.  
  23736.           This example computes x as the hyperbolic tangent of pi/4. 
  23737.  
  23738.                     #include <math.h>
  23739.  
  23740.                     int main(void)
  23741.                     {
  23742.                        double pi,x;
  23743.  
  23744.                        pi = 3.1415926;
  23745.                        x = tanh(pi/4);
  23746.                        printf("tanh( %lf ) = %lf\n", pi/4, x);
  23747.                        return 0;
  23748.  
  23749.                        /****************************************************************************
  23750.                           The output should be:
  23751.  
  23752.                           tanh( 0.785398 ) = 0.655794
  23753.  
  23754.                        ****************************************************************************/
  23755.                     }
  23756.  
  23757.  Related Information 
  23758.  
  23759.               atan - atan2 
  23760.               cosh 
  23761.               sinh 
  23762.               tan 
  23763.  
  23764.  
  23765. ΓòÉΓòÉΓòÉ 3.235. _tell - Get Pointer Position ΓòÉΓòÉΓòÉ
  23766.  
  23767. _tell - Get Pointer Position 
  23768.  
  23769.  Syntax 
  23770.  
  23771.                     #include <io.h>
  23772.                     long _tell(int handle);
  23773.  
  23774.  Description 
  23775.  
  23776.           _tell gets the current position of the file pointer associated with 
  23777.           handle. The position is the number of bytes from the beginning of the 
  23778.           file. 
  23779.  
  23780.  Returns 
  23781.  
  23782.           _tell returns the current position. A return value of -1L indicates 
  23783.           an error, and errno is set to one of the following values:  compact 
  23784.           break=fit. 
  23785.  
  23786.           Value          Meaning 
  23787.  
  23788.           EBADF          The file handle is not valid. 
  23789.  
  23790.           EOS2ERR        The call to the operating system was not successful. 
  23791.  
  23792.           On devices incapable of seeking (such as screens and printers), the 
  23793.           return value is -1L. 
  23794.  
  23795.  Example Code 
  23796.  
  23797.           This example opens the file tell.dat. It then calls _tell to get the 
  23798.           current position of the file pointer and report whether the operation 
  23799.           is successful. The program then closes tell.dat. 
  23800.  
  23801.                     #include <io.h>
  23802.                     #include <stdio.h>
  23803.                     #include <stdlib.h>
  23804.                     #include <fcntl.h>
  23805.  
  23806.                     #define FILENAME  "tell.dat"
  23807.  
  23808.                     int main(void)
  23809.                     {
  23810.                        long filePtrPos;
  23811.                        int fh;
  23812.  
  23813.                        printf("Creating file.\n");
  23814.                        system("echo Sample Program > " FILENAME);
  23815.                        if (-1 == (fh = open(FILENAME, O_RDWR|O_APPEND))) {
  23816.                           perror("Unable to open " FILENAME);
  23817.                           remove(FILENAME);
  23818.                           return EXIT_FAILURE;
  23819.                        }
  23820.                        /* Get the current file pointer position.                                 */
  23821.                        if (-1 == (filePtrPos = _tell(fh))) {
  23822.                           perror("Unable to tell");
  23823.                           close(fh);
  23824.                           remove(FILENAME);
  23825.                           return EXIT_FAILURE;
  23826.                        }
  23827.                        printf("File pointer is at position %d.\n", filePtrPos);
  23828.                        close(fh);
  23829.                        remove(FILENAME);
  23830.                        return 0;
  23831.  
  23832.                        /****************************************************************************
  23833.                           The output should be:
  23834.  
  23835.                           Creating file.
  23836.                           File pointer is at position 0.
  23837.                        ****************************************************************************/
  23838.                     }
  23839.  
  23840.  Related Information 
  23841.  
  23842.               fseek 
  23843.               ftell 
  23844.               lseek 
  23845.  
  23846.  
  23847. ΓòÉΓòÉΓòÉ 3.236. tempnam - Produce Temporary File Name ΓòÉΓòÉΓòÉ
  23848.  
  23849. tempnam - Produce Temporary File Name 
  23850.  
  23851.  Syntax 
  23852.  
  23853.                     #include <stdio.h>
  23854.                     char *tempnam(char *dir, char *prefix);
  23855.  
  23856.  Description 
  23857.  
  23858.           tempnam creates a temporary file name in another directory.  The 
  23859.           prefix is the prefix to the file name. tempnam tests for the 
  23860.           existence of the file with the given name in the following 
  23861.           directories, listed in order of precedence: 
  23862.  
  23863.               If the TMP environment variable is set and the directory 
  23864.                specified by TMP exists, the directory is specified by TMP. 
  23865.  
  23866.               If the TMP environment variable is not set or the directory 
  23867.                specified by TMP does not exist, the directory is specified by 
  23868.                the dir argument to tempnam. 
  23869.  
  23870.               If the dir argument is NULL, or dir is the name of nonexistent 
  23871.                directory, the directory is pointed to by P_tmpdir (defined in 
  23872.                <stdio.h>). 
  23873.  
  23874.               If P_tmpdir does not exist, the directory is the current working 
  23875.                directory. 
  23876.  
  23877.           Note: 
  23878.  
  23879.               Because tempnam uses malloc to reserve space for the created 
  23880.                file name, you must free this space when you no longer need it. 
  23881.  
  23882.               In earlier releases of C Set ++, tempnam began with an 
  23883.                underscore (_tempnam). Because it is defined by the X/Open 
  23884.                standard, the underscore has been removed. For compatibility, 
  23885.                The Developer's Toolkit will map _tempnam to tempnam for you. 
  23886.  
  23887.  Returns 
  23888.  
  23889.           tempnam returns a pointer to the temporary name, if successful. If 
  23890.           the name cannot be created or it already exists, tempnam returns the 
  23891.           value NULL. 
  23892.  
  23893.  Example Code 
  23894.  
  23895.           This example creates a temporary file name using the directory 
  23896.           a:\tmp: 
  23897.  
  23898.                     #include <stdio.h>
  23899.                     #include <stdlib.h>
  23900.  
  23901.                     int main(void)
  23902.                     {
  23903.                        char *name1;
  23904.  
  23905.                        if ((name1 = tempnam("d:\\tmp", "stq")) != NULL)
  23906.                           printf("%s is safe to use as a temporary file.\n", name1);
  23907.                        else {
  23908.                           printf("Cannot create unique filename\n");
  23909.                           return EXIT_FAILURE;
  23910.                        }
  23911.                        return 0;
  23912.  
  23913.                        /****************************************************************************
  23914.                           The output should be similar to:
  23915.  
  23916.                           D:\tmp\stqU3CP2.C2T is safe to use as a temporary file.
  23917.                        ****************************************************************************/
  23918.                     }
  23919.  
  23920.  Related Information 
  23921.  
  23922.               malloc 
  23923.               _rmtmp 
  23924.               tmpfile 
  23925.               tmpnam 
  23926.  
  23927.  
  23928. ΓòÉΓòÉΓòÉ 3.237. _threadstore - Access Thread-Specific Storage ΓòÉΓòÉΓòÉ
  23929.  
  23930. _threadstore - Access Thread-Specific Storage 
  23931.  
  23932.  Syntax 
  23933.  
  23934.                     #include <stdlib.h>
  23935.                     void *_threadstore(void);
  23936.  
  23937.  Description 
  23938.  
  23939.           _threadstore provides access to a private thread pointer that is 
  23940.           initialized to NULL. You can assign any thread-specific data 
  23941.           structure to this pointer. 
  23942.  
  23943.           You can only use _threadstore in multithread programs. 
  23944.  
  23945.  Returns 
  23946.  
  23947.           _threadstore returns the address of the pointer to the defined thread 
  23948.           storage space. 
  23949.  
  23950.  Example Code 
  23951.  
  23952.           This example uses _threadstore to point to storage that is local to 
  23953.           the thread. It prints the address pointed to by _threadstore. 
  23954.  
  23955.                     #include <stdlib.h>
  23956.                     #include <stdio.h>
  23957.  
  23958.                     #define  privateStore   (*_threadstore())
  23959.  
  23960.                     void thread(void *dummy)
  23961.                     {
  23962.                        privateStore = malloc(100);
  23963.                        printf("The starting address of the storage space is %p\n", privateStore);
  23964.  
  23965.                        /* user must free storage before exiting thread */
  23966.                        free (privateStore);
  23967.                        _endthread();
  23968.                     }
  23969.  
  23970.                     int main(void)
  23971.                     {
  23972.                        int i;
  23973.  
  23974.                        for (i = 0; i < 10; i++)
  23975.                           _beginthread(thread, NULL, (unsigned) 32096, NULL);
  23976.                        DosSleep(5000L);
  23977.                        return 0;
  23978.                     }
  23979.  
  23980.  Related Information 
  23981.  
  23982.               _beginthread 
  23983.               _endthread 
  23984.  
  23985.  
  23986. ΓòÉΓòÉΓòÉ 3.238. time - Determine Current Time ΓòÉΓòÉΓòÉ
  23987.  
  23988. time - Determine Current Time 
  23989.  
  23990.  Syntax 
  23991.  
  23992.                     #include <time.h>
  23993.                     time_t time(time_t *timeptr);
  23994.  
  23995.  Description 
  23996.  
  23997.           time determines the current calendar time, which is not necessarily 
  23998.           the local time localtime. 
  23999.  
  24000.           Note:  The time and date functions begin at 00:00:00 Universal Time, 
  24001.                  January 1, 1970. 
  24002.  
  24003.  Returns 
  24004.  
  24005.           time returns the current calendar time. The return value is also 
  24006.           stored in the location given by timeptr. If timeptr is NULL, the 
  24007.           return value is not stored. If the calendar time is not available, 
  24008.           the value (time_t)(-1) is returned. 
  24009.  
  24010.  Example Code 
  24011.  
  24012.           This example gets the time and assigns it to ltime. ctime then 
  24013.           converts the number of seconds to the current date and time. This 
  24014.           example then prints a message giving the current time. 
  24015.  
  24016.                     #include <time.h>
  24017.                     #include <stdio.h>
  24018.  
  24019.                     int main(void)
  24020.                     {
  24021.                        time_t ltime;
  24022.  
  24023.                        time(<ime);
  24024.                        printf("The time is %s\n", ctime(<ime));
  24025.                        return 0;
  24026.  
  24027.                        /****************************************************************************
  24028.                           The output should be similar to:
  24029.  
  24030.                           The time is Thu Jan 12 11:38:37 1995
  24031.                        ****************************************************************************/
  24032.                     }
  24033.  
  24034.  Related Information 
  24035.  
  24036.               asctime 
  24037.               ctime 
  24038.               gmtime 
  24039.               localtime 
  24040.               mktime 
  24041.               _strtime 
  24042.  
  24043.  
  24044. ΓòÉΓòÉΓòÉ 3.239. tmpfile - Create Temporary File ΓòÉΓòÉΓòÉ
  24045.  
  24046. tmpfile - Create Temporary File 
  24047.  
  24048.  Syntax 
  24049.  
  24050.                     #include <stdio.h>
  24051.                     FILE *tmpfile(void);
  24052.  
  24053.  Description 
  24054.  
  24055.           tmpfile creates a temporary binary file.  The file is automatically 
  24056.           removed when it is closed or when the program is terminated. 
  24057.  
  24058.           tmpfile opens the temporary file in wb+ mode. 
  24059.  
  24060.  Returns 
  24061.  
  24062.           tmpfile returns a stream pointer, if successful. If it cannot open 
  24063.           the file, it returns a NULL pointer. On normal termination (exit), 
  24064.           these temporary files are removed. 
  24065.  
  24066.  Example Code 
  24067.  
  24068.           This example creates a temporary file, and if successful, writes 
  24069.           tmpstring to it. At program termination, the file is removed. 
  24070.  
  24071.                     #include <stdio.h>
  24072.                     #include <stdlib.h>
  24073.  
  24074.                     FILE *stream;
  24075.                     char tmpstring[] = "This is the string to be temporarily written";
  24076.  
  24077.                     int main(void)
  24078.                     {
  24079.                        if (NULL == (stream = tmpfile())) {
  24080.                           perror("Cannot make a temporary file");
  24081.                           return EXIT_FAILURE;
  24082.                        }
  24083.                        else
  24084.                           fprintf(stream, "%s", tmpstring);
  24085.                        return 0;
  24086.                     }
  24087.  
  24088.  Related Information 
  24089.  
  24090.               fopen 
  24091.               tmpnam 
  24092.               tempnam 
  24093.               _rmtmp 
  24094.  
  24095.  
  24096. ΓòÉΓòÉΓòÉ 3.240. tmpnam - Produce Temporary File Name ΓòÉΓòÉΓòÉ
  24097.  
  24098. tmpnam - Produce Temporary File Name 
  24099.  
  24100.  Syntax 
  24101.  
  24102.                     #include <stdio.h>
  24103.                     char *tmpnam(char *string);
  24104.  
  24105.  Description 
  24106.  
  24107.           tmpnam produces a valid file name that is not the same as the name of 
  24108.           any existing file. It stores this name in string. If string is NULL, 
  24109.           tmpnam leaves the result in an internal static buffer.  Any 
  24110.           subsequent calls destroy this value.  If string is not NULL, it must 
  24111.           point to an array of at least L_tmpnam bytes.  The value of L_tmpnam 
  24112.           is defined in <stdio.h>. 
  24113.  
  24114.           tmpnam produces a different name each time it is called within a 
  24115.           module up to at least TMP_MAX (a value of at least 25) names.  Note 
  24116.           that files created using names returned by tmpnam are not 
  24117.           automatically discarded at the end of the program. Files can be 
  24118.           removed by the remove function. 
  24119.  
  24120.  Returns 
  24121.  
  24122.           tmpnam returns a pointer to the name. If it cannot create a unique 
  24123.           name; it returns NULL. 
  24124.  
  24125.  Example Code 
  24126.  
  24127.           This example calls tmpnam to produce a valid file name. 
  24128.  
  24129.                     #include <stdio.h>
  24130.  
  24131.                     int main(void)
  24132.                     {
  24133.                        char *name1;
  24134.  
  24135.                        if ((name1 = tmpnam(NULL)) != NULL)
  24136.                           printf("%s can be used as a file name.\n", name1);
  24137.                        else
  24138.                           printf("Cannot create a unique file name\n");
  24139.  
  24140.                        return 0;
  24141.  
  24142.                        /****************************************************************************
  24143.                           The output should be similar to:
  24144.  
  24145.                           d:\tmp\acc00000.CTN can be used as a file name.
  24146.  
  24147.                        ****************************************************************************/
  24148.                     }
  24149.  
  24150.  Related Information 
  24151.  
  24152.               fopen 
  24153.               remove 
  24154.               tempnam 
  24155.  
  24156.  
  24157. ΓòÉΓòÉΓòÉ 3.241. _toascii - _tolower - _toupper - Convert Character ΓòÉΓòÉΓòÉ
  24158.  
  24159. _toascii - _tolower - _toupper - Convert Character 
  24160.  
  24161.  Syntax 
  24162.  
  24163.                     #include <ctype.h>
  24164.                     int _toascii(int c);
  24165.                     int _tolower(int c);
  24166.                     int _toupper(int c);
  24167.  
  24168.  Description 
  24169.  
  24170.           _toascii converts c to a character in the ASCII character set, by 
  24171.           setting all but the low-order 7 bits to 0. If c already represents an 
  24172.           ASCII character, _toascii does not change it. 
  24173.  
  24174.           _tolower converts c to the corresponding lowercase letter, if 
  24175.           possible. 
  24176.  
  24177.           _toupper converts c to the corresponding uppercase letter, if 
  24178.           possible. 
  24179.  
  24180.           Important  Use _tolower and _toupper only when you know that c is 
  24181.                      uppercase A to Z or lowercase a to z, respectively. 
  24182.                      Otherwise the results are undefined. These functions are 
  24183.                      not affected by the current locale. 
  24184.  
  24185.           These are all macros, and do not correctly handle arguments with side 
  24186.           effects. 
  24187.  
  24188.           For portability, use the tolower and toupper functions defined by the 
  24189.           ANSI/ISO standard, instead of the _tolower and _toupper macros. 
  24190.  
  24191.  Returns 
  24192.  
  24193.           _toascii, _tolower, and _toupper return the possibly converted 
  24194.           character c. If the character passed to _toascii is an ASCII 
  24195.           character, _toascii returns the character unchanged. There is no 
  24196.           error return. 
  24197.  
  24198.  Example Code 
  24199.  
  24200.           This example prints four sets of characters.  The first set is the 
  24201.           ASCII characters having graphic images, which range from 0x21 through 
  24202.           0x7e. The second set takes integers 0x7f21 through 0x7f7e and applies 
  24203.           the _toascii macro to them, yielding the same set of printable 
  24204.           characters. The third set is the characters with all lowercase 
  24205.           letters converted to uppercase.  The fourth set is the characters 
  24206.           with all uppercase letters converted to lowercase. 
  24207.  
  24208.                     #include <stdio.h>
  24209.                     #include <ctype.h>
  24210.  
  24211.                     int main(void)
  24212.                     {
  24213.                        int ch;
  24214.  
  24215.                        printf("Characters 0x01 to 0x03, and integers 0x7f01 to 0x7f03 mapped to\n");
  24216.                        printf("ASCII by _toascii() both yield the same graphic characters.\n\n");
  24217.                        for (ch = 0x01; ch <= 0x03; ch++) {
  24218.                           printf("char 0x%.4X: %c    ", ch, ch);
  24219.                           printf("char _toascii(0x%.4X): %c\n", ch+0x7f00, ch+0x7f00);
  24220.                        }
  24221.                        printf("\nCharacters A, B and C converted to lowercase and\n");
  24222.                        printf("Characters a, b and c converted to uppercase.\n\n");
  24223.                        for (ch = 0x41; ch <= 0x43; ch++) {
  24224.                           printf("_tolower(%c) = %c   ", ch, _tolower(ch));
  24225.                           printf("_toupper(%c) = %c\n", ch+0x20, _toupper(ch+0x20));
  24226.                        }
  24227.                        return 0;
  24228.  
  24229.                        /****************************************************************************
  24230.                           The output should be:
  24231.  
  24232.                           Characters 0x01 to 0x03, and integers 0x7f01 to 0x7f03 mapped to
  24233.                           ASCII by _toascii() both yield the same graphic characters.
  24234.  
  24235.                           char 0x0001:     char toascii(0x7F01): 
  24236.                           char 0x0002:     char toascii(0x7F02): 
  24237.                           char 0x0003:     char toascii(0x7F03): 
  24238.  
  24239.                           Characters A, B and C converted to lowercase and
  24240.                           Characters a, b and c converted to uppercase.
  24241.  
  24242.                           _tolower(A) = a   _toupper(a) = A
  24243.                           _tolower(B) = b   _toupper(b) = B
  24244.                           _tolower(C) = c   _toupper(c) = C
  24245.                        ****************************************************************************/
  24246.                     }
  24247.  
  24248.  Related Information 
  24249.  
  24250.               isalnum to isxdigit 
  24251.               isascii 
  24252.               _iscsym - _iscsymf 
  24253.               tolower - toupper 
  24254.               towlower - towupper 
  24255.  
  24256.  
  24257. ΓòÉΓòÉΓòÉ 3.242. tolower - toupper - Convert Character Case ΓòÉΓòÉΓòÉ
  24258.  
  24259. tolower - toupper - Convert Character Case 
  24260.  
  24261.  Syntax 
  24262.  
  24263.                     #include <ctype.h>
  24264.                     int tolower(int C);
  24265.                     int toupper(int c);
  24266.  
  24267.  Description 
  24268.  
  24269.           tolower converts the uppercase letter C to the corresponding 
  24270.           lowercase letter. 
  24271.  
  24272.           toupper converts the lowercase letter c to the corresponding 
  24273.           uppercase letter. 
  24274.  
  24275.           The character mapping is determined by the LC_CTYPE category of the 
  24276.           current locale. 
  24277.  
  24278.           Note:  toupper and tolower can only be used for single-byte 
  24279.                  characters.  towupper and towlower should be used for case 
  24280.                  conversion of wide characters that are equivalent to both 
  24281.                  single-byte and double-byte characters. 
  24282.  
  24283.  Returns 
  24284.  
  24285.           Both functions return the converted character. If the character c 
  24286.           does not have a corresponding lowercase or uppercase character, the 
  24287.           functions return c unchanged. 
  24288.  
  24289.  Example Code 
  24290.  
  24291.           This example uses toupper and tolower to modify characters between 
  24292.           code 0 and code 7f. 
  24293.  
  24294.                     #include <stdio.h>
  24295.                     #include <ctype.h>
  24296.  
  24297.                     int main(void)
  24298.                     {
  24299.                        int ch;
  24300.  
  24301.                        /* print hex values of characters */
  24302.                        for (ch = 0; ch <= 0x7f; ch++) {
  24303.                           printf("toupper=%#04x\n", toupper(ch));
  24304.                           printf("tolower=%#04x\n", tolower(ch));
  24305.                           putchar('\n');
  24306.                        }
  24307.                        return 0;
  24308.                     }
  24309.  
  24310.  Related Information 
  24311.  
  24312.               isalnum to isxdigit 
  24313.               isascii 
  24314.               _toascii - _tolower - _toupper 
  24315.               towlower - towupper 
  24316.  
  24317.  
  24318. ΓòÉΓòÉΓòÉ 3.243. towlower - towupper - Convert Wide Character Case ΓòÉΓòÉΓòÉ
  24319.  
  24320. towlower - towupper - Convert Wide Character Case 
  24321.  
  24322.  Syntax 
  24323.  
  24324.                     #include <wctype.h>
  24325.                     wint_t towlower(wint_t wc);
  24326.                     wint_t towupper(wint_t wc);
  24327.  
  24328.  Description 
  24329.  
  24330.           towlower converts the uppercase letter wc to the corresponding 
  24331.           lowercase letter. 
  24332.  
  24333.           towupper converts the lowercase letter wc to the corresponding 
  24334.           uppercase letter. 
  24335.  
  24336.           The character mapping is determined by the LC_CTYPE category of 
  24337.           current locale. 
  24338.  
  24339.  Returns 
  24340.  
  24341.           Both functions return the converted character. If the wide character 
  24342.           wc does not have a corresponding lowercase or uppercase character, 
  24343.           the functions return wc unchanged. 
  24344.  
  24345.  Example Code 
  24346.  
  24347.           This example uses towlower and towupper to convert characters between 
  24348.           0 and 0x7f. 
  24349.  
  24350.                     #include <wchar.h>
  24351.                     #include <stdio.h>
  24352.  
  24353.                     int main(void)
  24354.                     {
  24355.                        wint_t w_ch;
  24356.  
  24357.                        for (w_ch = 0; w_ch <= 0x7f; w_ch++) {
  24358.                           printf ("towupper : %#04x %#04x, ", w_ch, towupper(w_ch));
  24359.                           printf ("towlower : %#04x %#04x\n", w_ch, towlower(w_ch));
  24360.                        }
  24361.                        return 0;
  24362.  
  24363.                        /****************************************************************************
  24364.                           The output should be similar to :
  24365.                           .
  24366.                           :
  24367.                           towupper : 0x41 0x41, towlower : 0x41 0x61
  24368.                           towupper : 0x42 0x42, towlower : 0x42 0x62
  24369.                           towupper : 0x43 0x43, towlower : 0x43 0x63
  24370.                           towupper : 0x44 0x44, towlower : 0x44 0x64
  24371.                           towupper : 0x45 0x45, towlower : 0x45 0x65
  24372.                           .
  24373.                           :
  24374.                           towupper : 0x61 0x41, towlower : 0x61 0x61
  24375.                           towupper : 0x62 0x42, towlower : 0x62 0x62
  24376.                           towupper : 0x63 0x43, towlower : 0x63 0x63
  24377.                           towupper : 0x64 0x44, towlower : 0x64 0x64
  24378.                           towupper : 0x65 0x45, towlower : 0x65 0x65
  24379.                           :
  24380.                        ****************************************************************************/
  24381.                     }
  24382.  
  24383.  Related Information 
  24384.  
  24385.               tolower - toupper 
  24386.               _toascii - _tolower - _toupper 
  24387.  
  24388.  
  24389. ΓòÉΓòÉΓòÉ 3.244. tzset - Set Time Zone Information ΓòÉΓòÉΓòÉ
  24390.  
  24391. tzset - Set Time Zone Information 
  24392.  
  24393.  Syntax 
  24394.  
  24395.                     #include <time.h>
  24396.                     void tzset(void);
  24397.  
  24398.  Description 
  24399.  
  24400.           tzset uses the environment variable TZ to change the time zone and 
  24401.           daylight saving time (DST) zone values. These values are used by the 
  24402.           gmtime and localtime functions to make corrections from Coordinated 
  24403.           Universal Time (formerly GMT) to local time. 
  24404.  
  24405.           To use tzset, set the TZ variable to the appropriate values. (For the 
  24406.           possible values for TZ, see the chapter on run-time environment 
  24407.           variables in the VisualAge C++ Programming Guide.) Then call tzset to 
  24408.           incorporate the changes in the time zone information into your 
  24409.           current locale. 
  24410.  
  24411.           To set TZ from within a program, use putenv before calling tzset. 
  24412.  
  24413.           Note:  The time and date functions begin at 00:00:00 Coordinated 
  24414.                  Universal Time, January 1, 1970. 
  24415.  
  24416.  Returns 
  24417.  
  24418.           There is no return value. 
  24419.  
  24420.  Example Code 
  24421.  
  24422.           This example uses putenv and tzset to set the time zone to Central 
  24423.           Time. 
  24424.  
  24425.                     #include <time.h>
  24426.                     #include <stdio.h>
  24427.  
  24428.                     int main(void)
  24429.                     {
  24430.                        time_t currentTime;
  24431.                        struct tm *ts;
  24432.  
  24433.                        /* Get the current time                                                    */
  24434.  
  24435.                        (void)time(¤tTime);
  24436.                        printf("The GMT time is %s", asctime(gmtime(¤tTime)));
  24437.                        ts = localtime(¤tTime);
  24438.                        if (ts->tm_isdst > 0)  /* check if Daylight Saving Time is in effect       */
  24439.                           {
  24440.                           printf("The local time is %s", asctime(ts));
  24441.                           printf("Daylight Saving Time is in effect.\n");
  24442.                        }
  24443.                        else {
  24444.                           printf("The local time is %s", asctime(ts));
  24445.                           printf("Daylight Saving Time is not in effect.\n");
  24446.                        }
  24447.                        printf("**** Changing to Central Time ****\n");
  24448.                        putenv("TZ=CST6CDT");
  24449.                        tzset();
  24450.                        ts = localtime(¤tTime);
  24451.                        if (ts->tm_isdst > 0)  /* check if Daylight Saving Time is in effect       */
  24452.                           {
  24453.                           printf("The local time is %s", asctime(ts));
  24454.                           printf("Daylight Saving Time is in effect.\n");
  24455.                        }
  24456.                        else {
  24457.                           printf("The local time is %s", asctime(ts));
  24458.                           printf("Daylight Saving Time is not in effect.\n");
  24459.                        }
  24460.  
  24461.                        return 0;
  24462.  
  24463.                        /****************************************************************************
  24464.                           The output should be similar to:
  24465.  
  24466.                           The GMT time is Fri Jan 13 21:49:26 1995
  24467.                           The local time is Fri Jan 13 16:49:26 1995
  24468.                           Daylight Saving Time is not in effect.
  24469.                           **** Changing to Central Time ****
  24470.                           The local time is Fri Jan 13 15:49:26 1995
  24471.                           Daylight Saving Time is not in effect.
  24472.                        ****************************************************************************/
  24473.                     }
  24474.  
  24475.  Related Information 
  24476.  
  24477.               asctime 
  24478.               _ftime 
  24479.               gmtime 
  24480.               localtime 
  24481.               mktime 
  24482.               putenv 
  24483.               strftime 
  24484.               time 
  24485.  
  24486.  
  24487. ΓòÉΓòÉΓòÉ 3.245. _uaddmem - Add Memory to a Heap ΓòÉΓòÉΓòÉ
  24488.  
  24489. _uaddmem - Add Memory to a Heap 
  24490.  
  24491.  Syntax 
  24492.  
  24493.                     #include <umalloc.h>
  24494.                     Heap_t _uaddmem(Heap_t heap, void *block, size_t size, int clean);
  24495.  
  24496.  Description 
  24497.  
  24498.           _uaddmem adds a block of memory of size bytes into the specified user 
  24499.           heap (created with _ucreate). Before calling _uaddmem, you must first 
  24500.           get the block from the operating system, typically by using an OS/2 
  24501.           function like DosAllocMem or by allocating it statically. (See the 
  24502.           Control Program Guide and Reference for details on OS/2 functions for 
  24503.           memory management.) 
  24504.  
  24505.           If the memory block has been initialized to 0, specify _BLOCK_CLEAN 
  24506.           for the clean parameter.  If not, specify !_BLOCK_CLEAN. (This 
  24507.           information makes calloc and _ucalloc more efficient). 
  24508.  
  24509.           Note:  Memory returned by DosAllocMem is initialized to 0. 
  24510.  
  24511.           For fixed-size heaps, you must return all the blocks you added with 
  24512.           _uaddmem to the system. (For expandable heaps, these blocks are 
  24513.           returned by your release_fn when you call _udestroy.) 
  24514.  
  24515.           For more information about creating and using heaps, see "Managing 
  24516.           Memory" in the VisualAge C++ Programming Guide. 
  24517.  
  24518.           Note:  For every block of memory you add, a small number of bytes 
  24519.                  from it are used to store internal information. To reduce the 
  24520.                  total amount of overhead, it is better to add a few large 
  24521.                  blocks of memory than many small blocks. 
  24522.  
  24523.  Returns 
  24524.  
  24525.           _uaddmem returns a pointer to the heap the memory was added to. If 
  24526.           the heap specified is not valid, _uaddmem returns NULL. 
  24527.  
  24528.  Example Code 
  24529.  
  24530.           The following example creates a heap myheap, and then uses _uaddmem 
  24531.           to add memory to it. 
  24532.  
  24533.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  24534.                     #include <os2.h>
  24535.                     #include <bsememf.h>                /* Get flags for memory management  */
  24536.                     #include <stdlib.h>
  24537.                     #include <stdio.h>
  24538.                     #include <umalloc.h>
  24539.  
  24540.                     int main(void)
  24541.                     {
  24542.                        void    *initial_block, *extra_chunk;
  24543.                        APIRET  rc;
  24544.                        Heap_t  myheap;
  24545.                        char    *p1, *p2;
  24546.  
  24547.                        /* Call DosAllocMem to get the initial block of memory */
  24548.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  24549.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  24550.                           printf("DosAllocMem for initial block failed: return code = %ld\n", rc);
  24551.                           exit(EXIT_FAILURE);
  24552.                        }
  24553.                        /* Create a fixed size heap starting with the block declared earlier */
  24554.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  24555.                                                       _HEAP_REGULAR, NULL, NULL))) {
  24556.                           puts("_ucreate failed.");
  24557.                           exit(EXIT_FAILURE);
  24558.                        }
  24559.                        if (0 != _uopen(myheap)) {
  24560.                           puts("_uopen failed.");
  24561.                           exit(EXIT_FAILURE);
  24562.                        }
  24563.                        p1 = _umalloc(myheap, 100);
  24564.                        /* Call DosAllocMem to get another block of memory */
  24565.                        if (0 != (rc = DosAllocMem(&extra_chunk, 10 * 65536,
  24566.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  24567.                           printf("DosAllocMem for extra chunk failed: return code = %ld\n", rc);
  24568.                           exit(EXIT_FAILURE);
  24569.                        }
  24570.                        /* Add the second chunk of memory to user heap */
  24571.                        if (myheap != _uaddmem(myheap, extra_chunk, 10 * 65536, _BLOCK_CLEAN)) {
  24572.                           puts("_uaddmem failed.");
  24573.                           exit(EXIT_FAILURE);
  24574.                        }
  24575.                        p2 = _umalloc(myheap, 100000);
  24576.                        free(p1);
  24577.                        free(p2);
  24578.                        if (0 != _uclose(myheap)) {
  24579.                           puts("_uclose failed");
  24580.                           exit(EXIT_FAILURE);
  24581.                        }
  24582.                        if (0 != DosFreeMem(initial_block) || 0 != DosFreeMem(extra_chunk)) {
  24583.                           puts("DosFreeMem error.");
  24584.                           exit(EXIT_FAILURE);
  24585.                        }
  24586.                        return 0;
  24587.                     }
  24588.  
  24589.  Related Information 
  24590.  
  24591.               _ucreate 
  24592.               _udestroy 
  24593.               _uheapmin 
  24594.               Differentiating between Memory Management Functions 
  24595.               "Managing Memory" in the VisualAge C++ Programming Guide 
  24596.  
  24597.  
  24598. ΓòÉΓòÉΓòÉ 3.246. _ucalloc - Reserve and Initialize Memory from User Heap ΓòÉΓòÉΓòÉ
  24599.  
  24600. _ucalloc - Reserve and Initialize Memory from User Heap 
  24601.  
  24602.  Syntax 
  24603.  
  24604.                     #include <umalloc.h>
  24605.                     void *_ucalloc(Heap_t heap, size_t num, size_t size);
  24606.  
  24607.  Description 
  24608.  
  24609.           _ucalloc allocates memory for an array of num elements, each of 
  24610.           length size bytes, from the heap you specify. It then initializes all 
  24611.           bits of each element to 0. 
  24612.  
  24613.           _ucalloc works just like calloc except that you specify the heap to 
  24614.           use; calloc always allocates from the default heap. If the heap does 
  24615.           not have enough memory for the request, _ucalloc calls the getmore_fn 
  24616.           that you specified when you created the heap with _ucreate. 
  24617.  
  24618.           To reallocate or free memory allocated with _ucalloc, use the 
  24619.           non-heap-specific realloc and free. These functions always check what 
  24620.           heap the memory was allocated from. 
  24621.  
  24622.  Returns 
  24623.  
  24624.           _ucalloc returns a pointer to the reserved space. If size or num was 
  24625.           specified as zero, or if your getmore_fn cannot provide enough 
  24626.           memory, _ucalloc returns NULL. Passing _ucalloc a heap that is not 
  24627.           valid results in undefined behavior. 
  24628.  
  24629.  Example Code 
  24630.  
  24631.           This example creates a heap myheap and then uses _ucalloc to allocate 
  24632.           memory from it. 
  24633.  
  24634.                     #include <stdlib.h>
  24635.                     #include <stdio.h>
  24636.                     #include <umalloc.h>
  24637.                     #include <string.h>
  24638.  
  24639.                     int main(void)
  24640.                     {
  24641.                        Heap_t  myheap;
  24642.                        char    *ptr;
  24643.  
  24644.                        /* Use default heap as user heap */
  24645.                        myheap = _udefault(NULL);
  24646.  
  24647.                        if (NULL == (ptr = _ucalloc(myheap, 100, 1))) {
  24648.                           puts("Cannot allocate memory from user heap.");
  24649.                           exit(EXIT_FAILURE);
  24650.                        }
  24651.                        memset(ptr, 'x', 10);
  24652.                        free(ptr);
  24653.                        return 0;
  24654.                     }
  24655.  
  24656.  Related Information 
  24657.  
  24658.               calloc 
  24659.               free 
  24660.               realloc 
  24661.               _ucreate 
  24662.               _umalloc 
  24663.               Differentiating between Memory Management Functions 
  24664.               "Managing Memory" in the VisualAge C++ Programming Guide 
  24665.  
  24666.  
  24667. ΓòÉΓòÉΓòÉ 3.247. _uclose - Close Heap from Use ΓòÉΓòÉΓòÉ
  24668.  
  24669. _uclose - Close Heap from Use 
  24670.  
  24671.  Syntax 
  24672.  
  24673.                     #include <umalloc.h>
  24674.                     int _uclose(Heap_t heap);
  24675.  
  24676.  Description 
  24677.  
  24678.           _uclose closes a heap when a process will not use it again.  After 
  24679.           you close a heap, any attempt in the current process to allocate or 
  24680.           return memory to it will have undefined results. _uclose affects only 
  24681.           the current process; if the heap is shared, other processes may still 
  24682.           be able to access it. 
  24683.  
  24684.           Once you have closed the heap, use _udestroy to destroy it and return 
  24685.           all its memory to the operating system. 
  24686.  
  24687.           Note:  If the heap is shared, you must close it in all processes that 
  24688.                  share it before you destroy it, or undefined results will 
  24689.                  occur. 
  24690.  
  24691.           You cannot close The Developer's Toolkit run-time heap 
  24692.           (_RUNTIME_HEAP). 
  24693.  
  24694.           For more information about creating and using heaps, see "Managing 
  24695.           Memory" in the VisualAge C++ Programming Guide. 
  24696.  
  24697.  Returns 
  24698.  
  24699.           If successful, _uclose returns 0. A nonzero return value indicates 
  24700.           failure. Passing _uclose a heap that is not valid results in 
  24701.           undefined behavior. 
  24702.  
  24703.  Example Code 
  24704.  
  24705.           The following example creates and opens a heap, and then performs 
  24706.           operations on it.  It then calls _uclose to close the heap before 
  24707.           destroying it. 
  24708.  
  24709.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  24710.                     #include <os2.h>
  24711.                     #include <bsememf.h>                /* Get flags for memory management  */
  24712.                     #include <stdlib.h>
  24713.                     #include <stdio.h>
  24714.                     #include <umalloc.h>
  24715.  
  24716.                     int main(void)
  24717.                     {
  24718.                        void    *initial_block;
  24719.                        APIRET  rc;
  24720.                        Heap_t  myheap;
  24721.                        char    *p;
  24722.  
  24723.                        /* Call DosAllocMem to get the initial block of memory */
  24724.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  24725.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  24726.                           printf("DosAllocMem error: return code = %ld\n", rc);
  24727.                           exit(EXIT_FAILURE);
  24728.                        }
  24729.                        /* Create a fixed size heap starting with the block declared earlier */
  24730.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  24731.                                                       _HEAP_REGULAR, NULL, NULL))) {
  24732.                           puts("_ucreate failed.");
  24733.                           exit(EXIT_FAILURE);
  24734.                        }
  24735.                        if (0 != _uopen(myheap)) {
  24736.                           puts("_uopen failed.");
  24737.                           exit(EXIT_FAILURE);
  24738.                        }
  24739.                        p = _umalloc(myheap, 100);
  24740.                        memset(p, 'x', 10);
  24741.                        free(p);
  24742.  
  24743.                        if (0 != _uclose(myheap)) {
  24744.                           puts("_uclose failed");
  24745.                           exit(EXIT_FAILURE);
  24746.                        }
  24747.                        if (0 != (rc = DosFreeMem(initial_block))) {
  24748.                           printf("DosFreeMem error: return code = %ld\n", rc);
  24749.                           exit(EXIT_FAILURE);
  24750.                        }
  24751.                        return 0;
  24752.                     }
  24753.  
  24754.  Related Information 
  24755.  
  24756.               _uopen 
  24757.               _udestroy 
  24758.               _ucreate 
  24759.               Differentiating between Memory Management Functions 
  24760.               "Managing Memory" in the VisualAge C++ Programming Guide 
  24761.  
  24762.  
  24763. ΓòÉΓòÉΓòÉ 3.248. _ucreate - Create a Memory Heap ΓòÉΓòÉΓòÉ
  24764.  
  24765. _ucreate - Create a Memory Heap 
  24766.  
  24767.  Syntax 
  24768.  
  24769.                     #include <umalloc.h>
  24770.                     Heap_t _ucreate(void *block, size_t initsz, int clean, int memtype,
  24771.                                      void *(*getmore_fn)(Heap_t, size_t *, int *)
  24772.                                      void  (*release_fn)(Heap_t, void *, size_t);
  24773.  
  24774.  Description 
  24775.  
  24776.           _ucreate creates your own memory heap that you can allocate and free 
  24777.           memory from, just like The Developer's Toolkit run-time heap. 
  24778.  
  24779.           Before you call _ucreate, you must first get the initial block of 
  24780.           memory for the heap. You can get this block by calling an OS/2 
  24781.           function (such as DosAllocMem or or DosAllocSharedMem) or by 
  24782.           statically allocating it. (See the CP Programming Guide and Reference 
  24783.           for more information on the OS/2 functions.) 
  24784.  
  24785.           Note:  You must also return this initial block of memory to the 
  24786.                  system after you destroy the heap. 
  24787.  
  24788.           When you call _ucreate, you pass it the following parameters: 
  24789.  
  24790.           block         The pointer to the initial block you obtained. 
  24791.  
  24792.           initsz        The size of the initial block, which must be at least 
  24793.                         _HEAP_MIN_SIZE bytes (defined in <malloc.h>). If you 
  24794.                         are creating a fixed-size heap, the size must be large 
  24795.                         enough to satisfy all memory requests your program will 
  24796.                         make of it. 
  24797.  
  24798.           clean         The macro _BLOCK_CLEAN, if the memory in the block has 
  24799.                         been initialized to 0, or !_BLOCK_CLEAN, if the memory 
  24800.                         has not been touched.  This improves the efficiency of 
  24801.                         _ucalloc; if the memory is already initialized to 0, 
  24802.                         _ucalloc does not need to initialize it. 
  24803.  
  24804.                         Note:  DosAllocMem initializes memory to 0 for you. 
  24805.                                You can also use memset to initialize the 
  24806.                                memory; however, memset also commits all the 
  24807.                                memory at once, an action that could slow 
  24808.                                overall performance. 
  24809.  
  24810.           memtype       A macro indicating the type of memory in your heap: 
  24811.                         _HEAP_REGULAR (regular) or _HEAP_SHARED (shared). 
  24812.                         Shared memory can be shared between different 
  24813.                         processes. For more information on different types of 
  24814.                         memory, see the VisualAge C++ Programming Guide and the 
  24815.                         Control Program Guide and Reference. 
  24816.  
  24817.                         Note:  Make sure that when you get the initial block, 
  24818.                                you request the same type of memory that you 
  24819.                                specify for memtype. 
  24820.  
  24821.           getmore_fn    A function you provide to get more memory from the 
  24822.                         system (typically using OS/2 functions or static 
  24823.                         allocation). To create a fixed-size heap, specify NULL 
  24824.                         for this parameter. 
  24825.  
  24826.           release_fn    A function you provide to return memory to the system 
  24827.                         (typically using DosFreeMem). To create a fixed-size 
  24828.                         heap, specify NULL for this parameter. 
  24829.  
  24830.           If you create a fixed-size heap, the initial block of memory must be 
  24831.           large enough to satisfy all allocation requests made to it. Once the 
  24832.           block is fully allocated, further allocation requests to the heap 
  24833.           will fail.  If you create an expandable heap, the getmore_fn and 
  24834.           release_fn allow your heap to expand and shrink dynamically. 
  24835.  
  24836.           When you call _umalloc (or a similar function) for your heap, if not 
  24837.           enough memory is available in the block, it calls the getmore_fn you 
  24838.           provide. Your getmore_fn then gets more memory from the system and 
  24839.           adds it to the heap, using any method you choose. 
  24840.  
  24841.           Your getmore_fn must have the following prototype: 
  24842.  
  24843.                        void *(*getmore_fn)(Heap_t uh, size_t *size, int *clean);
  24844.           where:  compact break=fit. 
  24845.  
  24846.           uh      Is the heap to get memory for. 
  24847.  
  24848.           size    Is the size of the allocation request passed by _umalloc. You 
  24849.                   probably want to return enough memory at a time to satisfy 
  24850.                   several allocations; otherwise, every subsequent allocation 
  24851.                   has to call getmore_fn. You should return multiples of 64K 
  24852.                   (the smallest size that DosAllocMem returns). Make sure you 
  24853.                   update the size parameter if you return more than the 
  24854.                   original request. 
  24855.  
  24856.           clean   Within getmore_fn, you must set this variable either to 
  24857.                   _BLOCK_CLEAN, to indicate that you initialized the memory to 
  24858.                   0, or to !_BLOCK_CLEAN, to indicate that the memory is 
  24859.                   untouched. 
  24860.  
  24861.           Note:  Make sure your getmore_fn allocates the right type of memory 
  24862.                  for the heap. 
  24863.  
  24864.           When you call _uheapmin to coalesce the heap or _udestroy to destroy 
  24865.           it, these functions call the release_fn you provide to return the 
  24866.           memory to the system. function. 
  24867.  
  24868.           Your release_fn must have the following prototype: 
  24869.  
  24870.                        void (*release_fn)(Heap_t uh, void *block, size_t size);
  24871.  
  24872.           The heap uh the block is from, the block to be returned, and its size 
  24873.           are passed to release_fn by _uheapmin or _udestroy. 
  24874.  
  24875.           For more information about creating and using heaps, see the 
  24876.           "Managing Memory" in the VisualAge C++ Programming Guide. 
  24877.  
  24878.  Returns 
  24879.  
  24880.           If successful, _ucreate returns a pointer to the heap created. If 
  24881.           errors occur, _ucreate returns NULL. 
  24882.  
  24883.  Example Code 
  24884.  
  24885.           The following example uses _ucreate to create an expandable heap. The 
  24886.           functions for expanding and shrinking the heap are get_fn and 
  24887.           release_fn. The program then opens the heap and performs operations 
  24888.           on it, and then closes and destroys the heap. 
  24889.  
  24890.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  24891.                     #include <os2.h>
  24892.                     #include <bsememf.h>                /* Get flags for memory management  */
  24893.                     #include <stdlib.h>
  24894.                     #include <stdio.h>
  24895.                     #include <umalloc.h>
  24896.  
  24897.                     static void *get_fn(Heap_t usrheap, size_t *length, int *clean)
  24898.                     {
  24899.                        void *p;
  24900.  
  24901.                        /* Round up to the next chunk size */
  24902.                        *length = ((*length) / 65536) * 65536 + 65536;
  24903.                        *clean = _BLOCK_CLEAN;
  24904.                        DosAllocMem(&p, *length, PAG_COMMIT | PAG_READ | PAG_WRITE);
  24905.                        return (p);
  24906.                     }
  24907.  
  24908.                     static void release_fn(Heap_t usrheap, void *p, size_t size)
  24909.                     {
  24910.                        DosFreeMem(p);
  24911.                        return;
  24912.                     }
  24913.  
  24914.                     int main(void)
  24915.                     {
  24916.                        void    *initial_block;
  24917.                        APIRET  rc;
  24918.                        Heap_t  myheap;
  24919.                        char    *ptr;
  24920.  
  24921.                        /* Call DosAllocMem to get the initial block of memory */
  24922.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  24923.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  24924.                           printf("DosAllocMem error: return code = %ld\n", rc);
  24925.                           exit(EXIT_FAILURE);
  24926.                        }
  24927.  
  24928.                        /* Create an expandable heap starting with the block declared earlier */
  24929.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  24930.                                                       _HEAP_REGULAR, get_fn, release_fn))) {
  24931.                           puts("_ucreate failed.");
  24932.                           exit(EXIT_FAILURE);
  24933.                        }
  24934.                        if (0 != _uopen(myheap)) {
  24935.                           puts("_uopen failed.");
  24936.                           exit(EXIT_FAILURE);
  24937.                        }
  24938.  
  24939.                        /* Force user heap to grow */
  24940.                        ptr = _umalloc(myheap, 100000);
  24941.  
  24942.                        _uclose(myheap);
  24943.  
  24944.                        if (0 != _udestroy(myheap, _FORCE)) {
  24945.                           puts("_udestroy failed.");
  24946.                           exit(EXIT_FAILURE);
  24947.                        }
  24948.                        if (0 != (rc = DosFreeMem(initial_block))) {
  24949.                           printf("DosFreeMem error: return code = %ld\n", rc);
  24950.                           exit(EXIT_FAILURE);
  24951.                        }
  24952.                        return 0;
  24953.                     }
  24954.  
  24955.  Related Information 
  24956.  
  24957.               _uaddmem 
  24958.               _ucalloc 
  24959.               _uclose 
  24960.               _udestroy 
  24961.               _uheapmin 
  24962.               _umalloc 
  24963.               _uopen 
  24964.               Differentiating between Memory Management Functions 
  24965.               "Managing Memory" in the VisualAge C++ Programming Guide 
  24966.  
  24967.  
  24968. ΓòÉΓòÉΓòÉ 3.249. _udefault - Change the Default Heap ΓòÉΓòÉΓòÉ
  24969.  
  24970. _udefault - Change the Default Heap 
  24971.  
  24972.  Syntax 
  24973.  
  24974.                     #include <umalloc.h>
  24975.                     Heap_t _udefault(Heap_t heap);
  24976.  
  24977.  Description 
  24978.  
  24979.           _udefault makes the heap you specify become the default heap. All 
  24980.           calls to memory management functions that do not specify a heap 
  24981.           (including malloc and calloc) then allocate memory from the heap. 
  24982.  
  24983.           This change affects only the thread where you called _udefault. 
  24984.  
  24985.           The initial default heap is The Developer's Toolkit run-time heap. To 
  24986.           restore or explicitly set The Developer's Toolkit run-time heap as 
  24987.           the default, call _udefault with the argument _RUNTIME_HEAP. 
  24988.  
  24989.           You can also use _udefault to find out which heap is being used as 
  24990.           the default by specifying NULL for the heap parameter. The default 
  24991.           heap remains the same. 
  24992.  
  24993.           For more information about creating and using heaps, see "Managing 
  24994.           Memory" in the VisualAge C++ Programming Guide. 
  24995.  
  24996.  Returns 
  24997.  
  24998.           _udefault returns a pointer to the former default heap. You can save 
  24999.           this pointer and use it later to restore the original heap. If the 
  25000.           call is unsuccessful, _udefault returns NULL. Passing _udefault a 
  25001.           heap that is not valid results in undefined behavior. 
  25002.  
  25003.  Example Code 
  25004.  
  25005.           This example creates a fixed-size heap myheap and uses _udefault to 
  25006.           make it the default heap. The call to malloc then allocates memory 
  25007.           from myheap. The second call to _udefault restores the original 
  25008.           default heap. 
  25009.  
  25010.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  25011.                     #include <os2.h>
  25012.                     #include <bsememf.h>                /* Get flags for memory management  */
  25013.                     #include <stdlib.h>
  25014.                     #include <stdio.h>
  25015.                     #include <umalloc.h>
  25016.  
  25017.                     int main(void)
  25018.                     {
  25019.                        void    *initial_block;
  25020.                        APIRET  rc;
  25021.                        Heap_t  myheap, old_heap;
  25022.                        char    *p;
  25023.  
  25024.                        /* Call DosAllocMem to get the initial block of memory */
  25025.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  25026.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  25027.                           printf("DosAllocMem error: return code = %ld\n", rc);
  25028.                           exit(EXIT_FAILURE);
  25029.                        }
  25030.                        /* Create a fixed size heap starting with the block declared earlier */
  25031.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  25032.                                                       _HEAP_REGULAR, NULL, NULL))) {
  25033.                           puts("_ucreate failed.");
  25034.                           exit(EXIT_FAILURE);
  25035.                        }
  25036.                        if (0 != _uopen(myheap)) {
  25037.                           puts("_uopen failed.");
  25038.                           exit(EXIT_FAILURE);
  25039.                        }
  25040.  
  25041.                        /* myheap is used as default heap */
  25042.                        old_heap = _udefault(myheap);
  25043.  
  25044.                        /* malloc will allocate memory from myheap */
  25045.                        p = malloc(100);
  25046.                        memset(p, 'x', 10);
  25047.  
  25048.                        /* Restore original default heap */
  25049.                        _udefault(old_heap);
  25050.  
  25051.                        free(p);
  25052.                        if (0 != _uclose(myheap)) {
  25053.                           puts("_uclose failed");
  25054.                           exit(EXIT_FAILURE);
  25055.                        }
  25056.                        if (0 != (rc = DosFreeMem(initial_block))) {
  25057.                           printf("DosFreeMem error: return code = %ld\n", rc);
  25058.                           exit(EXIT_FAILURE);
  25059.                        }
  25060.                        return 0;
  25061.                     }
  25062.  
  25063.  Related Information 
  25064.  
  25065.               calloc 
  25066.               malloc 
  25067.               _mheap 
  25068.               _ucreate 
  25069.               Differentiating between Memory Management Functions 
  25070.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25071.  
  25072.  
  25073. ΓòÉΓòÉΓòÉ 3.250. _udestroy - Destroy a Heap ΓòÉΓòÉΓòÉ
  25074.  
  25075. _udestroy - Destroy a Heap 
  25076.  
  25077.  Syntax 
  25078.  
  25079.                     #include <umalloc.h>
  25080.                     int _udestroy(Heap_t heap, int force);
  25081.  
  25082.  Description 
  25083.  
  25084.           _udestroy destroys the heap you specify. It also returns the heap's 
  25085.           memory to the system by calling the release_fn you supplied to 
  25086.           _ucreate when you created the heap. If you did not supply a 
  25087.           release_fn, _udestroy simply marks the heap as destroyed so no 
  25088.           further operations can be performed. You must then return all the 
  25089.           memory in the heap to the system. 
  25090.  
  25091.           Note:  Whether or not you provide a release_fn, you must always 
  25092.                  return the initial block of memory (that you provided to 
  25093.                  _ucreate) to the system. 
  25094.  
  25095.           The force parameter controls the behavior of _udestroy if all 
  25096.           allocated objects from the heap have not been freed. If you specify 
  25097.           _FORCE for this parameter, _udestroy destroys the heap regardless of 
  25098.           whether allocated objects remain in that process or in any other 
  25099.           process that shares the heap. If you specify !_FORCE, the heap will 
  25100.           not be destroyed if any objects are still allocated from it. 
  25101.  
  25102.           Typically, you call _uclose to close the heap before you destroy it. 
  25103.           After you have destroyed a heap, any attempt to access it will have 
  25104.           undefined results. 
  25105.  
  25106.           You cannot destroy The Developer's Toolkit run-time heap 
  25107.           (_RUNTIME_HEAP). 
  25108.  
  25109.  Returns 
  25110.  
  25111.           _udestroy returns 0 whether the heap was destroyed or not. If the 
  25112.           heap passed to it is not valid, _udestroy returns a nonzero value. 
  25113.  
  25114.  Example Code 
  25115.  
  25116.           The following example creates and opens a heap, performs operations 
  25117.           on it, and then closes it. The program then calls _udestroy with the 
  25118.           _FORCE parameter to force the destruction of the heap. _udestroy 
  25119.           calls release_fn to return the memory to the system. 
  25120.  
  25121.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  25122.                     #include <os2.h>
  25123.                     #include <bsememf.h>                /* Get flags for memory management  */
  25124.                     #include <stdlib.h>
  25125.                     #include <stdio.h>
  25126.                     #include <umalloc.h>
  25127.  
  25128.                     static void *get_fn(Heap_t usrheap, size_t *length, int *clean)
  25129.                     {
  25130.                        void *p;
  25131.  
  25132.                        /* Round up to the next chunk size */
  25133.                        *length = ((*length) / 65536) * 65536 + 65536;
  25134.                        *clean = _BLOCK_CLEAN;
  25135.                        DosAllocMem(&p, *length, PAG_COMMIT | PAG_READ | PAG_WRITE);
  25136.                        return (p);
  25137.                     }
  25138.  
  25139.                     static void release_fn(Heap_t usrheap, void *p, size_t size)
  25140.                     {
  25141.                        DosFreeMem(p);
  25142.                        return;
  25143.                     }
  25144.  
  25145.                     int main(void)
  25146.                     {
  25147.                        void    *initial_block;
  25148.                        APIRET  rc;
  25149.                        Heap_t  myheap;
  25150.                        char    *ptr;
  25151.  
  25152.                        /* Call DosAllocMem to get the initial block of memory */
  25153.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  25154.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  25155.                           printf("DosAllocMem error: return code = %ld\n", rc);
  25156.                           exit(EXIT_FAILURE);
  25157.                        }
  25158.                        /* Create an expandable heap starting with the block declared earlier */
  25159.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  25160.                                                       _HEAP_REGULAR, get_fn, release_fn))) {
  25161.                           puts("_ucreate failed.");
  25162.                           exit(EXIT_FAILURE);
  25163.                        }
  25164.                        if (0 != _uopen(myheap)) {
  25165.                           puts("_uopen failed.");
  25166.                           exit(EXIT_FAILURE);
  25167.                        }
  25168.  
  25169.                        /* Force user heap to grow */
  25170.                        ptr = _umalloc(myheap, 100000);
  25171.  
  25172.                        _uclose(myheap);
  25173.  
  25174.                        if (0 != _udestroy(myheap, _FORCE)) {
  25175.                           puts("_udestroy failed.");
  25176.                           exit(EXIT_FAILURE);
  25177.                        }
  25178.                        if (0 != (rc = DosFreeMem(initial_block))) {
  25179.                           printf("DosFreeMem error: return code = %ld\n", rc);
  25180.                           exit(EXIT_FAILURE);
  25181.                        }
  25182.                        return 0;
  25183.                     }
  25184.  
  25185.  Related Information 
  25186.  
  25187.               _uaddmem 
  25188.               _ucreate 
  25189.               _uopen 
  25190.               _uclose 
  25191.               Differentiating between Memory Management Functions 
  25192.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25193.  
  25194.  
  25195. ΓòÉΓòÉΓòÉ 3.251. _uheapchk - Validate Memory Heap ΓòÉΓòÉΓòÉ
  25196.  
  25197. _uheapchk - Validate Memory Heap 
  25198.  
  25199.  Syntax 
  25200.  
  25201.                     #include <umalloc.h>
  25202.                     int _uheapchk(Heap_t heap);
  25203.  
  25204.  Description 
  25205.  
  25206.           _uheapchk checks the heap you specify for minimal consistency by 
  25207.           checking all allocated and freed objects on the heap. 
  25208.  
  25209.           _uheapchk works just like _heapchk, except that you specify the heap 
  25210.           to check; _heapchk always checks the default heap. 
  25211.  
  25212.           Note:  Using the _uheapchk, _uheapset, and _uheap_walk functions (and 
  25213.                  their equivalents for the default heap) may add overhead to 
  25214.                  each object allocated from the heap. 
  25215.  
  25216.  Returns 
  25217.  
  25218.           _uheapchk returns one of the following values, defined in both 
  25219.           <umalloc.h> and <malloc.h>: 
  25220.  
  25221.           _HEAPBADBEGIN     The heap specifed is not valid.  It may have been 
  25222.                             closed or destroyed. 
  25223.           _HEAPBADNODE      A memory node is corrupted, or the heap is damaged. 
  25224.           _HEAPEMPTY        The heap has not been initialized. 
  25225.           _HEAPOK           The heap appears to be consistent. 
  25226.  
  25227.  Example Code 
  25228.  
  25229.           This example creates a heap and performs memory operations on it.  It 
  25230.           then calls _uheapchk to validate the heap. 
  25231.  
  25232.                     #include <stdlib.h>
  25233.                     #include <stdio.h>
  25234.                     #include <umalloc.h>
  25235.  
  25236.                     int main(void)
  25237.                     {
  25238.                        Heap_t  myheap;
  25239.                        char    *ptr;
  25240.                        int     rc;
  25241.  
  25242.                        /* Use default heap as user heap */
  25243.                        myheap = _udefault(NULL);
  25244.  
  25245.                        if (NULL == (ptr = _ucalloc(myheap, 100, 1))) {
  25246.                           puts("Cannot allocate memory from user heap.");
  25247.                           exit(EXIT_FAILURE);
  25248.                        }
  25249.                        *(ptr - 1) = 'x';     /* overwrite storage that was not allocated */
  25250.  
  25251.                        if (_HEAPOK != (rc = _uheapchk(myheap))) {
  25252.                           switch(rc) {
  25253.                              case _HEAPEMPTY:
  25254.                                 puts("The heap has not been initialized.");
  25255.                                 break;
  25256.                              case _HEAPBADNODE:
  25257.                                 puts("A memory node is corrupted or the heap is damaged.");
  25258.                                 break;
  25259.                              case _HEAPBADBEGIN:
  25260.                                 puts("The heap specified is not valid.");
  25261.                                 break;
  25262.                           }
  25263.                           exit(rc);
  25264.                        }
  25265.                        free(ptr);
  25266.                        return 0;
  25267.  
  25268.                        /****************************************************************************
  25269.                           The output should be similar to :
  25270.  
  25271.                           A memory node is corrupted or the heap is damaged.
  25272.                        ****************************************************************************/
  25273.                     }
  25274.  
  25275.  Related Information 
  25276.  
  25277.               _heapchk 
  25278.               _heapmin 
  25279.               _uheapset 
  25280.               _uheap_walk 
  25281.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25282.               "Debugging Your Heaps" in the VisualAge C++ Programming Guide 
  25283.  
  25284.  
  25285. ΓòÉΓòÉΓòÉ 3.252. _uheapmin - Release Unused Memory in User Heap ΓòÉΓòÉΓòÉ
  25286.  
  25287. _uheapmin - Release Unused Memory in User Heap 
  25288.  
  25289.  Syntax 
  25290.  
  25291.                     #include <umalloc.h>
  25292.                     int _uheapmin(Heap_t heap);
  25293.  
  25294.  Description 
  25295.  
  25296.           _uheapmin returns all unused memory blocks from the heap you specify 
  25297.           to the operating system. 
  25298.  
  25299.           _uheapmin works just like _heapmin, except that you specify the heap 
  25300.           to use; _heapmin always uses the default heap. A debug version of 
  25301.           this function, _debug_uheapmin, is also provided. 
  25302.  
  25303.           To return the memory, _uheapmin calls the release_fn you supplied 
  25304.           when you created the heap with _ucreate. If you did not supply a 
  25305.           release_fn, _uheapmin has no effect and simply returns 0. 
  25306.  
  25307.  Returns 
  25308.  
  25309.           If successful, _uheapmin returns 0. A nonzero return value indicates 
  25310.           failure. Passing _uheapmin a heap that is not valid has undefined 
  25311.           results. 
  25312.  
  25313.  Example Code 
  25314.  
  25315.           The following example creates a heap and then allocates and frees a 
  25316.           large block of memory from it. It then calls _uheapmin to return free 
  25317.           blocks of memory to the system. 
  25318.  
  25319.                     #include <stdlib.h>
  25320.                     #include <stdio.h>
  25321.                     #include <umalloc.h>
  25322.  
  25323.                     int main(void)
  25324.                     {
  25325.                        Heap_t  myheap;
  25326.                        char    *ptr;
  25327.  
  25328.                        /* Use default heap as user heap */
  25329.                        myheap = _udefault(NULL);
  25330.  
  25331.                        /* Allocate a large object */
  25332.                        if (NULL == (ptr = _umalloc(myheap, 60000))) {
  25333.                           puts("Cannot allocate memory from user heap.");
  25334.                           exit(EXIT_FAILURE);
  25335.                        }
  25336.                        memset(ptr, 'x', 60000);
  25337.                        free(ptr);
  25338.  
  25339.                        /* _uheapmin will attempt to return the freed object to the system */
  25340.                        if (0 != _uheapmin(myheap)) {
  25341.                           puts("_uheapmin failed.");
  25342.                           exit(EXIT_FAILURE);
  25343.                        }
  25344.                        return 0;
  25345.                     }
  25346.  
  25347.  Related Information 
  25348.  
  25349.               _heapmin 
  25350.               _ucreate 
  25351.               Differentiating between Memory Management Functions 
  25352.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25353.               "Debugging Your Heaps" in the VisualAge C++ Programming Guide 
  25354.  
  25355.  
  25356. ΓòÉΓòÉΓòÉ 3.253. _uheapset - Validate and Set Memory Heap ΓòÉΓòÉΓòÉ
  25357.  
  25358. _uheapset - Validate and Set Memory Heap 
  25359.  
  25360.  Syntax 
  25361.  
  25362.                     #include <umalloc.h>
  25363.                     int _heapset(Heap_t heap, unsigned int fill);
  25364.  
  25365.  Description 
  25366.  
  25367.           _uheapset checks the heap you specify for minimal consistency by 
  25368.           checking all allocated and freed objects on the heap (similar to 
  25369.           _uheapchk). It then sets each byte of the heap's free objects to the 
  25370.           value of fill. 
  25371.  
  25372.           Using _uheapset can help you locate problems where your program 
  25373.           continues to use a freed pointer to an object.  After you set the 
  25374.           free heap to a specific value, when your program tries to interpret 
  25375.           the set values in the freed object as data, unexpected results occur, 
  25376.           indicating a problem. 
  25377.  
  25378.           _uheapset works just like _heapset, except that you specify the heap 
  25379.           to check; _heapset always checks the default heap. 
  25380.  
  25381.           Note:  Using the _uheapchk, _uheapset, and _uheap_walk functions (and 
  25382.                  their equivalents for the default heap) may add overhead to 
  25383.                  each object allocated from the heap. 
  25384.  
  25385.  Returns 
  25386.  
  25387.           _uheapset returns one of the following values, defined in both 
  25388.           <umalloc.h> and <malloc.h>: 
  25389.  
  25390.           _HEAPBADBEGIN     The heap specified is not valid.  It may have been 
  25391.                             closed or destroyed. 
  25392.           _HEAPBADNODE      A memory node is corrupted, or the heap is damaged. 
  25393.           _HEAPEMPTY        The heap has not been initialized. 
  25394.           _HEAPOK           The heap appears to be consistent. 
  25395.  
  25396.  Example Code 
  25397.  
  25398.           This example creates a heap and allocates and frees memory from it. 
  25399.           It then calls _uheapset to set the freed memory to a value. 
  25400.  
  25401.                     #include <stdlib.h>
  25402.                     #include <stdio.h>
  25403.                     #include <umalloc.h>
  25404.  
  25405.                     int main(void)
  25406.                     {
  25407.                        Heap_t  myheap;
  25408.                        char    *ptr;
  25409.                        int     rc;
  25410.  
  25411.                        /* Use default heap as user heap */
  25412.                        myheap = _udefault(NULL);
  25413.  
  25414.                        if (NULL == (ptr = _umalloc(myheap, 100))) {
  25415.                           puts("Cannot allocate memory from user heap.");
  25416.                           exit(EXIT_FAILURE);
  25417.                        }
  25418.                        memset(ptr, 'A', 10);
  25419.                        free(ptr);
  25420.  
  25421.                        if (_HEAPOK != (rc = _uheapset(myheap, 'x'))) {
  25422.                           switch(rc) {
  25423.                              case _HEAPEMPTY:
  25424.                                 puts("The heap has not been initialized.");
  25425.                                 break;
  25426.                              case _HEAPBADNODE:
  25427.                                 puts("A memory node is corrupted or the heap is damaged.");
  25428.                                 break;
  25429.                              case _HEAPBADBEGIN:
  25430.                                 puts("The heap specified is not valid.");
  25431.                                 break;
  25432.                           }
  25433.                           exit(rc);
  25434.                        }
  25435.                        return 0;
  25436.                     }
  25437.  
  25438.  Related Information 
  25439.  
  25440.               _heapmin 
  25441.               _heapset 
  25442.               _uheapchk 
  25443.               _uheap_walk 
  25444.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25445.               "Debugging Your Heaps" in the VisualAge C++ Programming Guide 
  25446.  
  25447.  
  25448. ΓòÉΓòÉΓòÉ 3.254. _uheap_walk - Return Information about Memory Heap ΓòÉΓòÉΓòÉ
  25449.  
  25450. _uheap_walk - Return Information about Memory Heap 
  25451.  
  25452.  Syntax 
  25453.  
  25454.                     #include <umalloc.h>
  25455.                     int _uheap_walk(Heap_t heap, int (*callback_fn)(const void *object,
  25456.                                          size_t size, int flag, int status,
  25457.                                          const char* file, int line) );
  25458.  
  25459.  Description 
  25460.  
  25461.           _uheap_walk traverses the heap you specify, and, for each allocated 
  25462.           or freed object, it calls the callback_fn function that you provide. 
  25463.           _uheap_walk works just like _heap_walk, except that you specify the 
  25464.           heap to be traversed; _heap_walk always traverses the default heap. 
  25465.  
  25466.           For each object, _uheap_walk passes your function: 
  25467.  
  25468.           object    A pointer to the object. 
  25469.  
  25470.           size      The size of the object. 
  25471.  
  25472.           flag      The value _USEDENTRY, if the object is currently allocated, 
  25473.                     or _FREEENTRY, if the object has been freed.  (Both values 
  25474.                     are defined in <malloc.h>.) 
  25475.  
  25476.           status    One of the following values, defined in both <umalloc.h> 
  25477.                     and <malloc.h>, depending on the status of the object: 
  25478.  
  25479.                     _HEAPBADBEGIN          The heap specified is not valid.  It 
  25480.                                            may have been closed or destroyed. 
  25481.  
  25482.                     _HEAPBADNODE           A memory node is corrupted, or the 
  25483.                                            heap is damaged. 
  25484.  
  25485.                     _HEAPEMPTY             The heap has not been initialized. 
  25486.  
  25487.                     _HEAPOK                The heap appears to be consistent. 
  25488.  
  25489.           file      The name of the file where the object was allocated or 
  25490.                     freed. 
  25491.  
  25492.           line      The line where the object was allocated or freed. 
  25493.  
  25494.           _uheap_walk provides information about all objects, regardless of 
  25495.           which memory management functions were used to allocate them. 
  25496.           However, the file and line information are only available if the 
  25497.           object was allocated and freed using the debug versions of the memory 
  25498.           management functions.  Otherwise, file is NULL and line is 0. 
  25499.  
  25500.           _uheap_walk calls callback_fn for each object until one of the 
  25501.           following occurs: 
  25502.  
  25503.               All objects have been traversed. 
  25504.               callback_fn returns a nonzero value to _heap_walk. 
  25505.               It cannot continue because of a problem with the heap. 
  25506.  
  25507.           You may want to code your callback_fn to return a nonzero value if 
  25508.           the status of the object is not _HEAPOK. Even if callback_fn returns 
  25509.           0 for an object that is corrupted, _heap_walk cannot continue because 
  25510.           of the state of the heap and returns to its caller. 
  25511.  
  25512.           You can use callback_fn to process information from _uheap_walk in 
  25513.           various ways. For example, you may want to print the information to a 
  25514.           file, or use it to generate your own error messages. You can use the 
  25515.           information to look for memory leaks and objects incorrectly 
  25516.           allocated or freed from the heap. It can be especially useful to call 
  25517.           _uheap_walk when _uheapchk returns an error. 
  25518.  
  25519.           Note: 
  25520.  
  25521.               Using the _uheapchk, _uheapset, and _uheap_walk functions (and 
  25522.                their equivalents for the default heap) may add overhead to each 
  25523.                object allocated from the heap 
  25524.  
  25525.               _uheap_walk locks the heap while it traverses it, to ensure that 
  25526.                no other operations use the heap until _uheap_walk finishes. As 
  25527.                a result, in your callback_fn, you cannot call any critical 
  25528.                functions in the run-time library, either explicitly or by 
  25529.                calling another function that calls a critical function. See the 
  25530.                VisualAge C++ Programming Guide for a list of critical 
  25531.                functions. 
  25532.  
  25533.  Returns 
  25534.  
  25535.           _uheap_walk returns the last value of status to the caller. 
  25536.  
  25537.  Example Code 
  25538.  
  25539.           This example creates a heap and performs memory operations on it. 
  25540.           _uheap_walk then traverses the heap and calls callback_function for 
  25541.           each memory object. The callback_function prints a message about each 
  25542.           memory block. 
  25543.  
  25544.                     #include <stdlib.h>
  25545.                     #include <stdio.h>
  25546.                     #include <umalloc.h>
  25547.  
  25548.                     int callback_function(const void *pentry, size_t sz, int useflag, int status,
  25549.                                           const char *filename, size_t line)
  25550.                     {
  25551.                        if (_HEAPOK != status) {
  25552.                           puts("status is not _HEAPOK.");
  25553.                           exit(status);
  25554.                        }
  25555.                        if (_USEDENTRY == useflag)
  25556.                           printf("allocated  %p     %u\n", pentry, sz);
  25557.                        else
  25558.                           printf("freed      %p     %u\n", pentry, sz);
  25559.                        return 0;
  25560.                     }
  25561.  
  25562.  
  25563.                     int main(void)
  25564.                     {
  25565.                        Heap_t  myheap;
  25566.                        char    *p1, *p2, *p3;
  25567.  
  25568.                        /* User default heap as user heap */
  25569.                        myheap = _udefault(NULL);
  25570.  
  25571.                        if (NULL == (p1 = _umalloc(myheap, 100)) ||
  25572.                            NULL == (p2 = _umalloc(myheap, 200)) ||
  25573.                            NULL == (p3 = _umalloc(myheap, 300))) {
  25574.                           puts("Cannot allocate memory from user heap.");
  25575.                           exit(EXIT_FAILURE);
  25576.                        }
  25577.                        free(p2);
  25578.                        puts("usage      address   size\n-----      -------   ----");
  25579.  
  25580.                        _uheap_walk(myheap, callback_function);
  25581.  
  25582.                        free(p1);
  25583.                        free(p3);
  25584.                        return 0;
  25585.  
  25586.                        /****************************************************************************
  25587.                           The output should be similar to :
  25588.  
  25589.                           usage      address   size
  25590.                           -----      -------   ----
  25591.                           allocated  73A20     300
  25592.                           allocated  738C0     100
  25593.                            :
  25594.                            :
  25595.                           freed      73930     224
  25596.                        ****************************************************************************/
  25597.                     }
  25598.  
  25599.  Related Information 
  25600.  
  25601.               _heapmin 
  25602.               _heap_walk 
  25603.               _uheapchk 
  25604.               _uheapset 
  25605.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25606.               "Debugging Your Heaps" in the VisualAge C++ Programming Guide 
  25607.  
  25608.  
  25609. ΓòÉΓòÉΓòÉ 3.255. _ultoa - Convert Unsigned Long Integer to String ΓòÉΓòÉΓòÉ
  25610.  
  25611. _ultoa - Convert Unsigned Long Integer to String 
  25612.  
  25613.  Syntax 
  25614.  
  25615.                     #include <stdlib.h>
  25616.                     char *_ultoa(unsigned long value, char *string, int radix);
  25617.  
  25618.  Description 
  25619.  
  25620.           _ultoa converts the digits of the given unsigned long value to a 
  25621.           null-terminated character string and stores the result in string. No 
  25622.           overflow checking is performed. The radix argument specifies the base 
  25623.           of value; it must be in the range of 2 through 36. 
  25624.  
  25625.           The space allocated for string must be large enough to hold the 
  25626.           returned string. The function can return up to 33 bytes, including 
  25627.           the null character (\0). 
  25628.  
  25629.  Returns 
  25630.  
  25631.           _ultoa returns a pointer to string. There is no error return value. 
  25632.  
  25633.  Example Code 
  25634.  
  25635.           This example converts the digits of the value 255 to decimal, binary, 
  25636.           and hexadecimal representations. 
  25637.  
  25638.                     #include <stdio.h>
  25639.                     #include <stdlib.h>
  25640.  
  25641.                     int main(void)
  25642.                     {
  25643.                        char buffer[10];
  25644.                        char *p;
  25645.  
  25646.                        p = _ultoa(255UL, buffer, 10);
  25647.                        printf("The result of _ultoa(255) with radix of 10 is %s\n", p);
  25648.                        p = _ultoa(255UL, buffer, 2);
  25649.                        printf("The result of _ultoa(255) with radix of 2 is %s\n", p);
  25650.                        p = _ultoa(255UL, buffer, 16);
  25651.                        printf("The result of _ultoa(255) with radix of 16 is %s\n", p);
  25652.                        return 0;
  25653.  
  25654.                        /****************************************************************************
  25655.                           The output should be:
  25656.  
  25657.                           The result of _ultoa(255) with radix of 10 is 255
  25658.                           The result of _ultoa(255) with radix of 2 is 11111111
  25659.                           The result of _ultoa(255) with radix of 16 is ff
  25660.                        ****************************************************************************/
  25661.                     }
  25662.  
  25663.  Related Information 
  25664.  
  25665.               _ecvt 
  25666.               _fcvt 
  25667.               _gcvt 
  25668.               _itoa 
  25669.               _ltoa 
  25670.  
  25671.  
  25672. ΓòÉΓòÉΓòÉ 3.256. _umalloc - Reserve Memory Blocks from User Heap ΓòÉΓòÉΓòÉ
  25673.  
  25674. _umalloc - Reserve Memory Blocks from User Heap 
  25675.  
  25676.  Syntax 
  25677.  
  25678.                     #include <umalloc.h>
  25679.                     void *_umalloc(Heap_t heap, size_t size);
  25680.  
  25681.  Description 
  25682.  
  25683.           _umalloc allocates a memory block of size bytes from the heap you 
  25684.           specify. Unlike _ucalloc, _umalloc does not initialize all bits to 0. 
  25685.  
  25686.           _umalloc works just like malloc, except that you specify the heap to 
  25687.           use; malloc always allocates from the default heap. A debug version 
  25688.           of this function, _debug_umalloc, is also provided. 
  25689.  
  25690.           If the heap does not have enough memory for the request, _umalloc 
  25691.           calls the getmore_fn that you specified when you created the heap 
  25692.           with _ucreate. 
  25693.  
  25694.           To reallocate or free memory allocated with _umalloc, use the 
  25695.           non-heap-specific realloc and free. These functions always check what 
  25696.           heap the memory was allocated from. 
  25697.  
  25698.  Returns 
  25699.  
  25700.           _umalloc returns a pointer to the reserved space. If size was 
  25701.           specified as 0, or if your getmore_fn cannot provide enough memory, 
  25702.           _umalloc returns NULL. Passing _umalloc a heap that is not valid 
  25703.           results in undefined behavior. 
  25704.  
  25705.  Example Code 
  25706.  
  25707.           This example creates a heap and uses _umalloc to allocate memory from 
  25708.           the heap. 
  25709.  
  25710.                     #include <stdlib.h>
  25711.                     #include <stdio.h>
  25712.                     #include <umalloc.h>
  25713.  
  25714.                     int main(void)
  25715.                     {
  25716.                        Heap_t  myheap;
  25717.                        char    *ptr;
  25718.  
  25719.                        /* Use default heap as user heap */
  25720.                        myheap = _udefault(NULL);
  25721.  
  25722.                        if (NULL == (ptr = _umalloc(myheap, 100))) {
  25723.                           puts("Cannot allocate memory from user heap.");
  25724.                           exit(EXIT_FAILURE);
  25725.                        }
  25726.                        free(ptr);
  25727.                        return 0;
  25728.                     }
  25729.  
  25730.  Related Information 
  25731.  
  25732.               calloc 
  25733.               free 
  25734.               malloc 
  25735.               realloc 
  25736.               _ucalloc 
  25737.               _ucreate 
  25738.               "Managing Memory" in the VisualAge C++ Programming Guide 
  25739.  
  25740.  
  25741. ΓòÉΓòÉΓòÉ 3.257. umask - Sets File Mask of Current Process ΓòÉΓòÉΓòÉ
  25742.  
  25743. umask - Sets File Mask of Current Process 
  25744.  
  25745.  Syntax 
  25746.  
  25747.                     #include <io.h>
  25748.                     #include <sys\stat.h>
  25749.                     int umask(int pmode);
  25750.  
  25751.  Description 
  25752.  
  25753.           umask sets the file permission mask of the environment for the 
  25754.           currently running process to the mode specified by pmode. The file 
  25755.           permission mask modifies the permission setting of new files created 
  25756.           by creat, open, or _sopen. 
  25757.  
  25758.           If a bit in the mask is 1, the corresponding bit in the requested 
  25759.           permission value of the file is set to 0 (disallowed).  If a bit in 
  25760.           the mask is 0, the corresponding bit is left unchanged.  The 
  25761.           permission setting for a new file is not set until the file is closed 
  25762.           for the first time. 
  25763.  
  25764.           The possible values for pmode are defined in <sys\stat.h>:  compact 
  25765.           break=fit. 
  25766.  
  25767.           Value                   Meaning 
  25768.  
  25769.           S_IREAD                 No effect 
  25770.  
  25771.           S_IWRITE                Writing not permitted 
  25772.  
  25773.           S_IREAD | S_IWRITE      Writing not permitted. 
  25774.  
  25775.           If the write bit is set in the mask, any new files will be read-only. 
  25776.           You cannot give write-only permission, meaning that setting the read 
  25777.           bit has no effect. 
  25778.  
  25779.  Returns 
  25780.  
  25781.           umask returns the previous value of pmode. A return value of -1 
  25782.           indicates that the value used for pmode was not valid, and errno is 
  25783.           set to EINVAL. 
  25784.  
  25785.  Example Code 
  25786.  
  25787.           This example sets the permission mask to create a write-only file. 
  25788.  
  25789.                     #include <sys\stat.h>
  25790.                     #include <io.h>
  25791.                     #include <stdio.h>
  25792.  
  25793.                     int main(void)
  25794.                     {
  25795.                        int oldMask;
  25796.  
  25797.                        oldMask = umask(S_IWRITE);
  25798.                        printf("\nDefault system startup mask is %d.\n", oldMask);
  25799.                        return 0;
  25800.  
  25801.                        /****************************************************************************
  25802.                           The output should be:
  25803.  
  25804.                           Default system startup mask is 0.
  25805.                        ****************************************************************************/
  25806.                     }
  25807.  
  25808.  Related Information 
  25809.  
  25810.               chmod 
  25811.               creat 
  25812.               open 
  25813.               _sopen 
  25814.  
  25815.  
  25816. ΓòÉΓòÉΓòÉ 3.258. ungetc - Push Byte onto Input Stream ΓòÉΓòÉΓòÉ
  25817.  
  25818. ungetc - Push Byte onto Input Stream 
  25819.  
  25820.  Syntax 
  25821.  
  25822.                     #include <stdio.h>
  25823.                     int ungetc(int c, FILE *stream);
  25824.  
  25825.  Description 
  25826.  
  25827.           ungetc pushes the byte c back onto the given input stream. However, 
  25828.           only one sequential byte is guaranteed to be pushed back onto the 
  25829.           input stream if you call ungetc consecutively. The stream must be 
  25830.           open for reading.  A subsequent read operation on the stream starts 
  25831.           with c. The byte c cannot be the EOF character. 
  25832.  
  25833.           Bytes placed on the stream by ungetc will be erased if fseek, 
  25834.           fsetpos, rewind, or fflush is called before the byte is read from the 
  25835.           stream. 
  25836.  
  25837.  Returns 
  25838.  
  25839.           ungetc returns the integer argument c converted to an unsigned char, 
  25840.           or EOF if c cannot be pushed back. 
  25841.  
  25842.  Example Code 
  25843.  
  25844.           In this example, the while statement reads decimal digits from an 
  25845.           input data stream by using arithmetic statements to compose the 
  25846.           numeric values of the numbers as it reads them. When a nondigit 
  25847.           character appears before the end of the file, ungetc replaces it in 
  25848.           the input stream so that later input functions can process it. 
  25849.  
  25850.                     #include <stdio.h>
  25851.                     #include <ctype.h>
  25852.  
  25853.                     int main(void)
  25854.                     {
  25855.                        int ch;
  25856.                        unsigned int result = 0;
  25857.  
  25858.                        while (EOF != (ch = getc(stdin)) && isdigit(ch))
  25859.                           result = result * 10 + ch -'0';
  25860.                        if (EOF != ch)
  25861.                           /* Push back the nondigit character onto the input stream               */
  25862.                           ungetc(ch, stdin);
  25863.  
  25864.                        printf("Input number : %d\n", result);
  25865.                        return 0;
  25866.  
  25867.                        /****************************************************************************
  25868.                           For the following input:
  25869.  
  25870.                           12345s
  25871.  
  25872.                           The output should be:
  25873.  
  25874.                           Input number : 12345
  25875.                        ****************************************************************************/
  25876.                     }
  25877.  
  25878.  Related Information 
  25879.  
  25880.               getc - getchar 
  25881.               fflush 
  25882.               fseek 
  25883.               fsetpos 
  25884.               putc - putchar 
  25885.               rewind 
  25886.               _ungetch 
  25887.  
  25888.  
  25889. ΓòÉΓòÉΓòÉ 3.259. _ungetch - Push Character Back to Keyboard ΓòÉΓòÉΓòÉ
  25890.  
  25891. _ungetch - Push Character Back to Keyboard 
  25892.  
  25893.  Syntax 
  25894.  
  25895.                     #include <conio.h>
  25896.                     int _ungetch(int c);
  25897.  
  25898.  Description 
  25899.  
  25900.           _ungetch pushes the character c back to the keyboard, causing c to be 
  25901.           the next character read. _ungetch fails if called more than once 
  25902.           before the next read operation. The character c cannot be the EOF 
  25903.           character. 
  25904.  
  25905.  Returns 
  25906.  
  25907.           If successful, _ungetch returns the character c. A return value of 
  25908.           EOF indicates an error. 
  25909.  
  25910.  Example Code 
  25911.  
  25912.           This example uses _getch to read a string delimited by the character 
  25913.           'x'.  It then calls _ungetch to return the delimiter to the keyboard 
  25914.           buffer. Other input routines can then process the delimiter. 
  25915.  
  25916.                     #include <conio.h>
  25917.                     #include <stdio.h>
  25918.  
  25919.                     int main(void)
  25920.                     {
  25921.                        int ch;
  25922.  
  25923.                        printf("Type in some letters.\n");
  25924.                        printf("If you type in an 'x', the program ends.\n");
  25925.                        for (; ; ) {
  25926.                           ch = _getch();
  25927.                           if ('x' == ch) {
  25928.                              _ungetch(ch);
  25929.                              break;
  25930.                           }
  25931.                           _putch(ch);
  25932.                        }
  25933.                        ch = _getch();
  25934.                        printf("\nThe last character was '%c'.", ch);
  25935.                        return 0;
  25936.  
  25937.                        /****************************************************************************
  25938.                           Here is the output from a sample run:
  25939.  
  25940.                           Type in some letters.
  25941.                           If you type in an 'x', the program ends.
  25942.                           One Two Three Four Five Si
  25943.                           The last character was 'x'.
  25944.                        ****************************************************************************/
  25945.                     }
  25946.  
  25947.  Related Information 
  25948.  
  25949.               _cscanf 
  25950.               _getch - _getche 
  25951.               _putch 
  25952.               ungetc 
  25953.  
  25954.  
  25955. ΓòÉΓòÉΓòÉ 3.260. ungetwc - Push Wide Character onto Input Stream ΓòÉΓòÉΓòÉ
  25956.  
  25957. ungetwc - Push Wide Character onto Input Stream 
  25958.  
  25959.  Syntax 
  25960.  
  25961.                     #include <stdio.h>
  25962.                     #include <wchar.h>
  25963.                     wint_t ungetwc(wint_t wc, FILE *stream);
  25964.  
  25965.  Description 
  25966.  
  25967.           ungetwc pushes the wide character by wc back onto the input stream. 
  25968.           The pushed-back wide characters will be returned by subsequent reads 
  25969.           on that stream in the reverse order of their pushing. A successful 
  25970.           intervening call (on the stream) to a file positioning function 
  25971.           (fseek, fsetpos, or rewind) discards any pushed-back wide characters 
  25972.           for the stream. 
  25973.  
  25974.           The external storage corresponding to the stream is unchanged. There 
  25975.           is always at least one wide character of push-back. 
  25976.  
  25977.           If the value of wc is WEOF, the operation fails and the input stream 
  25978.           is unchanged. 
  25979.  
  25980.           A successful call to the ungetwc function clears the EOF indicator 
  25981.           for the stream. The value of the file position indicator for the 
  25982.           stream after reading or discarding all pushed-back wide characters is 
  25983.           the same as it was before the wide characters were pushed back. 
  25984.  
  25985.           For a text stream, the file position indicator is backed up by one 
  25986.           wide character. This affects ftell, fflush, fseek (with SEEK_CUR), 
  25987.           and fgetpos. 
  25988.  
  25989.           For a binary stream, the position indicator is unspecified until all 
  25990.           characters are read or discarded, unless the last character is pushed 
  25991.           back, in which case the file position indicator is backed up by one 
  25992.           wide character. This affects ftell, fseek (with SEEK_CUR), fgetpos, 
  25993.           and fflush. 
  25994.  
  25995.           After calling ungetwc, flush the buffer or reposition the stream 
  25996.           pointer before calling a read function for the stream, unless EOF has 
  25997.           been reached. After a read operation on the stream, flush the buffer 
  25998.           or reposition the stream pointer before calling ungetwc. 
  25999.  
  26000.           Note: 
  26001.  
  26002.               Only 1 wide character may be pushed back. 
  26003.  
  26004.               The position on the stream after a successful call to ungetwc is 
  26005.                one wide character prior to the current position. 
  26006.  
  26007.  Returns 
  26008.  
  26009.           ungetwc returns the wide character pushed back after conversion, or 
  26010.           WEOF if the operation fails. 
  26011.  
  26012.  Example Code 
  26013.  
  26014.           This example reads in wide characters from stream, and then calls 
  26015.           ungetwc to push the characters back to the stream. 
  26016.  
  26017.                     #include <wchar.h>
  26018.                     #include <stdio.h>
  26019.                     #include <stdlib.h>
  26020.  
  26021.                     int main(void)
  26022.                     {
  26023.                        FILE         *stream;
  26024.                        wint_t       wc;
  26025.                        wint_t       wc2;
  26026.                        unsigned int result = 0;
  26027.  
  26028.                        if (NULL == (stream = fopen("ungetwc.dat", "r+"))) {
  26029.                           printf("Unable to open file.\n");
  26030.                           exit(EXIT_FAILURE);
  26031.                        }
  26032.  
  26033.                        while (WEOF != (wc = fgetwc(stream)) && iswdigit(wc))
  26034.                           result = result * 10 + wc - L'0';
  26035.  
  26036.                        if (WEOF != wc)
  26037.                           ungetwc(wc, stream);    /* Push the nondigit wide character back */
  26038.  
  26039.                        /* get the pushed back character */
  26040.                        if (WEOF != (wc2 = fgetwc(stream))) {
  26041.                           if (wc != wc2) {
  26042.                              printf("Subsequent fgetwc does not get the pushed back character.\n");
  26043.                              exit(EXIT_FAILURE);
  26044.                           }
  26045.                           printf("The digits read are '%i'\n"
  26046.                                  "The character being pushed back is '%lc'", result, wc2);
  26047.                        }
  26048.                        return 0;
  26049.  
  26050.                        /****************************************************************************
  26051.                           Assuming the file ungetwc.dat contains:
  26052.  
  26053.                           12345ABCDE67890XYZ
  26054.  
  26055.                           The output should be similar to :
  26056.  
  26057.                           The digits read are '12345'
  26058.                           The character being pushed back is 'A'
  26059.                        ****************************************************************************/
  26060.                     }
  26061.  
  26062.  Related Information 
  26063.  
  26064.               fflush 
  26065.               fseek 
  26066.               fsetpos 
  26067.               getwc 
  26068.               putwc 
  26069.               ungetc 
  26070.  
  26071.  
  26072. ΓòÉΓòÉΓòÉ 3.261. unlink - Delete File ΓòÉΓòÉΓòÉ
  26073.  
  26074. unlink - Delete File 
  26075.  
  26076.  Syntax 
  26077.  
  26078.                     #include <stdio.h>  /* also in <io.h> */
  26079.                     int unlink(const char *pathname);
  26080.  
  26081.  Description 
  26082.  
  26083.           unlink deletes the file specified by pathname. 
  26084.  
  26085.           Portability Note  For portability, use the ANSI/ISO function remove 
  26086.                             instead of unlink. 
  26087.  
  26088.  Returns 
  26089.  
  26090.           unlink returns 0 if the file is successfully deleted. A return value 
  26091.           of -1 indicates an error, and errno is set to one of the following 
  26092.           values:  compact break=fit. 
  26093.  
  26094.           Value          Meaning 
  26095.  
  26096.           EACCESS        The path name specifies a read-only file or a 
  26097.                          directory. 
  26098.  
  26099.           EISOPEN        The file is open. 
  26100.  
  26101.           ENOENT         An incorrect path name was specified, or the file or 
  26102.                          path name was not found. 
  26103.  
  26104.  Example Code 
  26105.  
  26106.           This example deletes the file tmpfile from the system or prints an 
  26107.           error message if unable to delete it. 
  26108.  
  26109.                     #include <stdio.h>
  26110.  
  26111.                     int main(void)
  26112.                     {
  26113.                        if (-1 == unlink("tmpfile"))
  26114.                           perror("Cannot delete tmpfile");
  26115.                        else
  26116.                           printf("tmpfile has been successfully deleted\n");
  26117.                        return 0;
  26118.  
  26119.                        /****************************************************************************
  26120.                           If the file "tmpfile" exists, the output should be:
  26121.  
  26122.                           tmpfile has been successfully deleted
  26123.                        ****************************************************************************/
  26124.                     }
  26125.  
  26126.  Related Information 
  26127.  
  26128.               remove 
  26129.               _rmtmp 
  26130.  
  26131.  
  26132. ΓòÉΓòÉΓòÉ 3.262. _uopen - Open Heap for Use ΓòÉΓòÉΓòÉ
  26133.  
  26134. _uopen - Open Heap for Use 
  26135.  
  26136.  Syntax 
  26137.  
  26138.                     #include <umalloc.h>
  26139.                     int _uopen(Heap_t heap);
  26140.  
  26141.  Description 
  26142.  
  26143.           _uopen allows the current process to use the heap you specify. If the 
  26144.           heap is shared, you must call _uopen in each process that will 
  26145.           allocate or free from the heap. See "Managing Memory" in the 
  26146.           VisualAge C++ Programming Guide for more information about sharing 
  26147.           heaps, and about creating and using heaps in general. 
  26148.  
  26149.  Returns 
  26150.  
  26151.           If successful, _uopen returns 0. A nonzero return code indicates 
  26152.           failure. Passing _uopen a heap that is not valid results in undefined 
  26153.           behavior. 
  26154.  
  26155.  Example Code 
  26156.  
  26157.           The following example creates a fixed-size heap, then uses _uopen to 
  26158.           open it.  The program then performs operations on the heap, and 
  26159.           closes and destroys it. 
  26160.  
  26161.                     #define  INCL_DOSMEMMGR             /* Memory Manager values */
  26162.                     #include <os2.h>
  26163.                     #include <bsememf.h>                /* Get flags for memory management  */
  26164.                     #include <stdlib.h>
  26165.                     #include <stdio.h>
  26166.                     #include <umalloc.h>
  26167.  
  26168.                     int main(void)
  26169.                     {
  26170.                        void    *initial_block;
  26171.                        APIRET  rc;
  26172.                        Heap_t  myheap;
  26173.                        char    *p;
  26174.  
  26175.                        /* Call DosAllocMem to get the initial block of memory */
  26176.                        if (0 != (rc = DosAllocMem(&initial_block, 65536,
  26177.                                                   PAG_WRITE | PAG_READ | PAG_COMMIT))) {
  26178.                           printf("DosAllocMem error: return code = %ld\n", rc);
  26179.                           exit(EXIT_FAILURE);
  26180.                        }
  26181.                        /* Create a fixed size heap starting with the block declared earlier */
  26182.                        if (NULL == (myheap = _ucreate(initial_block, 65536, _BLOCK_CLEAN,
  26183.                                                       _HEAP_REGULAR, NULL, NULL))) {
  26184.                           puts("_ucreate failed.");
  26185.                           exit(EXIT_FAILURE);
  26186.                        }
  26187.                        if (0 != _uopen(myheap)) {
  26188.                           puts("_uopen failed.");
  26189.                           exit(EXIT_FAILURE);
  26190.                        }
  26191.                        p = _umalloc(myheap, 100);
  26192.                        free(p);
  26193.                        if (0 != _uclose(myheap)) {
  26194.                           puts("_uclose failed");
  26195.                           exit(EXIT_FAILURE);
  26196.                        }
  26197.                        if (0 != (rc = DosFreeMem(initial_block))) {
  26198.                           printf("DosFreeMem error: return code = %ld\n", rc);
  26199.                           exit(EXIT_FAILURE);
  26200.                        }
  26201.                        return 0;
  26202.                     }
  26203.  
  26204.  Related Information 
  26205.  
  26206.               _uaddmem 
  26207.               _uclose 
  26208.               _ucreate 
  26209.               "Managing Memory" in the VisualAge C++ Programming Guide 
  26210.  
  26211.  
  26212. ΓòÉΓòÉΓòÉ 3.263. _ustats - Get Information about Heap ΓòÉΓòÉΓòÉ
  26213.  
  26214. _ustats - Get Information about Heap 
  26215.  
  26216.  Syntax 
  26217.  
  26218.                     #include <umalloc.h>
  26219.                     int _ustats(Heap_t heap, _HEAPSTATS *hpinfo);
  26220.  
  26221.  Description 
  26222.  
  26223.           _ustats gets information about the heap you specify and stores it in 
  26224.           the hpinfo structure you pass to it. 
  26225.  
  26226.           The _HEAPSTATS structure type is defined in <umalloc.h>. The members 
  26227.           it contains and the information that _ustats stores in each is as 
  26228.           follows:  compact break=fit. 
  26229.  
  26230.           _provided     How much memory the heap holds (excluding memory used 
  26231.                         for overhead for the heap) 
  26232.  
  26233.           _used         How much memory is currently allocated from the heap 
  26234.  
  26235.           _shared       Whether the memory is shared (_shared is 1) or not 
  26236.                         (_shared is 0) 
  26237.  
  26238.           _maxfree      The size of the largest contiguous piece of memory 
  26239.                         available on the heap 
  26240.  
  26241.  Returns 
  26242.  
  26243.           If successful, _ustats returns 0. A nonzero return code indicates 
  26244.           failure. Passing _ustats a heap that is not valid results in 
  26245.           undefined behavior. 
  26246.  
  26247.  Example Code 
  26248.  
  26249.           This example creates a heap and allocates memory from it. It then 
  26250.           calls _ustats to print out information about the heap. 
  26251.  
  26252.                     #include <stdlib.h>
  26253.                     #include <stdio.h>
  26254.                     #include <umalloc.h>
  26255.  
  26256.                     int main(void)
  26257.                     {
  26258.                        Heap_t      myheap;
  26259.                        _HEAPSTATS  myheap_stat;
  26260.                        char        *ptr;
  26261.  
  26262.                        /* Use default heap as user heap */
  26263.                        myheap = _udefault(NULL);
  26264.  
  26265.                        if (NULL == (ptr = _umalloc(myheap, 100))) {
  26266.                           puts("Cannot allocate memory from user heap.");
  26267.                           exit(EXIT_FAILURE);
  26268.                        }
  26269.                        if (0 != _ustats(myheap, &myheap_stat)) {
  26270.                           puts("_ustats failed.");
  26271.                           exit(EXIT_FAILURE);
  26272.                        }
  26273.                        printf ("_provided: %u\n", myheap_stat._provided);
  26274.                        printf ("_used    : %u\n", myheap_stat._used);
  26275.                        printf ("_shared  : %u\n", myheap_stat._shared);
  26276.                        printf ("_max_free: %u\n", myheap_stat._max_free);
  26277.                        free(ptr);
  26278.                        return 0;
  26279.                        /****************************************************************************
  26280.                           The output should be similar to :
  26281.  
  26282.                           _provided: 65264
  26283.                           _used    : 14304
  26284.                           _shared  : 0
  26285.                           _max_free: 50960
  26286.                        ****************************************************************************/
  26287.                     }
  26288.  
  26289.  Related Information 
  26290.  
  26291.               _mheap 
  26292.               _ucreate 
  26293.               "Managing Memory" in the VisualAge C++ Programming Guide 
  26294.  
  26295.  
  26296. ΓòÉΓòÉΓòÉ 3.264. utime - Set Modification Time ΓòÉΓòÉΓòÉ
  26297.  
  26298. utime - Set Modification Time 
  26299.  
  26300.  Syntax 
  26301.  
  26302.                     #include <sys\utime.h>
  26303.                     #include <sys\types.h>
  26304.                     int utime(char *pathname, struct utimbuf *times);
  26305.  
  26306.  Description 
  26307.  
  26308.           utime sets the modification time for the file specified by pathname. 
  26309.           The process must have write access to the file;  otherwise, the time 
  26310.           cannot be changed. 
  26311.  
  26312.           Although the utimbuf structure contains a field for access time, only 
  26313.           the modification time is set in the OS/2 operating system. If times 
  26314.           is a NULL pointer, the modification time is set to the current time. 
  26315.           Otherwise, times must point to a structure of type utimbuf, defined 
  26316.           in <sys\utime.h>.  The modification time is set from the modtime 
  26317.           field in this structure. 
  26318.  
  26319.           utime accepts only even numbers of seconds. If you enter an odd 
  26320.           number of seconds, the function rounds it down. 
  26321.  
  26322.  Returns 
  26323.  
  26324.           utime returns 0 if the file modification time was changed.  A return 
  26325.           value of -1 indicates an error, and errno is set to one of the 
  26326.           following values:  compact break=fit. 
  26327.  
  26328.           Value          Meaning 
  26329.  
  26330.           EACCESS        The path name specifies a directory or read-only file. 
  26331.  
  26332.           EMFILE         There are too many open files.  You must open the file 
  26333.                          to change its modification time. 
  26334.  
  26335.           ENOENT         The file path name was not found, or the file name was 
  26336.                          incorrectly specified. 
  26337.  
  26338.  Example Code 
  26339.  
  26340.           This example sets the last modification time of file utime.dat to the 
  26341.           current time.  It prints an error message if it cannot. 
  26342.  
  26343.                     #include <sys\types.h>
  26344.                     #include <sys\utime.h>
  26345.                     #include <sys\stat.h>
  26346.                     #include <stdio.h>
  26347.                     #include <stdlib.h>
  26348.  
  26349.                     #define  FILENAME      "utime.dat"
  26350.  
  26351.                     int main(void)
  26352.                     {
  26353.                        struct utimbuf ubuf;
  26354.                        struct stat statbuf;
  26355.                        FILE *fp;                                              /* File pointer     */
  26356.  
  26357.                        /* creating file, whose date will be changed by calling utime              */
  26358.                        fp = fopen(FILENAME, "w");
  26359.  
  26360.                        /* write Hello World in the file                                           */
  26361.                        fprintf(fp, "Hello World\n");
  26362.  
  26363.                        /* close file                                                              */
  26364.                        fclose(fp);
  26365.  
  26366.                        /* seconds to current date from 1970 Jan 1                                 */
  26367.                        /* Fri Dec 31 23:59:58 1999                                                */
  26368.                        ubuf.modtime = 946702799;
  26369.  
  26370.                        /* changing file modification time                                         */
  26371.                        if (-1 == utime(FILENAME, &ubuf)) {
  26372.                           perror("utime failed");
  26373.                           remove(FILENAME);
  26374.                           return EXIT_FAILURE;
  26375.                        }
  26376.  
  26377.                        /* display the modification time                                           */
  26378.                        if (0 == stat(FILENAME, &statbuf))
  26379.                           printf("The file modification time is %s", ctime(&statbuf.st_mtime));
  26380.                        else
  26381.                           printf("File could not be found\n");
  26382.                        remove(FILENAME);
  26383.                        return 0;
  26384.  
  26385.                        /****************************************************************************
  26386.                           The output should be:
  26387.  
  26388.                           The file modification time is Fri Dec 31 23:59:58 1999
  26389.                        ****************************************************************************/
  26390.                     }
  26391.  
  26392.  Related Information 
  26393.  
  26394.               fstat 
  26395.               stat 
  26396.  
  26397.  
  26398. ΓòÉΓòÉΓòÉ 3.265. va_arg - va_end - va_start - Access Function Arguments ΓòÉΓòÉΓòÉ
  26399.  
  26400. va_arg - va_end - va_start - Access Function Arguments 
  26401.  
  26402.  Syntax 
  26403.  
  26404.                     #include <stdarg.h>
  26405.                     var_type va_arg(va_list arg_ptr, var_type);
  26406.                     void va_end(va_list arg_ptr);
  26407.                     void va_start(va_list arg_ptr, variable_name);
  26408.  
  26409.  Description 
  26410.  
  26411.           va_arg, va_end, and va_start access the arguments to a function when 
  26412.           it takes a fixed number of required arguments and a variable number 
  26413.           of optional arguments. All three of these are macros. You declare 
  26414.           required arguments as ordinary parameters to the function and access 
  26415.           the arguments through the parameter names. 
  26416.  
  26417.           va_start initializes the arg_ptr pointer for subsequent calls to 
  26418.           va_arg and va_end. 
  26419.  
  26420.           The argument variable_name is the identifier of the rightmost named 
  26421.           parameter in the parameter list (preceding , ...). Use va_start 
  26422.           before va_arg. Corresponding va_start and va_end macros must be in 
  26423.           the same function. 
  26424.  
  26425.           va_arg retrieves a value of the given var_type from the location 
  26426.           given by arg_ptr, and increases arg_ptr to point to the next argument 
  26427.           in the list.  va_arg can retrieve arguments from the list any number 
  26428.           of times within the function. The var_type argument must be one of 
  26429.           int, long, double, struct, union, or pointer, or a typedef of one of 
  26430.           these types. 
  26431.  
  26432.           va_end is needed to indicate the end of parameter scanning. 
  26433.  
  26434.  Returns 
  26435.  
  26436.           va_arg returns the current argument. va_end and va_start do not 
  26437.           return a value. 
  26438.  
  26439.  Example Code 
  26440.  
  26441.           This example passes a variable number of arguments to a function, 
  26442.           stores each argument in an array, and prints each argument. 
  26443.  
  26444.                     #include <stdio.h>
  26445.                     #include <stdarg.h>
  26446.  
  26447.                     int vout(int max,...);
  26448.  
  26449.                     int main(void)
  26450.                     {
  26451.                        vout(3, "Sat", "Sun", "Mon");
  26452.                        printf("\n");
  26453.                        vout(5, "Mon", "Tues", "Wed", "Thurs", "Fri");
  26454.                        return 0;
  26455.                     }
  26456.  
  26457.                     int vout(int max,...)
  26458.                     {
  26459.                        va_list arg_ptr;
  26460.                        int args = 0;
  26461.                        char *days[7];
  26462.  
  26463.                        va_start(arg_ptr, max);
  26464.                        while (args < max) {
  26465.                           days[args] = va_arg(arg_ptr, char *);
  26466.                           printf("Day:  %s  \n", days[args++]);
  26467.                        }
  26468.                        va_end(arg_ptr);
  26469.  
  26470.                        /****************************************************************************
  26471.                           The output should be:
  26472.  
  26473.                           Day:  Sat
  26474.                           Day:  Sun
  26475.                           Day:  Mon
  26476.  
  26477.                           Day:  Mon
  26478.                           Day:  Tues
  26479.                           Day:  Wed
  26480.                           Day:  Thurs
  26481.                           Day:  Fri
  26482.                        ****************************************************************************/
  26483.                     }
  26484.  
  26485.  Related Information 
  26486.  
  26487.               vfprintf 
  26488.               vprintf 
  26489.               vsprintf 
  26490.  
  26491.  
  26492. ΓòÉΓòÉΓòÉ 3.266. vfprintf - Print Argument Data to Stream ΓòÉΓòÉΓòÉ
  26493.  
  26494. vfprintf - Print Argument Data to Stream 
  26495.  
  26496.  Syntax 
  26497.  
  26498.                     #include <stdarg.h>
  26499.                     #include <stdio.h>
  26500.                     int vfprintf(FILE *stream, const char *format, va_list arg_ptr);
  26501.  
  26502.  Description 
  26503.  
  26504.           vfprintf formats and writes a series of characters and values to the 
  26505.           output stream. vfprintf works just like fprintf, except that arg_ptr 
  26506.           points to a list of arguments whose number can vary from call to call 
  26507.           in the program. These arguments should be initialized by va_start for 
  26508.           each call. In contrast, fprintf can have a list of arguments, but the 
  26509.           number of arguments in that list is fixed when you compile the 
  26510.           program. 
  26511.  
  26512.           vfprintf converts each entry in the argument list according to the 
  26513.           corresponding format specifier in format. The format has the same 
  26514.           form and function as the format string for printf. For a description 
  26515.           of the format string, see printf. 
  26516.  
  26517.           In extended mode, vfprintf also converts floating-point values of NaN 
  26518.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  26519.           "infinity". The case and sign of the string is determined by the 
  26520.           format specifiers.  See Infinity and NaN Support for more information 
  26521.           on infinity and NaN values. 
  26522.  
  26523.  Returns 
  26524.  
  26525.           If successful, vfprintf returns the number of bytes written to 
  26526.           stream. If an error occurs, the function returns a negative value. 
  26527.  
  26528.  Example Code 
  26529.  
  26530.           This example prints out a variable number of strings to the file 
  26531.           vfprintf.out. 
  26532.  
  26533.                     #include <stdarg.h>
  26534.                     #include <stdio.h>
  26535.  
  26536.                     #define FILENAME "vfprintf.o"
  26537.  
  26538.                     void vout(FILE *stream, char *fmt,...);
  26539.  
  26540.                     char fmt1[] = "%s  %s  %s  %s\n";
  26541.  
  26542.                     int main(void)
  26543.                     {
  26544.                        FILE *stream;
  26545.  
  26546.                        stream = fopen(FILENAME, "w");
  26547.                        vout(stream, fmt1, "Sat", "Sun", "Mon", "Tue");
  26548.                        fclose(stream);
  26549.                        return 0;
  26550.  
  26551.                        /****************************************************************************
  26552.                           After running the program, the output file should contain:
  26553.  
  26554.                           Sat  Sun  Mon  Tue
  26555.                        ****************************************************************************/
  26556.                     }
  26557.  
  26558.                     void vout(FILE *stream, char *fmt,...)
  26559.                     {
  26560.                        va_list arg_ptr;
  26561.  
  26562.                        va_start(arg_ptr, fmt);
  26563.                        vfprintf(stream, fmt, arg_ptr);
  26564.                        va_end(arg_ptr);
  26565.                     }
  26566.  
  26567.  Related Information 
  26568.  
  26569.               fprintf 
  26570.               printf 
  26571.               va_arg - va_end - va_start 
  26572.               vprintf 
  26573.               vsprintf 
  26574.               Infinity and NaN Support 
  26575.  
  26576.  
  26577. ΓòÉΓòÉΓòÉ 3.267. vprintf - Print Argument Data ΓòÉΓòÉΓòÉ
  26578.  
  26579. vprintf - Print Argument Data 
  26580.  
  26581.  Syntax 
  26582.  
  26583.                     #include <stdarg.h>
  26584.                     #include <stdio.h>
  26585.                     int vprintf(const char *format, va_list arg_ptr);
  26586.  
  26587.  Description 
  26588.  
  26589.           vprintf formats and prints a series of characters and values to 
  26590.           stdout. vprintf works just like printf, except that arg_ptr points to 
  26591.           a list of arguments whose number can vary from call to call in the 
  26592.           program. These arguments should be initialized by va_start for each 
  26593.           call. In contrast, printf can have a list of arguments, but the 
  26594.           number of arguments in that list is fixed when you compile the 
  26595.           program. 
  26596.  
  26597.           vprintf converts each entry in the argument list according to the 
  26598.           corresponding format specifier in format. The format has the same 
  26599.           form and function as the format string for printf. For a description 
  26600.           of the format string, see printf. 
  26601.  
  26602.           In extended mode, vprintf also converts floating-point values of NaN 
  26603.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  26604.           "infinity". The case and sign of the string is determined by the 
  26605.           format specifiers.  See Infinity and NaN Support for more information 
  26606.           on infinity and NaN values. 
  26607.  
  26608.  Returns 
  26609.  
  26610.           If successful, vprintf returns the number of bytes written to stdout. 
  26611.           If an error occurs, vprintf returns a negative value. 
  26612.  
  26613.  Example Code 
  26614.  
  26615.           This example prints out a variable number of strings to stdout. 
  26616.  
  26617.                     #include <stdarg.h>
  26618.                     #include <stdio.h>
  26619.  
  26620.                     void vout(char *fmt, ...);
  26621.  
  26622.                     int main(void)
  26623.                     {
  26624.                        char fmt1[] = "%s  %s  %s\n";
  26625.                        vout(fmt1, "Sat", "Sun", "Mon");
  26626.                        return 0;
  26627.  
  26628.                        /****************************************************************************
  26629.                           The output should be:
  26630.  
  26631.                           Sat  Sun  Mon
  26632.                        ****************************************************************************/
  26633.                     }
  26634.  
  26635.                     void vout(char *fmt, ...)
  26636.                     {
  26637.                        va_list arg_ptr;
  26638.  
  26639.                        va_start(arg_ptr, fmt);
  26640.                        vprintf(fmt, arg_ptr);
  26641.                        va_end(arg_ptr);
  26642.                     }
  26643.  
  26644.  Related Information 
  26645.  
  26646.               printf 
  26647.               va_arg - va_end - va_start 
  26648.               vfprintf 
  26649.               vsprintf 
  26650.  
  26651.  
  26652. ΓòÉΓòÉΓòÉ 3.268. vsprintf - Print Argument Data to Buffer ΓòÉΓòÉΓòÉ
  26653.  
  26654. vsprintf - Print Argument Data to Buffer 
  26655.  
  26656.  Syntax 
  26657.  
  26658.                     #include <stdarg.h>
  26659.                     #include <stdio.h>
  26660.                     int vsprintf(char *target-string, const char *format, va_list arg_ptr);
  26661.  
  26662.  Description 
  26663.  
  26664.           vsprintf formats and stores a series of characters and values in the 
  26665.           buffer target-string. vsprintf works just like sprintf, except that 
  26666.           arg_ptr points to a list of arguments whose number can vary from call 
  26667.           to call in the program. These arguments should be initialized by 
  26668.           va_start for each call. In contrast, sprintf can have a list of 
  26669.           arguments, but the number of arguments in that list is fixed when you 
  26670.           compile the program. 
  26671.  
  26672.           vsprintf converts each entry in the argument list according to the 
  26673.           corresponding format specifier in format. The format has the same 
  26674.           form and function as the format string for printf. For a description 
  26675.           of the format string, see printf. 
  26676.  
  26677.           In extended mode, vsprintf also converts floating-point values of NaN 
  26678.           and infinity to the strings "NAN" or "nan" and "INFINITY" or 
  26679.           "infinity". The case and sign of the string is determined by the 
  26680.           format specifiers.  See Infinity and NaN Support for more information 
  26681.           on infinity and NaN values. 
  26682.  
  26683.  Returns 
  26684.  
  26685.           If successful, vsprintf returns the number of bytes written to 
  26686.           target-string. If an error occurs, vsprintf returns a negative value. 
  26687.  
  26688.  Example Code 
  26689.  
  26690.           This example assigns a variable number of strings to string and 
  26691.           prints the resultant string. 
  26692.  
  26693.                     #include <stdarg.h>
  26694.                     #include <stdio.h>
  26695.  
  26696.                     void vout(char *string, char *fmt,...);
  26697.  
  26698.                     char fmt1[] = "%s  %s  %s\n";
  26699.  
  26700.                     int main(void)
  26701.                     {
  26702.                        char string[100];
  26703.  
  26704.                        vout(string, fmt1, "Sat", "Sun", "Mon");
  26705.                        printf("The string is: %s", string);
  26706.                        return 0;
  26707.  
  26708.                        /****************************************************************************
  26709.                           The output should be:
  26710.  
  26711.                           The string is: Sat  Sun  Mon
  26712.                        ****************************************************************************/
  26713.                     }
  26714.  
  26715.                     void vout(char *string, char *fmt,...)
  26716.                     {
  26717.                        va_list arg_ptr;
  26718.  
  26719.                        va_start(arg_ptr, fmt);
  26720.                        vsprintf(string, fmt, arg_ptr);
  26721.                        va_end(arg_ptr);
  26722.                     }
  26723.  
  26724.  Related Information 
  26725.  
  26726.               printf 
  26727.               sprintf 
  26728.               va_arg - va_end - va_start 
  26729.               vfprintf 
  26730.               vprintf 
  26731.               Infinity and NaN Support 
  26732.  
  26733.  
  26734. ΓòÉΓòÉΓòÉ 3.269. wait - Wait for Child Process ΓòÉΓòÉΓòÉ
  26735.  
  26736. wait - Wait for Child Process 
  26737.  
  26738.  Syntax 
  26739.  
  26740.                     #include <process.h>
  26741.                     int wait (int *stat_loc);
  26742.  
  26743.  Description 
  26744.  
  26745.           wait delays a parent process until one of the immediate child 
  26746.           processes stops.  If all the child processes stop before wait is 
  26747.           called, control returns immediately to the parent function. 
  26748.  
  26749.           If stat_loc is NULL, wait does not use it. If it is not NULL, wait 
  26750.           places information about the return status and the return code ot the 
  26751.           child process that ended in the location to which stat_loc points. 
  26752.  
  26753.           If the child process ended normally, with a call to the OS/2 DosExit 
  26754.           function, the lowest-order byte of stat_loc is 0, and the next 
  26755.           higher-order byte contains the lowest-order byte of the argument 
  26756.           passed to DosExit by the child process. The value of this byte 
  26757.           depends on how the child process caused the system to call DosExit. 
  26758.  
  26759.           If the child process called exit, _exit, or return from main, the 
  26760.           byte contains the lowest-order byte of the argument the child process 
  26761.           passed to exit, _exit, or return.  The value of the byte is undefined 
  26762.           if the child process caused a DosExit call simply by reaching the end 
  26763.           of main. 
  26764.  
  26765.           If the child process ended abnormally, the lowest-order byte of 
  26766.           stat_loc contains the return status code from the OS/2 DosWaitChild 
  26767.           function, and the next higher-order byte is 0. See the Control 
  26768.           Program Guide and Reference for details about DosWaitChild return 
  26769.           status codes. 
  26770.  
  26771.  Returns 
  26772.  
  26773.           If wait returns after a normal end of a child process, it returns the 
  26774.           process identifier of the child process to the parent process. A 
  26775.           return value of -1 indicates an error, and errno is set to one of the 
  26776.           following values:  compact break=fit. 
  26777.  
  26778.           Value          Meaning 
  26779.  
  26780.           ECHILD         There were no child processes or they all ended before 
  26781.                          the call to wait. This value indicates that no child 
  26782.                          processes exist for the particular process. 
  26783.  
  26784.           EINTR          A child process ended unexpectedly. 
  26785.  
  26786.  Example Code 
  26787.  
  26788.           This example creates a new process called CHILD.EXE, specifying 
  26789.           P_NOWAIT when the child process is called. The parent process calls 
  26790.           wait and waits for the child process to stop running. The parent 
  26791.           process then displays the return information of the child process in 
  26792.           hexadecimal. 
  26793.  
  26794.                     #include <stdio.h>
  26795.                     #include <process.h>
  26796.  
  26797.                     int stat_child;
  26798.  
  26799.                     int main(void)
  26800.                     {
  26801.                        int pid;
  26802.  
  26803.                        _spawnl(P_NOWAIT, "child2.exe", "child2.exe", NULL);
  26804.                        if (-1 == (pid = wait(&stat_child)))
  26805.                           perror("error in _spawnl"); /* display error status message             */
  26806.                        else
  26807.                           printf("child process %d just ran.\n", pid);
  26808.  
  26809.                        printf("return information was 0x%X\n", stat_child);
  26810.                        return 0;
  26811.  
  26812.                        /****************************************************************************
  26813.                           If the source for child2.exe is:
  26814.  
  26815.                           #include <stdio.h>
  26816.                           int main(void)
  26817.                           {
  26818.                               puts("child2.exe is an executable file");
  26819.                               return 0;
  26820.                           }
  26821.  
  26822.                           Then the output should be similar to:
  26823.  
  26824.                           child2.exe is an executable file
  26825.                           child process 2423 just ran.
  26826.                           return information was 0x0
  26827.                        ****************************************************************************/
  26828.                     }
  26829.  
  26830.  Related Information 
  26831.  
  26832.               _cwait 
  26833.               execl - _execvpe 
  26834.               exit 
  26835.               _exit 
  26836.               _spawnl - _spawnvpe 
  26837.  
  26838.  
  26839. ΓòÉΓòÉΓòÉ 3.270. wcscat - Concatenate Wide-Character Strings ΓòÉΓòÉΓòÉ
  26840.  
  26841. wcscat - Concatenate Wide-Character Strings 
  26842.  
  26843.  Syntax 
  26844.  
  26845.                     #include <wchar.h>
  26846.                     wchar_t *wcscat(wchar_t *string1, const wchar_t *string2);
  26847.  
  26848.  Description 
  26849.  
  26850.           wcscat appends a copy of the string pointed to by string2 to the end 
  26851.           of the string pointed to by string1. 
  26852.  
  26853.           wcscat operates on null-terminated wchar_t strings. The string 
  26854.           arguments to this function should contain a wchar_t null character 
  26855.           marking the end of the string. Boundary checking is not performed. 
  26856.  
  26857.  Returns 
  26858.  
  26859.           wcscat returns a pointer to the concatenated string1. 
  26860.  
  26861.  Example Code 
  26862.  
  26863.           This example creates the wide character string "computer program" 
  26864.           using wcscat. 
  26865.  
  26866.                     #include <stdio.h>
  26867.                     #include <wchar.h>
  26868.  
  26869.                     #define  SIZE          40
  26870.  
  26871.                     int main(void)
  26872.                     {
  26873.                        wchar_t buffer1[SIZE] = L"computer";
  26874.                        wchar_t *string = L" program";
  26875.                        wchar_t *ptr;
  26876.  
  26877.                        ptr = wcscat(buffer1, string);
  26878.                        printf("buffer1 = %ls\n", buffer1);
  26879.                        return 0;
  26880.  
  26881.                        /****************************************************************************
  26882.                           The output should be:
  26883.  
  26884.                           buffer1 = computer program
  26885.                        ****************************************************************************/
  26886.                     }
  26887.  
  26888.  Related Information 
  26889.  
  26890.               strcat 
  26891.               strncat 
  26892.               wcsncat 
  26893.  
  26894.  
  26895. ΓòÉΓòÉΓòÉ 3.271. wcschr - Search for Wide Character ΓòÉΓòÉΓòÉ
  26896.  
  26897. wcschr - Search for Wide Character 
  26898.  
  26899.  Syntax 
  26900.  
  26901.                     #include <wchar.h>
  26902.                     wchar_t *wcschr(const wchar_t *string, wchar_t character);
  26903.  
  26904.  Description 
  26905.  
  26906.           wcschr searches the wide-character string for the occurrence of the 
  26907.           wide character. The wide character can be a wchar_t null character 
  26908.           (\0); the wchar_t null character at the end of string is included in 
  26909.           the search. 
  26910.  
  26911.           wcschr operates on null-terminated wchar_t strings. The string 
  26912.           argument to this function should contain a wchar_t null character 
  26913.           marking the end of the string. 
  26914.  
  26915.  Returns 
  26916.  
  26917.           wcschr returns a pointer to the first occurrence of character in 
  26918.           string. If the character is not found, a NULL pointer is returned. 
  26919.  
  26920.  Example Code 
  26921.  
  26922.           This example finds the first occurrence of the character p in the 
  26923.           wide-character string "computer program". 
  26924.  
  26925.                     #include <stdio.h>
  26926.                     #include <wchar.h>
  26927.  
  26928.                     #define  SIZE          40
  26929.  
  26930.                     int main(void)
  26931.                     {
  26932.                        wchar_t buffer1[SIZE] = L"computer program";
  26933.                        wchar_t *ptr;
  26934.                        wchar_t ch = L'p';
  26935.  
  26936.                        ptr = wcschr(buffer1, ch);
  26937.                        printf("The first occurrence of %lc in '%ls' is '%ls'\n", ch, buffer1, ptr);
  26938.                        return 0;
  26939.  
  26940.                        /****************************************************************************
  26941.                           The output should be:
  26942.  
  26943.                           The first occurrence of p in 'computer program' is 'puter program'
  26944.                        ****************************************************************************/
  26945.                     }
  26946.  
  26947.  Related Information 
  26948.  
  26949.               strchr 
  26950.               strcspn 
  26951.               strpbrk 
  26952.               strrchr 
  26953.               strspn 
  26954.               wcscspn 
  26955.               wcspbrk 
  26956.               wcsrchr 
  26957.               wcsspn 
  26958.               wcswcs 
  26959.  
  26960.  
  26961. ΓòÉΓòÉΓòÉ 3.272. wcscmp - Compare Wide-Character Strings ΓòÉΓòÉΓòÉ
  26962.  
  26963. wcscmp - Compare Wide-Character Strings 
  26964.  
  26965.  Syntax 
  26966.  
  26967.                     #include <wchar.h>
  26968.                     int wcscmp(const wchar_t *string1, const wchar_t *string2);
  26969.  
  26970.  Description 
  26971.  
  26972.           wcscmp compares two wide-character strings. 
  26973.  
  26974.           wcscmp operates on null-terminated wchar_t strings; string arguments 
  26975.           to this function should contain a wchar_t null character marking the 
  26976.           end of the string. Boundary checking is not performed when a string 
  26977.           is added to or copied. 
  26978.  
  26979.  Returns 
  26980.  
  26981.           wcscmp returns a value indicating the relationship between the two 
  26982.           strings, as follows:  compact break=fit. 
  26983.  
  26984.           Value             Meaning 
  26985.  
  26986.           Less than 0       string1 less than string2 
  26987.  
  26988.           0                 string1 identical to string2 
  26989.  
  26990.           Greater than 0    string1 greater than string2. 
  26991.  
  26992.  Example Code 
  26993.  
  26994.           This example compares the wide-character string string1 to string2 
  26995.           using wcscmp. 
  26996.  
  26997.                     #include <stdio.h>
  26998.                     #include <wchar.h>
  26999.  
  27000.                     int main(void)
  27001.                     {
  27002.                        int result;
  27003.                        wchar_t string1[] = L"abcdef";
  27004.                        wchar_t string2[] = L"abcdefg";
  27005.  
  27006.                        result = wcscmp(string1, string2);
  27007.                        if (0 == result)
  27008.                           printf("\"%ls\" is identical to \"%ls\"\n", string1, string2);
  27009.                        else
  27010.                           if (result < 0)
  27011.                              printf("\"%ls\" is less than \"%ls\"\n", string1, string2);
  27012.                           else
  27013.                              printf("\"%ls\" is greater than \"%ls\"\n", string1, string2);
  27014.                        return 0;
  27015.  
  27016.                        /****************************************************************************
  27017.                           The output should be:
  27018.  
  27019.                           "abcdef" is less than "abcdefg"
  27020.                        ****************************************************************************/
  27021.                     }
  27022.  
  27023.  Related Information 
  27024.  
  27025.               strcmp 
  27026.               strcmpi 
  27027.               stricmp 
  27028.               strnicmp 
  27029.               wcsncmp 
  27030.  
  27031.  
  27032. ΓòÉΓòÉΓòÉ 3.273. wcscoll - Compare Wide-Character Strings ΓòÉΓòÉΓòÉ
  27033.  
  27034. wcscoll - Compare Wide-Character Strings 
  27035.  
  27036.  Syntax 
  27037.  
  27038.                     #include <wchar.h>
  27039.                     int wcscoll(const wchar_t *wcstr1, const wchar_t *wcstr2);
  27040.  
  27041.  Description 
  27042.  
  27043.           wcscoll compares the wide-character string pointed to by wcstr1 to 
  27044.           the wide-character string pointed to by wcstr2, both interpreted 
  27045.           according to the information in the LC_COLLATE category of the 
  27046.           current locale. 
  27047.  
  27048.           wcscoll differs from the wcscmp function. wcscoll performs a 
  27049.           comparison between two wide-character strings based on language 
  27050.           collation rules as controlled by the LC_COLLATE category. In 
  27051.           contrast, wcscmp performs a wide-character code to wide-character 
  27052.           code comparison. If a string will be collated many times, as when 
  27053.           inserting an entry into a sorted list, wcsxfrm followed by wcscmp can 
  27054.           be more efficient. 
  27055.  
  27056.  Returns 
  27057.  
  27058.           wcscoll returns an integer value indicating the relationship between 
  27059.           the strings, as listed below:  compact break=fit. 
  27060.  
  27061.           Value             Meaning 
  27062.  
  27063.           Less than 0       wcstr1 less than wcstr2 
  27064.  
  27065.           0                 wcstr1 equivalent to wcstr2 
  27066.  
  27067.           Greater than 0    wcstr1 greater than wcstr2 
  27068.  
  27069.           If wcs1 or wcs2 contain characters outside the domain of the 
  27070.           collating sequence, wcscoll sets errno to EILSEQ. If an error occurs, 
  27071.           wcscoll sets errno to a nonzero value. There is no error return 
  27072.           value. 
  27073.  
  27074.  Example Code 
  27075.  
  27076.           This example uses wcscoll to compare two wide-character strings. 
  27077.  
  27078.                     #include <wchar.h>
  27079.                     #include <locale.h>
  27080.                     #include <stdio.h>
  27081.                     #include <stdlib.h>
  27082.  
  27083.                     int main(void)
  27084.                     {
  27085.                        wchar_t *wcs1 = L"A wide string";
  27086.                        wchar_t *wcs2 = L"a wide string";
  27087.                        int     result;
  27088.  
  27089.                        if (NULL == setlocale(LC_ALL, "Ja_JP")) {
  27090.                           printf("setlocale failed.\n");
  27091.                           exit(EXIT_FAILURE);
  27092.                        }
  27093.                        result = wcscoll(wcs1, wcs2);
  27094.                        if (0 == result)
  27095.                           printf("\"%ls\" is identical to \"%ls\"\n", wcs1, wcs2);
  27096.                        else if (0 > result)
  27097.                           printf("\"%ls\" is less than \"%ls\"\n", wcs1, wcs2);
  27098.                        else
  27099.                           printf("\"%ls\" is greater than \"%ls\"\n", wcs1, wcs2);
  27100.                        return 0;
  27101.  
  27102.                        /****************************************************************************
  27103.                           The output should be similar to :
  27104.  
  27105.                           "A wide string" is identical to "a wide string"
  27106.                        ****************************************************************************/
  27107.                     }
  27108.  
  27109.  Related Information 
  27110.  
  27111.               strcoll 
  27112.               setlocale 
  27113.               wcscmp 
  27114.               wcsxfrm 
  27115.  
  27116.  
  27117. ΓòÉΓòÉΓòÉ 3.274. wcscpy - Copy Wide-Character Strings ΓòÉΓòÉΓòÉ
  27118.  
  27119. wcscpy - Copy Wide-Character Strings 
  27120.  
  27121.  Syntax 
  27122.  
  27123.                     #include <wchar.h>
  27124.                     wchar_t *wcscpy(wchar_t *string1, const wchar_t *string2);
  27125.  
  27126.  Description 
  27127.  
  27128.           wcscpy copies the contents of string2 (including the ending wchar_t 
  27129.           null character) into string1. 
  27130.  
  27131.           wcscpy operates on null-terminated wchar_t strings; string arguments 
  27132.           to this function should contain a wchar_t null character marking the 
  27133.           end of the string. Boundary checking is not performed. 
  27134.  
  27135.  Returns 
  27136.  
  27137.           wcscpy returns a pointer to string1. 
  27138.  
  27139.  Example Code 
  27140.  
  27141.           This example copies the contents of source to destination. 
  27142.  
  27143.                     #include <stdio.h>
  27144.                     #include <wchar.h>
  27145.  
  27146.                     #define  SIZE          40
  27147.  
  27148.                     int main(void)
  27149.                     {
  27150.                        wchar_t source[SIZE] = L"This is the source string";
  27151.                        wchar_t destination[SIZE] = L"And this is the destination string";
  27152.                        wchar_t *return_string;
  27153.  
  27154.                        printf("destination is originally = \"%ls\"\n", destination);
  27155.                        return_string = wcscpy(destination, source);
  27156.                        printf("After wcscpy, destination becomes \"%ls\"\n", return_string);
  27157.                        return 0;
  27158.  
  27159.                        /****************************************************************************
  27160.                           The output should be:
  27161.  
  27162.                           destination is originally = "And this is the destination string"
  27163.                           After wcscpy, destination becomes "This is the source string"
  27164.                        ****************************************************************************/
  27165.                     }
  27166.  
  27167.  Related Information 
  27168.  
  27169.               strcpy 
  27170.               strdup 
  27171.               strncpy 
  27172.               wcsncpy 
  27173.               wcsxfrm 
  27174.  
  27175.  
  27176. ΓòÉΓòÉΓòÉ 3.275. wcscspn - Find Offset of First Wide-Character Match ΓòÉΓòÉΓòÉ
  27177.  
  27178. wcscspn - Find Offset of First Wide-Character Match 
  27179.  
  27180.  Syntax 
  27181.  
  27182.                     #include <wchar.h>
  27183.                     size_t wcscspn(const wchar_t *string1, const wchar_t *string2);
  27184.  
  27185.  Description 
  27186.  
  27187.           wcscspn determines the number of wchar_t characters in the initial 
  27188.           segment of the string pointed to by string1 that do not appear in the 
  27189.           string pointed to by string2. 
  27190.  
  27191.           wcscspn operates on null-terminated wchar_t strings; string arguments 
  27192.           to this function should contain a wchar_t null character marking the 
  27193.           end of the string. 
  27194.  
  27195.  Returns 
  27196.  
  27197.           wcscspn returns the number of wchar_t characters in the segment. 
  27198.  
  27199.  Example Code 
  27200.  
  27201.           This example uses wcscspn to find the first occurrence of any of the 
  27202.           characters a, x, l, or e in string. 
  27203.  
  27204.                     #include <stdio.h>
  27205.                     #include <wchar.h>
  27206.  
  27207.                     #define  SIZE          40
  27208.  
  27209.                     int main(void)
  27210.                     {
  27211.                        wchar_t string[SIZE] = L"This is the source string";
  27212.                        wchar_t *substring = L"axle";
  27213.  
  27214.                        printf("The first %i characters in the string \"%ls\" are not in the "
  27215.                           "string \"%ls\" \n", wcscspn(string, substring), string, substring);
  27216.                        return 0;
  27217.  
  27218.                        /****************************************************************************
  27219.                           The output should be:
  27220.  
  27221.                           The first 10 characters in the string "This is the source string" are
  27222.                           not in the string "axle"?
  27223.                        ****************************************************************************/
  27224.                     }
  27225.  
  27226.  Related Information 
  27227.  
  27228.               strcspn 
  27229.               strspn 
  27230.               wcsspn 
  27231.               wcswcs 
  27232.  
  27233.  
  27234. ΓòÉΓòÉΓòÉ 3.276. wcsftime - Convert to Formatted Date and Time ΓòÉΓòÉΓòÉ
  27235.  
  27236. wcsftime - Convert to Formatted Date and Time 
  27237.  
  27238.  Syntax 
  27239.  
  27240.                     #include <wchar.h>
  27241.                     size_t wcsftime(wchar_t *wdest, size_t maxsize,
  27242.                                     const wchar_t *format, const struct tm *timeptr);
  27243.  
  27244.  Description 
  27245.  
  27246.           wcsftime converts the time and date specification in the timeptr 
  27247.           structure into a wide-character string. It then stores the 
  27248.           null-terminated string in the array pointed to by wdest according to 
  27249.           the format string pointed to by format. maxsize specifies the maximum 
  27250.           number of wide characters that can be copied into the array. 
  27251.  
  27252.           wcsftime works just like strftime, except that it uses wide 
  27253.           characters. 
  27254.  
  27255.           The format string is a wide character string containing: 
  27256.  
  27257.               Conversion specification characters. 
  27258.               Ordinary wide characters, which are copied into the array 
  27259.                unchanged. 
  27260.  
  27261.           The characters that are converted are determined by the LC_TIME 
  27262.           category of the current locale and by the values in the time 
  27263.           structure pointed to by timeptr. The time structure pointed to by 
  27264.           timeptr is usually obtained by calling the gmtime or localtime 
  27265.           function. 
  27266.  
  27267.           For details on the conversion specifiers you can use in the format 
  27268.           string, see strftime. 
  27269.  
  27270.  Returns 
  27271.  
  27272.           If the total number of wide characters in the resulting string, 
  27273.           including the terminating null wide character, does not exceed 
  27274.           maxsize, wcsftime returns the number of wide characters placed into 
  27275.           the array pointed to by wdest, not including the terminating null 
  27276.           wide character; otherwise, wcsftime returns 0 and the contents of the 
  27277.           array are indeterminate. 
  27278.  
  27279.  Example Code 
  27280.  
  27281.           This example obtains the date and time using localtime, formats the 
  27282.           information with wcsftime, and prints the date and time. 
  27283.  
  27284.                     #include <stdio.h>
  27285.                     #include <time.h>
  27286.                     #include <wchar.h>
  27287.  
  27288.                     int main(void)
  27289.                     {
  27290.                        struct tm *timeptr;
  27291.                        wchar_t   dest[100];
  27292.                        time_t    temp;
  27293.                        size_t    rc;
  27294.  
  27295.                        temp = time(NULL);
  27296.                        timeptr = localtime(&temp);
  27297.                        rc = wcsftime(dest, sizeof(dest)-1,L" Today is %A,"
  27298.                                     L" %b %d.\n Time: %I:%M %p", timeptr);
  27299.                        printf("%d characters placed in string to make:\n\n%ls\n", rc, dest);
  27300.                        return 0;
  27301.  
  27302.                        /****************************************************************************
  27303.                           The output should be similar to :
  27304.  
  27305.                           43 characters placed in string to make:
  27306.  
  27307.                            Today is Thursday, Nov 10.
  27308.                            Time: 04:56 PM
  27309.                        ****************************************************************************/
  27310.                     }
  27311.  
  27312.  Related Information 
  27313.  
  27314.               gmtime 
  27315.               localtime 
  27316.               strftime 
  27317.               strptime 
  27318.  
  27319.  
  27320. ΓòÉΓòÉΓòÉ 3.277. wcslen - Calculate Length of Wide-Character String ΓòÉΓòÉΓòÉ
  27321.  
  27322. wcslen - Calculate Length of Wide-Character String 
  27323.  
  27324.  Syntax 
  27325.  
  27326.                     #include <wchar.h>
  27327.                     size_t wcslen(const wchar_t *string);
  27328.  
  27329.  Description 
  27330.  
  27331.           wcslen computes the number of wide characters in the string pointed 
  27332.           to by string. 
  27333.  
  27334.  Returns 
  27335.  
  27336.           wcslen returns the number of wide characters in string, excluding the 
  27337.           terminating wchar_t null character. 
  27338.  
  27339.  Example Code 
  27340.  
  27341.           This example computes the length of the wide-character string string. 
  27342.  
  27343.                     #include <stdio.h>
  27344.                     #include <wchar.h>
  27345.  
  27346.                     int main(void)
  27347.                     {
  27348.                        wchar_t *string = L"abcdef";
  27349.  
  27350.                        printf("Length of \"%ls\" is %i\n", string, wcslen(string));
  27351.                        return 0;
  27352.  
  27353.                        /****************************************************************************
  27354.                           The output should be:
  27355.  
  27356.                           Length of "abcdef" is 6
  27357.                        ****************************************************************************/
  27358.                     }
  27359.  
  27360.  Related Information 
  27361.  
  27362.               mblen 
  27363.               strlen 
  27364.  
  27365.  
  27366. ΓòÉΓòÉΓòÉ 3.278. wcsncat - Concatenate Wide-Character Strings ΓòÉΓòÉΓòÉ
  27367.  
  27368. wcsncat - Concatenate Wide-Character Strings 
  27369.  
  27370.  Syntax 
  27371.  
  27372.                     #include <wchar.h>
  27373.                     wchar_t *wcsncat(wchar_t *string1, const wchar_t *string2, size_t count);
  27374.  
  27375.  Description 
  27376.  
  27377.           wcsncat appends up to count wide characters from string2 to the end 
  27378.           of string1, and appends a wchar_t null character to the result. 
  27379.  
  27380.           wcsncat operates on null-terminated wide-character strings; string 
  27381.           arguments to this function should contain a wchar_t null character 
  27382.           marking the end of the string. 
  27383.  
  27384.  Returns 
  27385.  
  27386.           wcsncat returns string1. 
  27387.  
  27388.  Example Code 
  27389.  
  27390.           This example demonstrates the difference between wcscat and wcsncat. 
  27391.           wcscat appends the entire second string to the first; wcsncat appends 
  27392.           only the specified number of characters in the second string to the 
  27393.           first. 
  27394.  
  27395.                     #include <stdio.h>
  27396.                     #include <wchar.h>
  27397.  
  27398.                     #define  SIZE          40
  27399.  
  27400.                     int main(void)
  27401.                     {
  27402.                        wchar_t buffer1[SIZE] = L"computer";
  27403.                        wchar_t *ptr;
  27404.  
  27405.                        /* Call wcscat with buffer1 and " program"                                 */
  27406.  
  27407.                        ptr = wcscat(buffer1, L" program");
  27408.                        printf("wcscat : buffer1 = \"%ls\"\n", buffer1);
  27409.  
  27410.                        /* Reset buffer1 to contain just the string "computer" again               */
  27411.  
  27412.                        memset(buffer1, L'\0', sizeof(buffer1));
  27413.                        ptr = wcscpy(buffer1, L"computer");
  27414.  
  27415.                        /* Call wcsncat with buffer1 and " program"                                */
  27416.  
  27417.                        ptr = wcsncat(buffer1, L" program", 3);
  27418.                        printf("wcsncat: buffer1 = \"%ls\"\n", buffer1);
  27419.                        return 0;
  27420.  
  27421.                        /****************************************************************************
  27422.                           The output should be:
  27423.  
  27424.                           wcscat : buffer1 = "computer program"
  27425.                           wcsncat: buffer1 = "computer pr"
  27426.                        ****************************************************************************/
  27427.                     }
  27428.  
  27429.  Related Information 
  27430.  
  27431.               strncat 
  27432.               strcat 
  27433.               wcscat 
  27434.               wcsncmp 
  27435.               wcsncpy 
  27436.  
  27437.  
  27438. ΓòÉΓòÉΓòÉ 3.279. wcsncmp - Compare Wide-Character Strings ΓòÉΓòÉΓòÉ
  27439.  
  27440. wcsncmp - Compare Wide-Character Strings 
  27441.  
  27442.  Syntax 
  27443.  
  27444.                     #include <wchar.h>
  27445.                     int wcsncmp(const wchar_t *string1, const wchar_t *string2, size_t count);
  27446.  
  27447.  Description 
  27448.  
  27449.           wcsncmp compares up to count wide characters in string1 to string2. 
  27450.  
  27451.           wcsncmp operates on null-terminated wide-character strings; string 
  27452.           arguments to this function should contain a wchar_t null character 
  27453.           marking the end of the string. 
  27454.  
  27455.  Returns 
  27456.  
  27457.           wcsncmp returns a value indicating the relationship between the two 
  27458.           strings, as follows:  compact break=fit. 
  27459.  
  27460.           Value             Meaning 
  27461.  
  27462.           Less than 0       string1 less than string2 
  27463.  
  27464.           0                 string1 identical to string2 
  27465.  
  27466.           Greater than 0    string1 greater than string2. 
  27467.  
  27468.  Example Code 
  27469.  
  27470.           This example demonstrates the difference between wcscmp, which 
  27471.           compares the entire strings, and wcsncmp, which compares only a 
  27472.           specified number of wide characters in the strings. 
  27473.  
  27474.                     #include <stdio.h>
  27475.                     #include <wchar.h>
  27476.  
  27477.                     #define  SIZE          10
  27478.  
  27479.                     int main(void)
  27480.                     {
  27481.                        int result;
  27482.                        int index = 3;
  27483.                        wchar_t buffer1[SIZE] = L"abcdefg";
  27484.                        wchar_t buffer2[SIZE] = L"abcfg";
  27485.                        void print_result(int, wchar_t *, wchar_t *);
  27486.  
  27487.                        result = wcscmp(buffer1, buffer2);
  27488.                        printf("Comparison of each character\n");
  27489.                        printf("  wcscmp: ");
  27490.                        print_result(result, buffer1, buffer2);
  27491.                        result = wcsncmp(buffer1, buffer2, index);
  27492.                        printf("\nComparison of only the first %i characters\n", index);
  27493.                        printf("  wcsncmp: ");
  27494.                        print_result(result, buffer1, buffer2);
  27495.                        return 0;
  27496.  
  27497.                        /****************************************************************************
  27498.                           The output should be:
  27499.  
  27500.                           Comparison of each character
  27501.                             wcscmp: "abcdefg" is less than "abcfg"
  27502.  
  27503.                           Comparison of only the first 3 characters
  27504.                             wcsncmp: "abcdefg" is identical to "abcfg"
  27505.                        ****************************************************************************/
  27506.                     }
  27507.  
  27508.                     void print_result(int res,wchar_t *p_buffer1,wchar_t *p_buffer2)
  27509.                     {
  27510.                        if (0 == res)
  27511.                           printf("\"%ls\" is identical to \"%ls\"\n", p_buffer1, p_buffer2);
  27512.                        else
  27513.                           if (res < 0)
  27514.                              printf("\"%ls\" is less than \"%ls\"\n", p_buffer1, p_buffer2);
  27515.                           else
  27516.                              printf("\"%ls\" is greater than \"%ls\"\n", p_buffer1, p_buffer2);
  27517.                     }
  27518.  
  27519.  Related Information 
  27520.  
  27521.               strncmp 
  27522.               strcmp 
  27523.               strcoll 
  27524.               strcmpi 
  27525.               stricmp 
  27526.               strnicmp 
  27527.               wcscmp 
  27528.               wcsncat 
  27529.               wcsncpy 
  27530.  
  27531.  
  27532. ΓòÉΓòÉΓòÉ 3.280. wcsncpy - Copy Wide-Character Strings ΓòÉΓòÉΓòÉ
  27533.  
  27534. wcsncpy - Copy Wide-Character Strings 
  27535.  
  27536.  Syntax 
  27537.  
  27538.                     #include <wchar.h>
  27539.                     wchar_t *wcsncpy(wchar_t *string1, const wchar_t *string2, size_t count);
  27540.  
  27541.  Description 
  27542.  
  27543.           wcsncpy copies up to count wide characters from string2 to string1. 
  27544.           If string2 is shorter than count characters, string1 is padded out to 
  27545.           count characters with wchar_t null characters. 
  27546.  
  27547.           wcsncpy operates on null-terminated wide-character strings; string 
  27548.           arguments to this function should contain a wchar_t null character 
  27549.           marking the end of the string. 
  27550.  
  27551.  Returns 
  27552.  
  27553.           wcsncpy returns a pointer to string1. 
  27554.  
  27555.  Example Code 
  27556.  
  27557.           This example demonstrates the difference between wcscpy, which copies 
  27558.           the entire wide-character string, and wcsncpy, which copies a 
  27559.           specified number of wide characters from the string. 
  27560.  
  27561.                     #include <stdio.h>
  27562.                     #include <wchar.h>
  27563.  
  27564.                     #define  SIZE          40
  27565.  
  27566.                     int main(void)
  27567.                     {
  27568.                        wchar_t source[SIZE] = L"123456789";
  27569.                        wchar_t source1[SIZE] = L"123456789";
  27570.                        wchar_t destination[SIZE] = L"abcdefg";
  27571.                        wchar_t destination1[SIZE] = L"abcdefg";
  27572.                        wchar_t *return_string;
  27573.                        int index = 5;
  27574.  
  27575.                        /* This is how wcscpy works                                                */
  27576.  
  27577.                        printf("destination is originally = '%ls'\n", destination);
  27578.                        return_string = wcscpy(destination, source);
  27579.                        printf("After wcscpy, destination becomes '%ls'\n\n", return_string);
  27580.  
  27581.                        /* This is how wcsncpy works                                               */
  27582.  
  27583.                        printf("destination1 is originally = '%ls'\n", destination1);
  27584.                        return_string = wcsncpy(destination1, source1, index);
  27585.                        printf("After wcsncpy, destination1 becomes '%ls'\n", return_string);
  27586.                        return 0;
  27587.  
  27588.                        /****************************************************************************
  27589.                           The output should be:
  27590.  
  27591.                           destination is originally = 'abcdefg'
  27592.                           After wcscpy, destination becomes '123456789'
  27593.  
  27594.                           destination1 is originally = 'abcdefg'
  27595.                           After wcsncpy, destination1 becomes '12345fg'
  27596.                        ****************************************************************************/
  27597.                     }
  27598.  
  27599.  Related Information 
  27600.  
  27601.               strcpy 
  27602.               strncpy 
  27603.               wcscpy 
  27604.               wcsncat 
  27605.               wcsncmp 
  27606.  
  27607.  
  27608. ΓòÉΓòÉΓòÉ 3.281. wcspbrk - Locate Wide Characters in String ΓòÉΓòÉΓòÉ
  27609.  
  27610. wcspbrk - Locate Wide Characters in String 
  27611.  
  27612.  Syntax 
  27613.  
  27614.                     #include <wchar.h>
  27615.                     wchar_t *wcspbrk(const wchar_t *string1, const wchar_t *string2);
  27616.  
  27617.  Description 
  27618.  
  27619.           wcspbrk locates the first occurrence in the string pointed to by 
  27620.           string1 of any wide character from the string pointed to by string2. 
  27621.  
  27622.  Returns 
  27623.  
  27624.           wcspbrk returns a pointer to the character. If string1 and string2 
  27625.           have no wide characters in common, wcspbrk returns NULL. 
  27626.  
  27627.  Example Code 
  27628.  
  27629.           This example uses wcspbrk to find the first occurrence of either a or 
  27630.           b in the array string. 
  27631.  
  27632.                     #include <stdio.h>
  27633.                     #include <wchar.h>
  27634.  
  27635.                     int main(void)
  27636.                     {
  27637.                        wchar_t *result;
  27638.                        wchar_t *string = L"A Blue Danube";
  27639.                        wchar_t *chars = L"ab";
  27640.  
  27641.                        result = wcspbrk(string, chars);
  27642.                        printf("The first occurrence of any of the characters \"%ls\" in "
  27643.                           "\"%ls\" is \"%ls\"\n", chars, string, result);
  27644.                        return 0;
  27645.  
  27646.                        /****************************************************************************
  27647.                           The output should be similar to:
  27648.  
  27649.                           The first occurrence of any of the characters "ab" in "A Blue Danube"
  27650.                           is "anube"
  27651.                        ****************************************************************************/
  27652.                     }
  27653.  
  27654.  Related Information 
  27655.  
  27656.               strchr 
  27657.               strcspn 
  27658.               strpbrk 
  27659.               strrchr 
  27660.               strspn 
  27661.               wcschr 
  27662.               wcscmp 
  27663.               wcscspn 
  27664.               wcsncmp 
  27665.               wcsrchr 
  27666.               wcsspn 
  27667.               wcswcs 
  27668.  
  27669.  
  27670. ΓòÉΓòÉΓòÉ 3.282. wcsrchr - Locate Wide Character in String ΓòÉΓòÉΓòÉ
  27671.  
  27672. wcsrchr - Locate Wide Character in String 
  27673.  
  27674.  Syntax 
  27675.  
  27676.                     #include <wchar.h>
  27677.                     wchar_t *wcsrchr(const wchar_t *string, wint_t character);
  27678.  
  27679.  Description 
  27680.  
  27681.           wcsrchr locates the last occurrence of character in the string 
  27682.           pointed to by string. The terminating wchar_t null character is 
  27683.           considered to be part of the string. 
  27684.  
  27685.  Returns 
  27686.  
  27687.           wcsrchr returns a pointer to the character, or a NULL pointer if 
  27688.           character does not occur in the string. 
  27689.  
  27690.  Example Code 
  27691.  
  27692.           This example compares the use of wcschr and wcsrchr. It searches the 
  27693.           string for the first and last occurrence of p in the wide character 
  27694.           string. 
  27695.  
  27696.                     #include <stdio.h>
  27697.                     #include <wchar.h>
  27698.  
  27699.                     #define  SIZE          40
  27700.  
  27701.                     int main(void)
  27702.                     {
  27703.                        wchar_t buf[SIZE] = L"computer program";
  27704.                        wchar_t *ptr;
  27705.                        int ch = 'p';
  27706.  
  27707.                        /* This illustrates wcschr                                                 */
  27708.  
  27709.                        ptr = wcschr(buf, ch);
  27710.                        printf("The first occurrence of %c in '%ls' is '%ls'\n", ch, buf, ptr);
  27711.  
  27712.                        /* This illustrates wscrchr                                                */
  27713.  
  27714.                        ptr = wcsrchr(buf, ch);
  27715.                        printf("The last occurrence of %c in '%ls' is '%ls'\n", ch, buf, ptr);
  27716.                        return 0;
  27717.  
  27718.                        /****************************************************************************
  27719.                           The output should be:
  27720.  
  27721.                           The first occurrence of p in 'computer program' is 'puter program'
  27722.                           The last occurrence of p in 'computer program' is 'program'
  27723.                        ****************************************************************************/
  27724.                     }
  27725.  
  27726.  Related Information 
  27727.  
  27728.               strchr 
  27729.               strcspn 
  27730.               strpbrk 
  27731.               strrchr 
  27732.               strspn 
  27733.               wcschr 
  27734.               wcscspn 
  27735.               wcsspn 
  27736.               wcswcs 
  27737.               wcspbrk 
  27738.  
  27739.  
  27740. ΓòÉΓòÉΓòÉ 3.283. wcsspn - Search Wide-Character Strings ΓòÉΓòÉΓòÉ
  27741.  
  27742. wcsspn - Search Wide-Character Strings 
  27743.  
  27744.  Syntax 
  27745.  
  27746.                     #include <wchar.h>
  27747.                     size_t wcsspn(const wchar_t *string1, const wchar_t *string2);
  27748.  
  27749.  Description 
  27750.  
  27751.           wcsspn scans string1 for the wide characters contained in string2. It 
  27752.           stops when it encounters a character in string1 that is not in 
  27753.           string2. 
  27754.  
  27755.  Returns 
  27756.  
  27757.           wcsspn returns the number of wide characters from string1 that are 
  27758.           found in string2. 
  27759.  
  27760.  Example Code 
  27761.  
  27762.           This example finds the first occurrence in the array string of a wide 
  27763.           character that is not an a, b, or c.  Because the string in this 
  27764.           example is cabbage, wcsspn returns 5, the index of the segment of 
  27765.           cabbage before a character that is not an a, b, or c. 
  27766.  
  27767.                     #include <stdio.h>
  27768.                     #include <wchar.h>
  27769.  
  27770.                     int main(void)
  27771.                     {
  27772.                        wchar_t *string = L"cabbage";
  27773.                        wchar_t *source = L"abc";
  27774.                        int index;
  27775.  
  27776.                        index = wcsspn(string, L"abc");
  27777.                        printf("The first %d characters of \"%ls\" are found in \"%ls\"\n", index,
  27778.                           string, source);
  27779.                        return 0;
  27780.  
  27781.                        /****************************************************************************
  27782.                           The output should be:
  27783.  
  27784.                           The first 5 characters of "cabbage" are found in "abc"
  27785.                        ****************************************************************************/
  27786.                     }
  27787.  
  27788.  Related Information 
  27789.  
  27790.               strchr 
  27791.               strcspn 
  27792.               strpbrk 
  27793.               strrchr 
  27794.               strspn 
  27795.               wcschr 
  27796.               wcscspn 
  27797.               wcsrchr 
  27798.               wcsspn 
  27799.               wcswcs 
  27800.               wcspbrk 
  27801.  
  27802.  
  27803. ΓòÉΓòÉΓòÉ 3.284. wcsstr - Locate Wide-Character Substring ΓòÉΓòÉΓòÉ
  27804.  
  27805. wcsstr - Locate Wide-Character Substring 
  27806.  
  27807.  Syntax 
  27808.  
  27809.                     #include <wchar.h>
  27810.                     wchar_t *wcsstr(const wchar_t *wcs1, const wchar_t *wcs2);
  27811.  
  27812.  Description 
  27813.  
  27814.           wcsstr locates the first occurrence of wcs2 in wcs1. In the matching 
  27815.           process, wcsstr ignores the wchar_t null character that ends wcs2. 
  27816.  
  27817.           The behavior of wcsstr is affected by the LC_CTYPE category of the 
  27818.           current locale. 
  27819.  
  27820.  Returns 
  27821.  
  27822.           wcsstr returns a pointer to the beginning of the first occurrence of 
  27823.           wcs2 in wcs1. If wcs2 does not appear in wcs1, wcsstr returns NULL. 
  27824.           If wcs2 points to a wide-character string with zero length, wcsstr 
  27825.           returns wcs1. 
  27826.  
  27827.  Example Code 
  27828.  
  27829.           This example uses wcsstr to find the first occurrence of hay in the 
  27830.           wide-character string needle in a haystack. 
  27831.  
  27832.                     #include <stdio.h>
  27833.                     #include <wchar.h>
  27834.  
  27835.                     int main(void)
  27836.                     {
  27837.                        wchar_t *wcs1 = L"needle in a haystack";
  27838.                        wchar_t *wcs2 = L"hay";
  27839.  
  27840.                        printf("result: \"%ls\"\n", wcsstr(wcs1, wcs2));
  27841.                        return 0;
  27842.  
  27843.                        /****************************************************************************
  27844.                           The output should be similar to :
  27845.  
  27846.                           result: "haystack"
  27847.                        ****************************************************************************/
  27848.                     }
  27849.  
  27850.  Related Information 
  27851.  
  27852.               strstr 
  27853.               wcschr 
  27854.               wcsrchr 
  27855.               wcswcs 
  27856.  
  27857.  
  27858. ΓòÉΓòÉΓòÉ 3.285. wcstod - Convert Wide-Character String to Double ΓòÉΓòÉΓòÉ
  27859.  
  27860. wcstod - Convert Wide-Character String to Double 
  27861.  
  27862.  Syntax 
  27863.  
  27864.                     #include <wchar.h>
  27865.                     double wcstod(const wchar_t *nptr, wchar_t **endptr);
  27866.  
  27867.  Description 
  27868.  
  27869.           wcstod converts the wide-character string pointed to by nptr to a 
  27870.           double value. The nptr parameter points to a sequence of characters 
  27871.           that can be interpreted as a numerical value of type double. wcstod 
  27872.           stops reading the string at the first character that it cannot 
  27873.           recognize as part of a number. This character can be the wchar_t null 
  27874.           character at the end of the string. 
  27875.  
  27876.           wcstod expects nptr to point to a string with the following form: 
  27877.  
  27878.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  27879.                     Γöé                                        Γöé
  27880.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ>         Γöé
  27881.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇdigitsΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöñ           Γöé
  27882.                     Γöé            ΓööΓöÇΓö┤ΓöÇΓöÿ  Γöé     ΓööΓöÇ.ΓöÇΓöÿ  ΓööΓöÇdigitsΓöÇΓöÿ Γöé           Γöé
  27883.                     Γöé               ΓööΓöÇ.ΓöÇΓöÇdigitsΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ           Γöé
  27884.                     Γöé                                        Γöé
  27885.                     Γöé >ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                        Γöé
  27886.                     Γöé   ΓööΓöÇΓö¼ΓöÇeΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇdigitsΓöÇΓöÿ                          Γöé
  27887.                     Γöé    ΓööΓöÇEΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ                               Γöé
  27888.                     Γöé       ΓööΓöÇΓö┤ΓöÇΓöÿ                               Γöé
  27889.                     Γöé                                        Γöé
  27890.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  27891.  
  27892.           Note:  The character used for the decimal point (shown as . in the 
  27893.                  above diagram) depends on the LC_NUMERIC category of the 
  27894.                  current locale. 
  27895.  
  27896.           The white space character is determined by the LC_CTYPE category of 
  27897.           the current locale. 
  27898.  
  27899.  Returns 
  27900.  
  27901.           wcstod function returns the converted double value. If no conversion 
  27902.           could be performed, wcstod returns 0. If the correct value is outside 
  27903.           the range of representable values, wcstod returns +HUGE_VAL or 
  27904.           -HUGE_VAL (according to the sign of the value), and sets errno to 
  27905.           ERANGE. If the correct value would cause underflow, wcstod returns 0 
  27906.           and sets errno to ERANGE. 
  27907.  
  27908.           If the string nptr points to is empty or does not have the expected 
  27909.           form, no conversion is performed, and the value of nptr is stored in 
  27910.           the object pointed to by endptr, provided that endptr is not a null 
  27911.           pointer. 
  27912.  
  27913.  Example Code 
  27914.  
  27915.           This example uses wcstod to convert the string wcs to a 
  27916.           floating-point value. 
  27917.  
  27918.                     #include <stdio.h>
  27919.                     #include <wchar.h>
  27920.  
  27921.                     int main(void)
  27922.                     {
  27923.                        wchar_t *wcs = L"3.1415926This stopped it";
  27924.                        wchar_t *stopwcs;
  27925.  
  27926.                        printf("wcs = \"%ls\"\n", wcs);
  27927.                        printf("   wcstod = %f\n", wcstod(wcs, &stopwcs));
  27928.                        printf("   Stop scanning at \"%ls\"\n", stopwcs);
  27929.                        return 0;
  27930.  
  27931.                        /****************************************************************************
  27932.                           The output should be similar to :
  27933.  
  27934.                           wcs = "3.1415926This stopped it"
  27935.                              wcstod = 3.141593
  27936.                              Stop scanning at "This stopped it"
  27937.                        ****************************************************************************/
  27938.                     }
  27939.  
  27940.  Related Information 
  27941.  
  27942.               strtod 
  27943.               strtol 
  27944.               strtold 
  27945.               strtoul 
  27946.               wcstol 
  27947.               wcstoul 
  27948.  
  27949.  
  27950. ΓòÉΓòÉΓòÉ 3.286. wcstok - Tokenize Wide-Character String ΓòÉΓòÉΓòÉ
  27951.  
  27952. wcstok - Tokenize Wide-Character String 
  27953.  
  27954.  Syntax 
  27955.  
  27956.                     #include <wchar.h>
  27957.                     wchar_t *wcstok(wchar_t *wcs1, const wchar_t *wcs2, wchar_t **ptr);
  27958.  
  27959.  Description 
  27960.  
  27961.           wcstok reads wcs1 as a series of zero or more tokens and wcs2 as the 
  27962.           set of wide characters serving as delimiters for the tokens in wcs1. 
  27963.           A sequence of calls to wcstok locates the tokens inside wcs1. The 
  27964.           tokens can be separated by one or more of the delimiters from wcs2. 
  27965.           The third argument points to a wide-character pointer that you 
  27966.           provide, where wcstok stores information necessary for it to continue 
  27967.           scanning the same string. 
  27968.  
  27969.           When wcstok is first called for the wide-character string wcs1, it 
  27970.           searches for the first token in wcs1, skipping over leading 
  27971.           delimiters. wcstok returns a pointer to the first token. 
  27972.  
  27973.           To read the next token from wcs1, call wcstok with NULL as the first 
  27974.           parameter (wcs1). This NULL parameter causes wcstok to search for the 
  27975.           next token in the previous token string. Each delimiter is replaced 
  27976.           by a null character to terminate the token. 
  27977.  
  27978.           wcstok always stores enough information in the pointer ptr so that 
  27979.           subsequent calls, with NULL as the first parameter will start 
  27980.           searching right after the previously returned token. You can change 
  27981.           the set of delimiters (wcs2) from call to call. 
  27982.  
  27983.  Returns 
  27984.  
  27985.           wcstok function returns a pointer to the first wide character of the 
  27986.           token, or a null pointer if there is no token. In later calls with 
  27987.           the same token string, wcstok returns a pointer to the next token in 
  27988.           the string. When there are no more tokens, wcstok returns NULL. 
  27989.  
  27990.  Example Code 
  27991.  
  27992.           This example uses wcstok to locate the tokens in the wide-character 
  27993.           string str1. 
  27994.  
  27995.                     #include <stdio.h>
  27996.                     #include <wchar.h>
  27997.  
  27998.                     int main(void)
  27999.                     {
  28000.                        static wchar_t str1[] = L"?a??b,,,#c";
  28001.                        static wchar_t str2[] = L"\t \t";
  28002.                        wchar_t *t *ptr1, *ptr2;
  28003.  
  28004.                        t = wcstok(str1, L"?", &ptr1);             /* t points to the token  L"a"   */
  28005.                         printf("t = '%ls'\n", t);
  28006.                        t = wcstok(NULL, L",", &ptr1);             /* t points to the token L"?b"   */
  28007.                         printf("t = '%ls'\n", t);
  28008.                        t = wcstok(str2, L" \t,", &ptr2);          /* t is a null pointer
  28009.                         printf("t = '%ls'\n", t);
  28010.                        t = wcstok(NULL, L"#,", &ptr1);           /* t points to the token L"c"    */
  28011.                        printf("t = '%ls'\n", t);
  28012.                        t = wcstok(NULL, L"?", &ptr1);            /* t is a null pointer           */
  28013.                        printf("t = '%ls'\n", t);
  28014.                        return 0;
  28015.  
  28016.                        /****************************************************************************
  28017.                           The output should be similar to :
  28018.  
  28019.                               t = 'a'
  28020.                               t = '?b'
  28021.                               t = '(null)'
  28022.                               t = 'c'
  28023.                               t = '(null)'
  28024.                        ****************************************************************************/
  28025.                     }
  28026.  
  28027.  Related Information 
  28028.  
  28029.               strtok 
  28030.  
  28031.  
  28032. ΓòÉΓòÉΓòÉ 3.287. wcstol - Convert Wide-Character to Long Integer ΓòÉΓòÉΓòÉ
  28033.  
  28034. wcstol - Convert Wide-Character to Long Integer 
  28035.  
  28036.  Syntax 
  28037.  
  28038.                     #include <wchar.h>
  28039.                     long int wcstol(const wchar_t *nptr, wchar_t **endptr, int base);
  28040.  
  28041.  Description 
  28042.  
  28043.           wcstol converts the wide-character string pointed to by nptr to a 
  28044.           long integer value. nptr points to a sequence of wide characters that 
  28045.           can be interpreted as a numerical value of type long int. wcstol 
  28046.           stops reading the string at the first wide character that it cannot 
  28047.           recognize as part of a number. This character can be the wchar_t null 
  28048.           character at the end of the string. The ending character can also be 
  28049.           the first numeric character greater than or equal to the base. 
  28050.  
  28051.           When you use wcstol, nptr should point to a string with the following 
  28052.           form: 
  28053.  
  28054.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  28055.                     Γöé                                        Γöé
  28056.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><              Γöé
  28057.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ+ΓöÇΓöñ  Γö£ΓöÇ0ΓöÇΓöÇΓöñ  ΓööΓöÇdigitsΓöÇΓöÿ                Γöé
  28058.                     Γöé            ΓööΓöÇΓö┤ΓöÇΓöÿ  Γö£ΓöÇ0xΓöÇΓöñ                      Γöé
  28059.                     Γöé               ΓööΓöÇ0XΓöÇΓöÿ                      Γöé
  28060.                     Γöé                                        Γöé
  28061.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  28062.  
  28063.           If base is in the range of 2 through 36, it becomes the base of the 
  28064.           number. If base is 0, the prefix determines the base (8, 16, or 10): 
  28065.           the prefix 0 means base 8 (octal); the prefix 0x or 0X means base 16 
  28066.           (hexadecimal); using any other digit without a prefix means decimal. 
  28067.  
  28068.           The behavior of wcstol is affected by the LC_CTYPE category of the 
  28069.           current locale. 
  28070.  
  28071.  Returns 
  28072.  
  28073.           wcstol returns the converted long integer value. If no conversion 
  28074.           could be performed, wcstol returns 0. If the correct value is outside 
  28075.           the range of representable values, wcstol returns LONG_MAX or 
  28076.           LONG_MIN returned (according to the sign of the value), and sets 
  28077.           errno to ERANGE. 
  28078.  
  28079.           If the string nptr points to is empty or does not have the expected 
  28080.           form, no conversion is performed, and the value of nptr is stored in 
  28081.           the object pointed to by endptr, provided that endptr is not a null 
  28082.           pointer. 
  28083.  
  28084.  Example Code 
  28085.  
  28086.           This example uses wcstol to convert the wide-character string wcs to 
  28087.           a long integer value. 
  28088.  
  28089.                     #include <stdio.h>
  28090.                     #include <wchar.h>
  28091.  
  28092.                     int main(void)
  28093.                     {
  28094.                        wchar_t *wcs = L"10110134932";
  28095.                        wchar_t *stopwcs;
  28096.                        long     l;
  28097.                        int      base;
  28098.  
  28099.                        printf("wcs = \"%ls\"\n", wcs);
  28100.                        for (base=2; base<=8; base*=2) {
  28101.                           l = wcstol(wcs, &stopwcs, base);
  28102.                           printf("   wcstol = %ld\n"
  28103.                                  "   Stopped scan at \"%ls\"\n\n", l, stopwcs);
  28104.                        }
  28105.                        return 0;
  28106.  
  28107.                        /****************************************************************************
  28108.                           The output should be similar to :
  28109.  
  28110.                           wcs = "10110134932"
  28111.                              wcstol = 45
  28112.                              Stopped scan at "34932"
  28113.  
  28114.                              wcstol = 4423
  28115.                              Stopped scan at "4932"
  28116.  
  28117.                              wcstol = 2134108
  28118.                              Stopped scan at "932"
  28119.  
  28120.                        ****************************************************************************/
  28121.                     }
  28122.  
  28123.  Related Information 
  28124.  
  28125.               atol 
  28126.               scanf 
  28127.               strtol 
  28128.               strtold 
  28129.               strtoul 
  28130.               wcstod 
  28131.               wcstoul 
  28132.  
  28133.  
  28134. ΓòÉΓòÉΓòÉ 3.288. wcstombs - Convert Wide-Character String to Multibyte String ΓòÉΓòÉΓòÉ
  28135.  
  28136. wcstombs - Convert Wide-Character String to Multibyte String 
  28137.  
  28138.  Syntax 
  28139.  
  28140.                     #include <stdlib.h>
  28141.                     size_t wcstombs(char *dest, const wchar_t *string, size_t n);
  28142.  
  28143.  Description 
  28144.  
  28145.           wcstombs converts the wide-character string pointed to by string into 
  28146.           the multibyte array pointed to by dest. The conversion stops after n 
  28147.           bytes in dest are filled or after a wide null character is 
  28148.           encountered. 
  28149.  
  28150.           Only complete multibyte characters are stored in dest. If the lack of 
  28151.           space in dest would cause a partial multibyte character to be stored, 
  28152.           wcstombs stores fewer than n bytes and discards the incomplete 
  28153.           character. 
  28154.  
  28155.           The behavior of wcstombs is affected by the LC_CTYPE category of the 
  28156.           current locale. 
  28157.  
  28158.  Returns 
  28159.  
  28160.           If successful, wcstombs returns the number of bytes converted and 
  28161.           stored in dest, not counting the terminating null character. The 
  28162.           string pointed to by dest ends with a null character unless wcstombs 
  28163.           returns the value n. 
  28164.  
  28165.           If it encounters an invalid wide character, wcstombs returns 
  28166.           (size_t)-1. 
  28167.  
  28168.           If the area pointed to by dest is too small to contain all the wide 
  28169.           characters represented as multibyte characters, wcstombs returns the 
  28170.           number of bytes containing complete multibyte characters. 
  28171.  
  28172.           If dest is a null pointer, the value of len is ignored and wcstombs 
  28173.           returns the number of elements required for the converted wide 
  28174.           characters. 
  28175.  
  28176.  Example Code 
  28177.  
  28178.           In this example, wcstombs converts a wide-character string to a 
  28179.           multibyte character string twice. The first call converts the entire 
  28180.           string, while the second call only converts three characters. The 
  28181.           results are printed each time. 
  28182.  
  28183.                     #include <stdio.h>
  28184.                     #include <stdlib.h>
  28185.  
  28186.                     #define  SIZE          20
  28187.  
  28188.                     int main(void)
  28189.                     {
  28190.                        char dest[SIZE];
  28191.                        wchar_t *dptr = L"string";
  28192.                        size_t count = SIZE;
  28193.                        size_t length;
  28194.  
  28195.                        length = wcstombs(dest, dptr, count);
  28196.                        printf("%d characters were converted.\n", length);
  28197.                        printf("The converted string is \"%s\"\n\n", dest);
  28198.  
  28199.                        /* Reset the destination buffer                                            */
  28200.  
  28201.                        memset(dest, '\0', sizeof(dest));
  28202.  
  28203.                        /* Now convert only 3 characters                                           */
  28204.  
  28205.                        length = wcstombs(dest, dptr, 3);
  28206.                        printf("%d characters were converted.\n", length);
  28207.                        printf("The converted string is \"%s\"\n", dest);
  28208.                        return 0;
  28209.  
  28210.                        /****************************************************************************
  28211.                           The output should be:
  28212.  
  28213.                           6 characters were converted.
  28214.                           The converted string is "string"
  28215.  
  28216.                           3 characters were converted.
  28217.                           The converted string is "str"
  28218.                        ****************************************************************************/
  28219.                     }
  28220.  
  28221.  Related Information 
  28222.  
  28223.               mbstowcs 
  28224.               wcslen 
  28225.               wctomb 
  28226.  
  28227.  
  28228. ΓòÉΓòÉΓòÉ 3.289. wcstoul - Convert Wide-Character String to Unsigned Long ΓòÉΓòÉΓòÉ
  28229.  
  28230. wcstoul - Convert Wide-Character String to Unsigned Long 
  28231.  
  28232.  Syntax 
  28233.  
  28234.                     #include <wchar.h>
  28235.                     unsigned long int wcstoul(const wchar_t *nptr, wchar_t **endptr, int base);
  28236.  
  28237.  Description 
  28238.  
  28239.           wcstoul converts the wide-character string pointed to by nptr to an 
  28240.           unsigned long integer value. nptr points to a sequence of wide 
  28241.           characters that can be interpreted as a numerical value of type 
  28242.           unsigned long int. wcstoul stops reading the string at the first wide 
  28243.           character that it cannot recognize as part of a number. This 
  28244.           character can be the wchar_t null character at the end of the string. 
  28245.           The ending character can also be the first numeric character greater 
  28246.           than or equal to the base. 
  28247.  
  28248.           When you use wcstoul, nptr should point to a string with the 
  28249.           following form: 
  28250.  
  28251.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  28252.                     Γöé                                        Γöé
  28253.                     Γöé >>ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇ><                  Γöé
  28254.                     Γöé   ΓööΓöÇwhite-spaceΓöÇΓöÿ  Γö£ΓöÇ0ΓöÇΓöÇΓöñ  ΓööΓöÇdigitsΓöÇΓöÿ                    Γöé
  28255.                     Γöé            Γö£ΓöÇ0xΓöÇΓöñ                          Γöé
  28256.                     Γöé            ΓööΓöÇ0XΓöÇΓöÿ                          Γöé
  28257.                     Γöé                                        Γöé
  28258.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  28259.  
  28260.           If base is in the range of 2 through 36, it becomes the base of the 
  28261.           number. If base is 0, the prefix determines the base (8, 16, or 10): 
  28262.           the prefix 0 means base 8 (octal); the prefix 0x or 0X means base 16 
  28263.           (hexadecimal); using any other digit without a prefix means decimal. 
  28264.  
  28265.           Additional implementation-defined subject sequence forms may be 
  28266.           accepted. 
  28267.  
  28268.           If the subject sequence is empty or does not have the expected form, 
  28269.           no conversion is performed and wcstoul stores the value of nptr in 
  28270.           the object pointed to by endptr, provided that endptr is not a null 
  28271.           pointer. 
  28272.  
  28273.           The behavior of wcstoul is affected by the LC_CTYPE category of the 
  28274.           current locale. 
  28275.  
  28276.  Returns 
  28277.  
  28278.           wcstoul returns the converted unsigned long integer value. If no 
  28279.           conversion could be performed, wcstoul returns 0. If the correct 
  28280.           value is outside the range of representable values, wcstoul returns 
  28281.           ULONG_MAX and sets errno to ERANGE. 
  28282.  
  28283.           If the string nptr points to is empty or does not have the expected 
  28284.           form, no conversion is performed, and the value of nptr is stored in 
  28285.           the object pointed to by endptr, provided that endptr is not a null 
  28286.           pointer. 
  28287.  
  28288.  Example Code 
  28289.  
  28290.           This example uses wcstoul to convert the string wcs to an unsigned 
  28291.           long integer value. 
  28292.  
  28293.                     #include <stdio.h>
  28294.                     #include <wchar.h>
  28295.  
  28296.                     #define BASE 2
  28297.  
  28298.                     int main(void)
  28299.                     {
  28300.                        wchar_t *wcs = L"1000e13 camels";
  28301.                        wchar_t *endptr;
  28302.                        unsigned long int answer;
  28303.  
  28304.                        answer = wcstoul(wcs, &endptr, BASE);
  28305.                        printf("The input wide string used: '%ls'\n"
  28306.                               "The unsigned long int produced: %lu\n"
  28307.                               "The substring of the input wide string that was not"
  28308.                               " converted to unsigned long: '%ls'\n", wcs, answer, endptr);
  28309.                        return 0;
  28310.  
  28311.                        /****************************************************************************
  28312.                           The output should be similar to :
  28313.  
  28314.                           The input wide string used: '1000e13 camels'
  28315.                           The unsigned long int produced: 8
  28316.                           The substring of the input wide string that was not converted to
  28317.                           unsigned long: 'e13 camels'
  28318.                        ****************************************************************************/
  28319.                     }
  28320.  
  28321.  Related Information 
  28322.  
  28323.               strtod 
  28324.               strtol 
  28325.               strtold 
  28326.               wcstod 
  28327.               wcstol 
  28328.  
  28329.  
  28330. ΓòÉΓòÉΓòÉ 3.290. wcswcs - Locate Wide-Character Substring ΓòÉΓòÉΓòÉ
  28331.  
  28332. wcswcs - Locate Wide-Character Substring 
  28333.  
  28334.  Syntax 
  28335.  
  28336.                     #include <wchar.h>
  28337.                     wchar_t *wcswcs(const wchar_t *string1, const wchar_t *string2);
  28338.  
  28339.  Description 
  28340.  
  28341.           wcswcs locates the first occurrence of string2 in the wide-character 
  28342.           string pointed to by string1. In the matching process, wcswcs ignores 
  28343.           the wchar_t null character that ends string2. 
  28344.  
  28345.  Returns 
  28346.  
  28347.           wcswcs returns a pointer to the located string or NULL if the string 
  28348.           is not found. If string2 points to a string with zero length, wcswcs 
  28349.           returns string1. 
  28350.  
  28351.  Example Code 
  28352.  
  28353.           This example finds the first occurrence of the wide character string 
  28354.           pr in buffer1. 
  28355.  
  28356.                     #include <stdio.h>
  28357.                     #include <wchar.h>
  28358.  
  28359.                     #define  SIZE          40
  28360.  
  28361.                     int main(void)
  28362.                     {
  28363.                        wchar_t buffer1[SIZE] = L"computer program";
  28364.                        wchar_t *ptr;
  28365.                        wchar_t *wch = L"pr";
  28366.  
  28367.                        ptr = wcswcs(buffer1, wch);
  28368.                        printf("The first occurrence of %ls in '%ls' is '%ls'\n", wch, buffer1, ptr);
  28369.                        return 0;
  28370.  
  28371.                        /****************************************************************************
  28372.                           The output should be:
  28373.  
  28374.                           The first occurrence of pr in 'computer program' is 'program'
  28375.                        ****************************************************************************/
  28376.                     }
  28377.  
  28378.  Related Information 
  28379.  
  28380.               strchr 
  28381.               strcspn 
  28382.               strpbrk 
  28383.               strrchr 
  28384.               strspn 
  28385.               wcschr 
  28386.               wcscspn 
  28387.               wcspbrk 
  28388.               wcsrchr 
  28389.               wcsspn 
  28390.  
  28391.  
  28392. ΓòÉΓòÉΓòÉ 3.291. wcswidth - Determine Display Width of Wide-Character String ΓòÉΓòÉΓòÉ
  28393.  
  28394. wcswidth - Determine Display Width of Wide-Character String 
  28395.  
  28396.  Syntax 
  28397.  
  28398.                     #include <wchar.h>
  28399.                     int wcswidth (const wchar_t *wcs, size_t n);
  28400.  
  28401.  Description 
  28402.  
  28403.           wcswidth determines the number of printing positions occupied on a 
  28404.           display device by a graphic representation of n wide characters in 
  28405.           the string pointed to by wcs (or fewer than n wide characters, if a 
  28406.           null wide character is encountered before n characters have been 
  28407.           exhausted). The number is independent of its location on the device. 
  28408.  
  28409.           The behavior of wcswidth is affected by the LC_CTYPE category. 
  28410.  
  28411.  Returns 
  28412.  
  28413.           wcswidth returns the number of printing positions occupied by the 
  28414.           wide-character string. If wcs points to a null wide character, 
  28415.           wcswidth returns 0. If any wide character in wcs is not a printing 
  28416.           character, wcswidth returns -1. 
  28417.  
  28418.  Example Code 
  28419.  
  28420.           This example uses wcswidth to calculate the display width of ABC. 
  28421.  
  28422.                     #include <stdio.h>
  28423.                     #include <wchar.h>
  28424.  
  28425.                     int main(void)
  28426.                     {
  28427.                        wchar_t *wcs = L"ABC";
  28428.  
  28429.                        printf("wcs has a width of: %d\n", wcswidth(wcs,3));
  28430.                        return 0;
  28431.  
  28432.                        /****************************************************************************
  28433.                           The output should be similar to :
  28434.  
  28435.                           wcs has a width of: 3
  28436.                        ****************************************************************************/
  28437.                     }
  28438.  
  28439.  Related Information 
  28440.  
  28441.               wcwidth 
  28442.  
  28443.  
  28444. ΓòÉΓòÉΓòÉ 3.292. wcsxfrm - Transform Wide-Character String ΓòÉΓòÉΓòÉ
  28445.  
  28446. wcsxfrm - Transform Wide-Character String 
  28447.  
  28448.  Syntax 
  28449.  
  28450.                     #include <wchar.h>
  28451.                     size_t wcsxfrm(wchar_t *wcs1, const wchar_t *wcs2, size_t n);
  28452.  
  28453.  Description 
  28454.  
  28455.           wcsxfrm transforms the wide-character string pointed to by wcs2 to 
  28456.           values that represent character collating weights and places the 
  28457.           resulting wide-character string into the array pointed to by wcs1. 
  28458.           The transformation is determined by the program's locale. The 
  28459.           transformed string is not necessarily readable, but can be used with 
  28460.           the wcscmp function. 
  28461.  
  28462.           The transformation is such that if wcscmp were applied to two 
  28463.           transformed wide-character strings, the results would be the same as 
  28464.           applying the wcscoll function to the two corresponding untransformed 
  28465.           strings. 
  28466.  
  28467.           No more than n elements are placed into the resulting array pointed 
  28468.           to by wcs1, including the terminating null wide character. If n is 0, 
  28469.           wcs1 can be a null pointer. If copying takes place between objects 
  28470.           that overlap, the behavior is undefined. 
  28471.  
  28472.           The behavior of wcsxfrm is controlled by the LC_COLLATE category of 
  28473.           the current locale. 
  28474.  
  28475.  Returns 
  28476.  
  28477.           wcsxfrm returns the length of the transformed wide-character string 
  28478.           (excluding the terminating null wide character). If the value 
  28479.           returned is n or more, the contents of the array pointed to by wcs1 
  28480.           are indeterminate. 
  28481.  
  28482.           If wcs1 is a null pointer, wcsxfrm returns the number of elements 
  28483.           required to contain the transformed wide string. 
  28484.  
  28485.           If wcs2 contains invalid wide characters, wcsxfrm returns (size_t)-1. 
  28486.           The transformed values of the invalid characters are either less than 
  28487.           or greater than the transformed values of valid wide characters, 
  28488.           depending on the option chosen for the particular locale definition. 
  28489.  
  28490.           If wcs2 contains wide characters outside the domain of the collating 
  28491.           sequence. wcsxfrm sets errno to EILSEQ. 
  28492.  
  28493.  Example Code 
  28494.  
  28495.           This example uses wcsxfrm to transform two different strings with the 
  28496.           same collating weight. It then uses wcscmp to compare the new 
  28497.           strings. 
  28498.  
  28499.                     #include <stdlib.h>
  28500.                     #include <stdio.h>
  28501.                     #include <locale.h>
  28502.                     #include <wchar.h>
  28503.  
  28504.                     int main(void)
  28505.                     {
  28506.                        wchar_t *string1 = L"stride ng1";
  28507.                        wchar_t *string2 = L"stri*ng1";
  28508.                        wchar_t *newstring1, *newstring2;
  28509.                        int  length1, length2;
  28510.  
  28511.                        if (NULL == setlocale(LC_ALL, "Fr_FR")) {
  28512.                           printf("setlocale failed.\n");
  28513.                           exit(EXIT_FAILURE);
  28514.                        }
  28515.                        length1 = wcsxfrm(NULL, string1, 0);
  28516.                        length2 = wcsxfrm(NULL, string2, 0);
  28517.                        if (NULL == (newstring1 = calloc(length1 + 1, sizeof(wchar_t))) ||
  28518.                            NULL == (newstring2 = calloc(length2 + 1, sizeof(wchar_t)))) {
  28519.                           printf("insufficient memory\n");
  28520.                           exit(EXIT_FAILURE);
  28521.                        }
  28522.                        if ((wcsxfrm(newstring1, string1, length1 + 1) != length1) ||
  28523.                            (wcsxfrm(newstring2, string2, length2 + 1) != length2)) {
  28524.                           printf("error in string processing\n");
  28525.                           exit(EXIT_FAILURE);
  28526.                        }
  28527.                        if (0 != wcscmp(newstring1, newstring2))
  28528.                           printf("wrong results\n");
  28529.                        else
  28530.                           printf("correct results\n");
  28531.                        return 0;
  28532.  
  28533.                        /****************************************************************************
  28534.                           The output should be similar to :
  28535.  
  28536.                           correct results
  28537.                        ****************************************************************************/
  28538.                     }
  28539.  
  28540.  Related Information 
  28541.  
  28542.               strxfrm 
  28543.               wcscmp 
  28544.               wcscoll 
  28545.  
  28546.  
  28547. ΓòÉΓòÉΓòÉ 3.293. wctob - Convert Wide Character to Byte ΓòÉΓòÉΓòÉ
  28548.  
  28549. wctob - Convert Wide Character to Byte 
  28550.  
  28551.  Syntax 
  28552.  
  28553.                     #include <stdio.h>
  28554.                     #include <wchar.h>
  28555.                     int wctob(wint_t wc);
  28556.  
  28557.  Description 
  28558.  
  28559.           wctob determines whether wc corresponds to a member of the extended 
  28560.           character set, whose multibyte character has a length of 1 byte 
  28561.  
  28562.           The behavior of wctob is affected by the LC_CTYPE category of the 
  28563.           current locale. 
  28564.  
  28565.  Returns 
  28566.  
  28567.           If c corresponds to a multibyte character with a length of 1 byte, 
  28568.           wctob returns the single-byte representation. Otherwise, wctob 
  28569.           returns EOF. 
  28570.  
  28571.  Example Code 
  28572.  
  28573.           This example uses wctob to test if the wide character A is a valid 
  28574.           single-byte character. 
  28575.  
  28576.                     #include <stdio.h>
  28577.                     #include <wchar.h>
  28578.  
  28579.                     int main(void)
  28580.                     {
  28581.                        wint_t wc = L'A';
  28582.  
  28583.                        if (wctob(wc) == wc)
  28584.                           printf("%lc is a valid single byte character\n", wc);
  28585.                        else
  28586.                           printf("%lc is not a valid single byte character\n", wc);
  28587.                        return 0;
  28588.  
  28589.                        /****************************************************************************
  28590.                           The output should be similar to :
  28591.  
  28592.                           A is a valid single byte character
  28593.                        ****************************************************************************/
  28594.                     }
  28595.  
  28596.  Related Information 
  28597.  
  28598.               mbtowc 
  28599.               wctomb 
  28600.               wcstombs 
  28601.  
  28602.  
  28603. ΓòÉΓòÉΓòÉ 3.294. wctomb -  Convert Wide Character to Multibyte Character ΓòÉΓòÉΓòÉ
  28604.  
  28605. wctomb -  Convert Wide Character to Multibyte Character 
  28606.  
  28607.  Syntax 
  28608.  
  28609.                     #include <stdlib.h>
  28610.                     int wctomb(char *string, wchar_t wc);
  28611.  
  28612.  Description 
  28613.  
  28614.           wctomb converts the wide character wc into a multibyte character and 
  28615.           stores it in the location pointed to by string. wctomb stores a 
  28616.           maximum of MB_CUR_MAX characters in string. 
  28617.  
  28618.           The behavior of wctomb is affected by the LC_CTYPE category of the 
  28619.           current locale. 
  28620.  
  28621.  Returns 
  28622.  
  28623.           wctomb returns the length in bytes of the multibyte character. If wc 
  28624.           is not a valid multibyte character, wctomb returns -1. 
  28625.  
  28626.           If string is a NULL pointer, wctomb returns 0. 
  28627.  
  28628.           Note:  On platforms that support shift states, wctomb can also return 
  28629.                  a nonzero value to indicate that the multibyte encoding is 
  28630.                  state dependent. 
  28631.  
  28632.  Example Code 
  28633.  
  28634.           This example calls wctomb to convert the wide character c to a 
  28635.           multibyte character. 
  28636.  
  28637.                     #include <stdio.h>
  28638.                     #include <stdlib.h>
  28639.  
  28640.                     #define  SIZE          40
  28641.  
  28642.                     int main(void)
  28643.                     {
  28644.                        static char buffer[SIZE];
  28645.                        wchar_t wch = L'c';
  28646.                        int length;
  28647.  
  28648.                        length = wctomb(buffer, wch);
  28649.                        printf("The number of bytes that comprise the multibyte ""character is %i\n",
  28650.                           length);
  28651.                        printf("And the converted string is \"%s\"\n", buffer);
  28652.                        return 0;
  28653.  
  28654.                        /****************************************************************************
  28655.                           The output should be:
  28656.  
  28657.                           The number of bytes that comprise the multibyte character is 1
  28658.                           And the converted string is "c"
  28659.                        ****************************************************************************/
  28660.                     }
  28661.  
  28662.  Related Information 
  28663.  
  28664.               mbtowc 
  28665.               wcslen 
  28666.               wcstombs 
  28667.  
  28668.  
  28669. ΓòÉΓòÉΓòÉ 3.295. wctype - Get Handle for Character Property Classification ΓòÉΓòÉΓòÉ
  28670.  
  28671. wctype - Get Handle for Character Property Classification 
  28672.  
  28673.  Syntax 
  28674.  
  28675.                     #include <wctype.h>
  28676.                     wctype_t wctype(const char *property);
  28677.  
  28678.  Description 
  28679.  
  28680.           wctype returns a handle for the specified character class from the 
  28681.           LC_CTYPE category. You can then use this handle with the iswctype 
  28682.           function to determine if a given wide character belongs to that 
  28683.           class. 
  28684.  
  28685.           The following strings correspond to the standard (basic) character 
  28686.           classes or properties: 
  28687.  
  28688.                      cols='15 15 15 15'.
  28689.                     ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  28690.                     Γöé "                                       Γöé
  28691.                     Γöé "alnum"                                    Γöé
  28692.                     Γöé "alpha"                                    Γöé
  28693.                     Γöé "blank" "                                   Γöé
  28694.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  28695.                     Γöé "                                       Γöé
  28696.                     Γöé "cntrl"                                    Γöé
  28697.                     Γöé "digit"                                    Γöé
  28698.                     Γöé "graph" "                                   Γöé
  28699.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  28700.                     Γöé "                                       Γöé
  28701.                     Γöé "lower"                                    Γöé
  28702.                     Γöé "print"                                    Γöé
  28703.                     Γöé "punct" "                                   Γöé
  28704.                     Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  28705.                     Γöé "                                       Γöé
  28706.                     Γöé "space"                                    Γöé
  28707.                     Γöé "upper"                                    Γöé
  28708.                     Γöé "xdigit" "                                  Γöé
  28709.                     ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  28710.  
  28711.           These classes are described in isalnum to isxdigit and iswalnum to 
  28712.           iswxdigit. 
  28713.  
  28714.           You can also give the name of a user-defined class, as specified in a 
  28715.           locale definition file, as the property argument. 
  28716.  
  28717.           The behavior of this wide-character function is affected by the 
  28718.           LC_CTYPE category of the current locale. 
  28719.  
  28720.  Returns 
  28721.  
  28722.           wctype returns a value of type wctype_t that represents the property 
  28723.           and can be used in calls to iswctype. If the given property is not 
  28724.           valid for the current locale (LC_CTYPE category), wctype returns 0. 
  28725.  
  28726.           Values returned by wctype are valid until a call to setlocale that 
  28727.           modifies the LC_CTYPE category. 
  28728.  
  28729.  Example Code 
  28730.  
  28731.           This example uses wctype to return each standard property, and calls 
  28732.           iswctype to test a wide character against each property. 
  28733.  
  28734.                     #include <wctype.h>
  28735.                     #include <stdio.h>
  28736.  
  28737.                     #define UPPER_LIMIT 0xFF
  28738.  
  28739.                     int main(void)
  28740.                     {
  28741.                        int wc;
  28742.  
  28743.                        for (wc = 0; wc <= UPPER_LIMIT; wc++) {
  28744.                           printf("%#4x ", wc);
  28745.                           printf("%lc", iswctype(wc, wctype("print")) ? (wchar_t)wc : ' ');
  28746.                           printf("%s", iswctype(wc, wctype("alnum"))  ? " AN" : "   ");
  28747.                           printf("%s", iswctype(wc, wctype("alpha"))  ? " A " : "   ");
  28748.                           printf("%s", iswctype(wc, wctype("blank"))  ? " B " : "   ");
  28749.                           printf("%s", iswctype(wc, wctype("cntrl"))  ? " C " : "   ");
  28750.                           printf("%s", iswctype(wc, wctype("digit"))  ? " D " : "   ");
  28751.                           printf("%s", iswctype(wc, wctype("graph"))  ? " G " : "   ");
  28752.                           printf("%s", iswctype(wc, wctype("lower"))  ? " L " : "   ");
  28753.                           printf("%s", iswctype(wc, wctype("punct"))  ? " PU" : "   ");
  28754.                           printf("%s", iswctype(wc, wctype("space"))  ? " S " : "   ");
  28755.                           printf("%s", iswctype(wc, wctype("print"))  ? " PR" : "   ");
  28756.                           printf("%s", iswctype(wc, wctype("upper"))  ? " U " : "   ");
  28757.                           printf("%s", iswctype(wc, wctype("xdigit")) ? " X " : "   ");
  28758.                           putchar('\n');
  28759.                        }
  28760.                        return 0;
  28761.  
  28762.                        /****************************************************************************
  28763.                           The output should be similar to :
  28764.                            :
  28765.                           0x1f            C
  28766.                           0x20         B                 S  PR
  28767.                           0x21 !                G     PU    PR
  28768.                           0x22 "                G     PU    PR
  28769.                           0x23 #                G     PU    PR
  28770.                           0x24 $                G     PU    PR
  28771.                           0x25 %                G     PU    PR
  28772.                           0x26 &                G     PU    PR
  28773.                           0x27 '                G     PU    PR
  28774.                           0x28 (                G     PU    PR
  28775.                           0x29 )                G     PU    PR
  28776.                           0x2a *                G     PU    PR
  28777.                           0x2b +                G     PU    PR
  28778.                           0x2c ,                G     PU    PR
  28779.                           0x2d -                G     PU    PR
  28780.                           0x2e .                G     PU    PR
  28781.                           0x2f /                G     PU    PR
  28782.                           0x30 0 AN          D  G           PR    X
  28783.                           0x31 1 AN          D  G           PR    X
  28784.                           0x32 2 AN          D  G           PR    X
  28785.                           0x33 3 AN          D  G           PR    X
  28786.                           0x34 4 AN          D  G           PR    X
  28787.                           0x35 5 AN          D  G           PR    X
  28788.                            :
  28789.                        ****************************************************************************/
  28790.                     }
  28791.  
  28792.  Related Information 
  28793.  
  28794.               iswalnum to iswxdigit 
  28795.               iswctype 
  28796.  
  28797.  
  28798. ΓòÉΓòÉΓòÉ 3.296. wcwidth - Determine Display Width of Wide Character ΓòÉΓòÉΓòÉ
  28799.  
  28800. wcwidth - Determine Display Width of Wide Character 
  28801.  
  28802.  Syntax 
  28803.  
  28804.                     #include <wchar.h>
  28805.                     int wcwidth (const wint_t wc);
  28806.  
  28807.  Description 
  28808.  
  28809.           wcwidth determines the number of printing positions that a graphic 
  28810.           representation of wc occupies on a display device. Each of the 
  28811.           printing wide characters occupies its own number of printing 
  28812.           positions on a display device. The number is independent of its 
  28813.           location on the device. 
  28814.  
  28815.           The behavior of wcwidth is affected by the LC_CTYPE category. 
  28816.  
  28817.  Returns 
  28818.  
  28819.           wcwidth returns the number of printing positions occupied by wc. If 
  28820.           wc is a null wide character, wcwidth returns 0.  If wc is not a 
  28821.           printing wide character, wc returns -1. 
  28822.  
  28823.  Example Code 
  28824.  
  28825.           This example determines the printing width for the wide character A. 
  28826.  
  28827.                     #include <stdio.h>
  28828.                     #include <wchar.h>
  28829.  
  28830.                     int main(void)
  28831.                     {
  28832.                        wint_t wc = L'A';
  28833.  
  28834.                        printf("%lc has a width of %d\n", wc, wcwidth(wc));
  28835.                        return 0;
  28836.  
  28837.                        /****************************************************************************
  28838.                           The output should be similar to :
  28839.  
  28840.                           A has a width of 1
  28841.                        ****************************************************************************/
  28842.                     }
  28843.  
  28844.  Related Information 
  28845.  
  28846.               wcswidth 
  28847.  
  28848.  
  28849. ΓòÉΓòÉΓòÉ 3.297. write - Writes from Buffer to File ΓòÉΓòÉΓòÉ
  28850.  
  28851. write - Writes from Buffer to File 
  28852.  
  28853.  Syntax 
  28854.  
  28855.                     #include <io.h>
  28856.                     int write(int handle, const void *buffer, unsigned int count);
  28857.  
  28858.  Description 
  28859.  
  28860.           write writes count bytes from buffer into the file associated with 
  28861.           handle. The write operation begins at the current position of the 
  28862.           file pointer associated with the given file. If the file is open for 
  28863.           appending, the operation begins at the end of the file. After the 
  28864.           write operation, the file pointer is increased by the number of bytes 
  28865.           actually written. 
  28866.  
  28867.           If the given file was opened in text mode, each line feed character 
  28868.           is replaced with a carriage return/line feed pair in the output.  The 
  28869.           replacement does not affect the return value. 
  28870.  
  28871.  Returns 
  28872.  
  28873.           write returns the number of bytes moved from the buffer to the file. 
  28874.           The return value may be positive but less than count. A return value 
  28875.           of -1 indicates an error, and errno is set to one of the following 
  28876.           values:  compact break=fit. 
  28877.  
  28878.           Value         Meaning 
  28879.  
  28880.           EBADF         The file handle is not valid, or the file is not open 
  28881.                         for writing. 
  28882.  
  28883.           ENOSPC        No space is left on the device. 
  28884.  
  28885.           EOS2ERR       The call to the operating system was not successful. 
  28886.  
  28887.  Example Code 
  28888.  
  28889.           This example writes the contents of the character array buffer to the 
  28890.           output file whose handle is fh. 
  28891.  
  28892.                     #include <io.h>
  28893.                     #include <stdio.h>
  28894.                     #include <stdlib.h>
  28895.                     #include <fcntl.h>
  28896.                     #include <string.h>
  28897.  
  28898.                     #define FILENAME  "write.dat"
  28899.  
  28900.                     int main(void)
  28901.                     {
  28902.                        int fh;
  28903.                        char buffer[20];
  28904.  
  28905.                        memset(buffer, 'a', 20);                 /* initialize storage             */
  28906.                        printf("\nCreating " FILENAME ".\n");
  28907.                        system("echo Sample Program > " FILENAME);
  28908.                        if (-1 == (fh = open(FILENAME, O_RDWR|O_APPEND))) {
  28909.                           perror("Unable to open " FILENAME);
  28910.                           return EXIT_FAILURE;
  28911.                        }
  28912.                        if (5 != write(fh, buffer, 5)) {
  28913.                           perror("Unable to write to " FILENAME);
  28914.                           close(fh);
  28915.                           return EXIT_FAILURE;
  28916.                        }
  28917.                        printf("Successfully appended 5 characters.\n");
  28918.                        close(fh);
  28919.                        return 0;
  28920.  
  28921.                        /****************************************************************************
  28922.                           The program should create a file "write.dat" containing:
  28923.  
  28924.                           Sample Program
  28925.                           aaaaa
  28926.  
  28927.                           The output should be:
  28928.  
  28929.                           Creating write.dat.
  28930.                           Successfully appended 5 characters.
  28931.                        ****************************************************************************/
  28932.                     }
  28933.  
  28934.  Related Information 
  28935.  
  28936.               creat 
  28937.               fread 
  28938.               fwrite 
  28939.               lseek 
  28940.               open 
  28941.               read 
  28942.               _sopen 
  28943.               _tell 
  28944.  
  28945.  
  28946. ΓòÉΓòÉΓòÉ 4. Notices ΓòÉΓòÉΓòÉ
  28947.  
  28948. September 1996 
  28949.  
  28950. The following paragraph does not apply to the United Kingdom or any country 
  28951. where such provisions are inconsistent with local law:  INTERNATIONAL BUSINESS 
  28952. MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY 
  28953. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
  28954. WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states 
  28955. do not allow disclaimer of express or implied warranties in certain 
  28956. transactions, therefore, this statement may not apply to you. 
  28957.  
  28958. This publication could include technical inaccuracies or typographical errors. 
  28959. Changes are periodically made to the information herein; these changes will be 
  28960. incorporated in new editions of the publication. IBM may make improvements 
  28961. and/or changes in the product(s) and/or the program(s) described in this 
  28962. publication at any time. 
  28963.  
  28964. It is possible that this publication may contain reference to, or information 
  28965. about, IBM products (machines and programs), programming, or services that are 
  28966. not announced in your country.  Such references or information must not be 
  28967. construed to mean that IBM intends to announce such IBM products, programming, 
  28968. or services in your country. 
  28969.  
  28970. Requests for technical information about IBM products should be made to your 
  28971. IBM reseller or IBM marketing representative. 
  28972.  
  28973.  
  28974. ΓòÉΓòÉΓòÉ 4.1. Copyright Notices ΓòÉΓòÉΓòÉ
  28975.  
  28976. COPYRIGHT LICENSE: This publication contains printed sample application 
  28977. programs in source language, which illustrate OS/2 programming techniques. You 
  28978. may copy, modify, and distribute these sample programs in any form without 
  28979. payment to IBM, for the purposes of developing, using, marketing or 
  28980. distributing application programs conforming to the OS/2 application 
  28981. programming interface. 
  28982.  
  28983. Each copy of any portion of these sample programs or any derivative work, which 
  28984. is distributed to others, must include a copyright notice as follows: "(C) 
  28985. (your company name) (year).  All rights reserved." 
  28986.  
  28987. (C)Copyright International Business Machines Corporation 1996. All rights 
  28988. reserved. 
  28989. Note to U.S. Government Users - Documentation related to restricted rights - 
  28990. Use, duplication or disclosure is subject to restrictions set forth in GSA ADP 
  28991. Schedule Contract with IBM Corp. 
  28992.  
  28993.  
  28994. ΓòÉΓòÉΓòÉ 4.2. Disclaimers ΓòÉΓòÉΓòÉ
  28995.  
  28996. References in this publication to IBM products, programs, or services do not 
  28997. imply that IBM intends to make these available in all countries in which IBM 
  28998. operates. Any reference to an IBM product, program, or service is not intended 
  28999. to state or imply that only that IBM product, program, or service may be used. 
  29000. Subject to IBM's valid intellectual property or other legally protectable 
  29001. rights, any functionally equivalent product, program, or service may be used 
  29002. instead of the IBM product, program, or service. The evaluation and 
  29003. verification of operation in conjunction with other products, except those 
  29004. expressly designated by IBM, are the responsibility of the user. 
  29005.  
  29006. IBM may have patents or pending patent applications covering subject matter in 
  29007. this document. The furnishing of this document does not give you any license to 
  29008. these patents. You can send license inquiries, in writing, to: 
  29009.  
  29010.       IBM Director of Licensing 
  29011.       IBM Corporation 
  29012.       500 Columbus Avenue 
  29013.       Thornwood, NY  10594 
  29014.       U.S.A. 
  29015.  
  29016.  Asia-Pacific users can inquire, in writing, to the IBM Director of 
  29017.  Intellectual Property and Licensing, IBM World Trade Asia Corporation, 2-31 
  29018.  Roppongi 3-chome, Minato-ku, Tokyo 106, Japan. 
  29019.  
  29020.  Licensees of this program who wish to have information about it for the 
  29021.  purpose of enabling: (i) the exchange of information between independently 
  29022.  created programs and other programs (including this one) and (ii) the mutual 
  29023.  use of the information which has been exchanged, should contact IBM 
  29024.  Corporation, Department LZKS, 11400 Burnet Road, Austin, TX 78758 U.S.A.  Such 
  29025.  information may be available, subject to appropriate terms and conditions, 
  29026.  including in some cases, payment of a fee. 
  29027.  
  29028.  
  29029. ΓòÉΓòÉΓòÉ 4.3. Trademarks ΓòÉΓòÉΓòÉ
  29030.  
  29031. The following terms are trademarks of the IBM Corporation in the United States 
  29032. or other countries or both: 
  29033.  
  29034. BookManager
  29035. C/2
  29036. IBM
  29037. Operating System/2
  29038. OS/2
  29039. PM
  29040. Presentation Manager
  29041. SAA
  29042. Systems Application Architecture
  29043. VisualAge
  29044. Workplace Shell
  29045.  
  29046. The following terms are trademarks of other companies: 
  29047.  
  29048.  C++                      AT&T, Inc. 
  29049.  Intel                    Intel Corporation 
  29050.  Open Software Foundation Open Software Foundation, Inc. 
  29051.  OSF                      Open Software Foundation, Inc. 
  29052.  PCMCIA                   Personal Computer Memory Card International 
  29053.                           Association 
  29054.  Unicode                  Unicode Inc. 
  29055.  
  29056.  Windows is a trademark of Microsoft Corporation. 
  29057.  
  29058.  PC Direct is a trademark of Ziff Communications Company and is used by IBM 
  29059.  Corporation under license. 
  29060.  
  29061.  UNIX is a registered trademark in the United States and other countries 
  29062.  licensed exclusively through X/Open Company Limited. 
  29063.  
  29064.  Other company, product, and service names, which may be denoted by a double 
  29065.  asterisk (**), may be trademarks or service marks of others. 
  29066.  
  29067.  
  29068. ΓòÉΓòÉΓòÉ 5. Glossary ΓòÉΓòÉΓòÉ
  29069.  
  29070. This glossary defines terms and abbreviations from: 
  29071.  
  29072.      The IBM Dictionary of Computing, New York: McGraw-Hill, copyright 1994 by 
  29073.       International Business Machines Corporation. Copies may be purchased from 
  29074.       McGraw-Hill or in bookstores. 
  29075.  
  29076.      American National Dictionary for Information Systems, ANSI X3.172-1990, 
  29077.       copyright 1990 by the American National Standards Institute (ANSI). 
  29078.       Copies may be purchased from the American National Standards Institute, 
  29079.       11 West 42 Street, New York, New York 10036. Definitions are identified 
  29080.       by the symbol (A) after the definition. 
  29081.  
  29082.      The ANSI/EIA Standard-440-A: Fiber Optic Terminology. Copies may be 
  29083.       purchased from the Electronic Industries Association, 2001 Pennsylvania 
  29084.       Avenue, N.W., Washington DC 20006. Definitions are identified by the 
  29085.       symbol (E) after the definition. 
  29086.  
  29087.      The Information Technology Vocabulary, developed by Subcommittee 1, Joint 
  29088.       Technical Committee 1, of the International Organization for 
  29089.       Standardization and the International Electrotechnical Commission 
  29090.       (ISO/IEC JTC1/SC1). Definitions of published parts of this vocabulary are 
  29091.       identified by the symbol (I) after the definition; definitions taken from 
  29092.       draft international standards, committee drafts, and working papers being 
  29093.       developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the 
  29094.       definition, indicating that final agreement has not yet been reached 
  29095.       among the participating National Bodies of SC1. 
  29096.  
  29097.      X/Open CAE Specification.  Commands and Utilities, Issue 4.  July, 1992. 
  29098.       These definitions are indicated by the symbol X/Open after the 
  29099.       definition. 
  29100.  
  29101.      ISO/IEC 9945-1:1990/IEEE POSIX 1003.1-1990. These definitions are 
  29102.       indicated by the symbol ISO.1 after the definition. 
  29103.  
  29104.  
  29105. ΓòÉΓòÉΓòÉ 5.1. A ΓòÉΓòÉΓòÉ
  29106.  
  29107.  
  29108. ΓòÉΓòÉΓòÉ 5.1.1. abstraction (data) ΓòÉΓòÉΓòÉ
  29109.  
  29110. abstraction (data) 
  29111.  
  29112. A data type with a private representation and a public set of operations. The 
  29113. C++ language uses the concept of classes to implement data abstraction. 
  29114.  
  29115.  
  29116. ΓòÉΓòÉΓòÉ 5.1.2. access ΓòÉΓòÉΓòÉ
  29117.  
  29118. access 
  29119.  
  29120. An attribute that determines whether or not a class member is accessible in an 
  29121. expression or declaration. 
  29122.  
  29123.  
  29124. ΓòÉΓòÉΓòÉ 5.1.3. access mode ΓòÉΓòÉΓòÉ
  29125.  
  29126. access mode 
  29127.  
  29128.    1. A technique that is used to obtain a particular logical record from, or 
  29129.       to place a particular logical record into, a file assigned to a mass 
  29130.       storage device. (A). 
  29131.  
  29132.    2. The manner in which files are referred to by a computer. Access can be 
  29133.       sequential (records are referred to one after another in the order in 
  29134.       which they appear on the file), access can be random (the individual 
  29135.       records can be referred to in a nonsequential manner), or access can be 
  29136.       dynamic (records can be accessed sequentially or randomly, depending on 
  29137.       the form of the input/output request). IBM. 
  29138.  
  29139.    3. A particular form of access permitted to a file. X/Open. 
  29140.  
  29141.  
  29142. ΓòÉΓòÉΓòÉ 5.1.4. alignment ΓòÉΓòÉΓòÉ
  29143.  
  29144. alignment 
  29145.  
  29146. The storing of data in relation to certain machine-dependent boundaries. IBM. 
  29147.  
  29148.  
  29149. ΓòÉΓòÉΓòÉ 5.1.5. American National Standards Institute ΓòÉΓòÉΓòÉ
  29150.  
  29151. American National Standards Institute 
  29152.  
  29153. See ANSI. 
  29154.  
  29155.  
  29156. ΓòÉΓòÉΓòÉ 5.1.6. ANSI (American National Standards Institute) ΓòÉΓòÉΓòÉ
  29157.  
  29158. ANSI (American National Standards Institute) 
  29159.  
  29160. An organization consisting of producers, consumers, and general interest 
  29161. groups, that establishes the procedures by which accredited organizations 
  29162. create and maintain voluntary industry standards in the United States. (A). 
  29163.  
  29164.  
  29165. ΓòÉΓòÉΓòÉ 5.1.7. API (application program interface) ΓòÉΓòÉΓòÉ
  29166.  
  29167. API (application program interface) 
  29168.  
  29169. A functional interface supplied by the operating system or by a separately 
  29170. orderable licensed program that allows an application program written in a 
  29171. high-level language to use specific data or functions of the operating system 
  29172. or the licensed program. IBM. 
  29173.  
  29174.  
  29175. ΓòÉΓòÉΓòÉ 5.1.8. application ΓòÉΓòÉΓòÉ
  29176.  
  29177. application 
  29178.  
  29179.    1. The use to which an information processing system is put; for example, a 
  29180.       payroll application, an airline reservation application, a network 
  29181.       application. IBM. 
  29182.  
  29183.    2. A collection of software components used to perform specific types of 
  29184.       user-oriented work on a computer. IBM. 
  29185.  
  29186.  
  29187. ΓòÉΓòÉΓòÉ 5.1.9. application program ΓòÉΓòÉΓòÉ
  29188.  
  29189. application program 
  29190.  
  29191. A program written for or by a user that applies to the user's work, such as a 
  29192. program that does inventory control or payroll. IBM. 
  29193.  
  29194.  
  29195. ΓòÉΓòÉΓòÉ 5.1.10. argument ΓòÉΓòÉΓòÉ
  29196.  
  29197. argument 
  29198.  
  29199.    1. A parameter passed between a calling program and a called program. IBM. 
  29200.  
  29201.    2. In a function call, an expression that represents a value that the 
  29202.       calling function passes to the function specified in the call. Also 
  29203.       called parameter. 
  29204.  
  29205.    3. In the shell, a parameter passed to a utility as the equivalent of a 
  29206.       single string in the argv array created by one of the exec functions. An 
  29207.       argument is one of the options, option-arguments, or operands following 
  29208.       the command name. X/Open. 
  29209.  
  29210.  
  29211. ΓòÉΓòÉΓòÉ 5.1.11. array ΓòÉΓòÉΓòÉ
  29212.  
  29213. array 
  29214.  
  29215. In programming languages, an aggregate that consists of data objects, with 
  29216. identical attributes, each of which may be uniquely referenced by subscripting. 
  29217. IBM. 
  29218.  
  29219.  
  29220. ΓòÉΓòÉΓòÉ 5.1.12. array element ΓòÉΓòÉΓòÉ
  29221.  
  29222. array element 
  29223.  
  29224. A data item in an array. IBM. 
  29225.  
  29226.  
  29227. ΓòÉΓòÉΓòÉ 5.1.13. ASCII (American National Standard Code for Information Interchange) ΓòÉΓòÉΓòÉ
  29228.  
  29229. ASCII (American National Standard Code for Information Interchange) 
  29230.  
  29231. The standard code, using a coded character set consisting of 7-bit coded 
  29232. characters (8 bits including parity check), that is used for information 
  29233. interchange among data processing systems, data communication systems, and 
  29234. associated equipment. The ASCII set consists of control characters and graphic 
  29235. characters. IBM. 
  29236.  
  29237. Note:  IBM has defined an extension to ASCII code (characters 128-255). 
  29238.  
  29239.  
  29240. ΓòÉΓòÉΓòÉ 5.2. B ΓòÉΓòÉΓòÉ
  29241.  
  29242.  
  29243. ΓòÉΓòÉΓòÉ 5.2.1. backslash ΓòÉΓòÉΓòÉ
  29244.  
  29245. backslash 
  29246.  
  29247. The character \. This character is named <backslash> in the portable character 
  29248. set. 
  29249.  
  29250.  
  29251. ΓòÉΓòÉΓòÉ 5.2.2. binary stream ΓòÉΓòÉΓòÉ
  29252.  
  29253. binary stream 
  29254.  
  29255.    1. An ordered sequence of untranslated characters. 
  29256.  
  29257.    2. A sequence of characters that corresponds on a one-to-one basis with the 
  29258.       characters in the file. No character translation is performed on binary 
  29259.       streams. IBM. 
  29260.  
  29261.  
  29262. ΓòÉΓòÉΓòÉ 5.2.3. blank character ΓòÉΓòÉΓòÉ
  29263.  
  29264. blank character 
  29265.  
  29266.    1. A graphic representation of the space character. (A). 
  29267.  
  29268.    2. A character that represents an empty position in a graphic character 
  29269.       string. (T). 
  29270.  
  29271.    3. One of the characters that belongs to the blank character class as 
  29272.       defined via the LC_CTYPE category in the current locale. X/Open. 
  29273.  
  29274.  
  29275. ΓòÉΓòÉΓòÉ 5.2.4. block ΓòÉΓòÉΓòÉ
  29276.  
  29277. block 
  29278.  
  29279.    1. In programming languages, a compound statement that coincides with the 
  29280.       scope of at least one of the declarations contained within it. A block 
  29281.       may also specify storage allocation or segment programs for other 
  29282.       purposes. (I). 
  29283.  
  29284.    2. A string of data elements recorded or transmitted as a unit. The elements 
  29285.       may be characters, words or physical records. (T). 
  29286.  
  29287.    3. The unit of data transmitted to and from a device. Each block contains 
  29288.       one record, part of a record, or several records. 
  29289.  
  29290.  
  29291. ΓòÉΓòÉΓòÉ 5.2.5. boundary alignment ΓòÉΓòÉΓòÉ
  29292.  
  29293. boundary alignment 
  29294.  
  29295. The position in main storage of a fixed-length field, such as a halfword or 
  29296. doubleword, on a byte-level boundary for that unit of information. IBM. 
  29297.  
  29298.  
  29299. ΓòÉΓòÉΓòÉ 5.2.6. brackets ΓòÉΓòÉΓòÉ
  29300.  
  29301. brackets 
  29302.  
  29303. The characters [ (left bracket) and ] (right bracket), also known as square 
  29304. brackets. When used in the phrase "enclosed in (square) brackets" the symbol [ 
  29305. immediately precedes the object to be enclosed, and ] immediately follows it. 
  29306. When describing these characters in the portable character set, the names 
  29307. <left-bracket> and <right-bracket> are used. X/Open. 
  29308.  
  29309.  
  29310. ΓòÉΓòÉΓòÉ 5.2.7. built-in ΓòÉΓòÉΓòÉ
  29311.  
  29312. built-in 
  29313.  
  29314.    1. A function that the compiler will automatically inline instead of making 
  29315.       the function call, unless the programmer specifies not to inline. 
  29316.  
  29317.    2. In programming languages, pertaining to a language object that is 
  29318.       declared by the definition of the programming language; for example the 
  29319.       built-in function SIN in PL/I, the predefined data type INTEGER in 
  29320.       FORTRAN. (I).  Synonymous with predefined. IBM. 
  29321.  
  29322.  
  29323. ΓòÉΓòÉΓòÉ 5.3. C ΓòÉΓòÉΓòÉ
  29324.  
  29325.  
  29326. ΓòÉΓòÉΓòÉ 5.3.1. C++ class library ΓòÉΓòÉΓòÉ
  29327.  
  29328. C++ class library 
  29329.  
  29330. See class library. 
  29331.  
  29332.  
  29333. ΓòÉΓòÉΓòÉ 5.3.2. C++ library ΓòÉΓòÉΓòÉ
  29334.  
  29335. C++ library 
  29336.  
  29337. A system library that contains common C++ language subroutines for file access, 
  29338. memory allocation, and other functions. 
  29339.  
  29340.  
  29341. ΓòÉΓòÉΓòÉ 5.3.3. call ΓòÉΓòÉΓòÉ
  29342.  
  29343. call 
  29344.  
  29345. To transfer control to a procedure, program, routine, or subroutine. IBM. 
  29346.  
  29347.  
  29348. ΓòÉΓòÉΓòÉ 5.3.4. cast ΓòÉΓòÉΓòÉ
  29349.  
  29350. cast 
  29351.  
  29352. In the C and C++ languages, an expression that converts the type of the operand 
  29353. to a specified data type (the operator). IBM. 
  29354.  
  29355.  
  29356. ΓòÉΓòÉΓòÉ 5.3.5. character ΓòÉΓòÉΓòÉ
  29357.  
  29358. character 
  29359.  
  29360.    1. A letter, digit, or other symbol that is used as part of the 
  29361.       organization, control, or representation of data. A character is often in 
  29362.       the form of a spatial arrangement of adjacent or connected strokes. (A). 
  29363.  
  29364.    2. A sequence of one or more bytes representing a single graphic symbol or 
  29365.       control code. This term corresponds to the ISO C standard term multibyte 
  29366.       character (multi-byte character), where a single-byte character is a 
  29367.       special case of the multi-byte character. Unlike the usage in the ISO C 
  29368.       standard, character here has no necessary relationship with storage 
  29369.       space, and byte is used when storage space is discussed. X/Open. ISO.1. 
  29370.  
  29371.  
  29372. ΓòÉΓòÉΓòÉ 5.3.6. character array ΓòÉΓòÉΓòÉ
  29373.  
  29374. character array 
  29375.  
  29376. An array of type char. X/Open. 
  29377.  
  29378.  
  29379. ΓòÉΓòÉΓòÉ 5.3.7. character class ΓòÉΓòÉΓòÉ
  29380.  
  29381. character class 
  29382.  
  29383. A named set of characters sharing an attribute associated with the name of the 
  29384. class. The classes and the characters that they contain are dependent on the 
  29385. value of the LC_CTYPE category in the current locale. X/Open. 
  29386.  
  29387.  
  29388. ΓòÉΓòÉΓòÉ 5.3.8. character constant ΓòÉΓòÉΓòÉ
  29389.  
  29390. character constant 
  29391.  
  29392.    1. A constant with a character value. IBM. 
  29393.  
  29394.    2. A string of any of the characters that can be represented, usually 
  29395.       enclosed in apostrophes. IBM. 
  29396.  
  29397.    3. In some languages, a character enclosed in apostrophes. IBM. 
  29398.  
  29399.  
  29400. ΓòÉΓòÉΓòÉ 5.3.9. character set ΓòÉΓòÉΓòÉ
  29401.  
  29402. character set 
  29403.  
  29404.    1. A finite set of different characters that is complete for a given 
  29405.       purpose; for example, the character set in ISO Standard 646, 7-bit Coded 
  29406.       Character Set for Information Processing Interchange. (T). 
  29407.  
  29408.    2. All the valid characters for a programming language or for a computer 
  29409.       system. IBM. 
  29410.  
  29411.    3. A group of characters used for a specific reason; for example, the set of 
  29412.       characters a printer can print. IBM. 
  29413.  
  29414.    4. See also portable character set. 
  29415.  
  29416.  
  29417. ΓòÉΓòÉΓòÉ 5.3.10. character string ΓòÉΓòÉΓòÉ
  29418.  
  29419. character string 
  29420.  
  29421. A contiguous sequence of characters terminated by the first null byte and 
  29422. including the first null byte. X/Open. 
  29423.  
  29424.  
  29425. ΓòÉΓòÉΓòÉ 5.3.11. child ΓòÉΓòÉΓòÉ
  29426.  
  29427. child 
  29428.  
  29429. A node that is subordinate to another node in a tree structure. Only the root 
  29430. node is not a child. 
  29431.  
  29432.  
  29433. ΓòÉΓòÉΓòÉ 5.3.12. class ΓòÉΓòÉΓòÉ
  29434.  
  29435. class 
  29436.  
  29437.    1. A C++ aggregate that may contain functions, types, and user-defined 
  29438.       operators in addition to data. Classes may be defined hierarchically, 
  29439.       allowing one class to be derived from another, and may restrict access to 
  29440.       its members. 
  29441.  
  29442.    2. A user-defined data type. A class data type can contain both data 
  29443.       representations (data members) and functions (member functions). 
  29444.  
  29445.  
  29446. ΓòÉΓòÉΓòÉ 5.3.13. class library ΓòÉΓòÉΓòÉ
  29447.  
  29448. class library 
  29449.  
  29450. A collection of C++ classes. 
  29451.  
  29452.  
  29453. ΓòÉΓòÉΓòÉ 5.3.14. C library ΓòÉΓòÉΓòÉ
  29454.  
  29455. C library 
  29456.  
  29457. A system library that contains common C language subroutines for file access, 
  29458. string operators, character operations, memory allocation, and other functions. 
  29459. IBM. 
  29460.  
  29461.  
  29462. ΓòÉΓòÉΓòÉ 5.3.15. code page ΓòÉΓòÉΓòÉ
  29463.  
  29464. code page 
  29465.  
  29466.    1. An assignment of graphic characters and control function meanings to all 
  29467.       code points; for example, assignment of characters and meanings to 256 
  29468.       code points for an 8-bit code, assignment of characters and meanings to 
  29469.       128 code points for a 7-bit code. 
  29470.  
  29471.    2. A particular assignment of hexadecimal identifiers to graphic characters. 
  29472.  
  29473.  
  29474. ΓòÉΓòÉΓòÉ 5.3.16. codeset ΓòÉΓòÉΓòÉ
  29475.  
  29476. codeset 
  29477.  
  29478. Synonym for code element set. IBM. 
  29479.  
  29480.  
  29481. ΓòÉΓòÉΓòÉ 5.3.17. collating element ΓòÉΓòÉΓòÉ
  29482.  
  29483. collating element 
  29484.  
  29485. The smallest entity used to determine the logical ordering of character or 
  29486. wide-character strings. A collating element consists of either a single 
  29487. character, or two or more characters collating as a single entity. The value of 
  29488. the LC_COLLATE category in the current locale determines the current set of 
  29489. collating elements. X/Open. 
  29490.  
  29491.  
  29492. ΓòÉΓòÉΓòÉ 5.3.18. collating sequence ΓòÉΓòÉΓòÉ
  29493.  
  29494. collating sequence 
  29495.  
  29496.    1. A specified arrangement used in sequencing. (I). (A). 
  29497.  
  29498.    2. An ordering assigned to a set of items, such that any two sets in that 
  29499.       assigned order can be collated. (A). 
  29500.  
  29501.    3. The relative ordering of collating elements as determined by the setting 
  29502.       of the LC_COLLATE category in the current locale. The character order, as 
  29503.       defined for the LC_COLLATE category in the current locale, defines the 
  29504.       relative order of all collating elements, such that each element occupies 
  29505.       a unique position in the order. This is the order used in ranges of 
  29506.       characters and collating elements in regular expressions and pattern 
  29507.       matching. In addition, the definition of the collating weights of 
  29508.       characters and collating elements uses collating elements to represent 
  29509.       their respective positions within the collation sequence. 
  29510.  
  29511.  
  29512. ΓòÉΓòÉΓòÉ 5.3.19. collection ΓòÉΓòÉΓòÉ
  29513.  
  29514. collection 
  29515.  
  29516.    1. An abstract class without any ordering, element properties, or key 
  29517.       properties. All abstract classes are derived from collection. 
  29518.  
  29519.    2. In a general sense, an implementation of an abstract data type for 
  29520.       storing elements. 
  29521.  
  29522.  
  29523. ΓòÉΓòÉΓòÉ 5.3.20. Collection Class Library ΓòÉΓòÉΓòÉ
  29524.  
  29525. Collection Class Library 
  29526.  
  29527. A set of classes that provide basic functions for collections, and can be used 
  29528. as base classes. 
  29529.  
  29530.  
  29531. ΓòÉΓòÉΓòÉ 5.3.21. command ΓòÉΓòÉΓòÉ
  29532.  
  29533. command 
  29534.  
  29535. A request to perform an operation or run a program. When parameters, arguments, 
  29536. flags, or other operands are associated with a command, the resulting character 
  29537. string is a single command. 
  29538.  
  29539.  
  29540. ΓòÉΓòÉΓòÉ 5.3.22. condition ΓòÉΓòÉΓòÉ
  29541.  
  29542. condition 
  29543.  
  29544. A relational expression that can be evaluated to a value of either true or 
  29545. false. IBM. 
  29546.  
  29547.  
  29548. ΓòÉΓòÉΓòÉ 5.3.23. const ΓòÉΓòÉΓòÉ
  29549.  
  29550. const 
  29551.  
  29552.    1. An attribute of a data object that declares the object cannot be changed. 
  29553.  
  29554.    2. A keyword that allows you to define a variable whose value does not 
  29555.       change. 
  29556.  
  29557.  
  29558. ΓòÉΓòÉΓòÉ 5.3.24. constant ΓòÉΓòÉΓòÉ
  29559.  
  29560. constant 
  29561.  
  29562.    1. In programming languages, a language object that takes only one specific 
  29563.       value. (I). 
  29564.  
  29565.    2. A data item with a value that does not change. IBM. 
  29566.  
  29567.  
  29568. ΓòÉΓòÉΓòÉ 5.3.25. control character ΓòÉΓòÉΓòÉ
  29569.  
  29570. control character 
  29571.  
  29572.    1. A character whose occurrence in a particular context specifies a control 
  29573.       function. (T). 
  29574.  
  29575.    2. Synonymous with nonprinting character. IBM. 
  29576.  
  29577.    3. A character, other than a graphic character, that affects the recording, 
  29578.       processing, transmission, or interpretation of text. X/Open. 
  29579.  
  29580.  
  29581. ΓòÉΓòÉΓòÉ 5.3.26. conversion ΓòÉΓòÉΓòÉ
  29582.  
  29583. conversion 
  29584.  
  29585.    1. In programming languages, the transformation between values that 
  29586.       represent the same data item but belong to different data types. 
  29587.       Information may be lost because of conversion since accuracy of data 
  29588.       representation varies among different data types. (I). 
  29589.  
  29590.    2. The process of changing from one method of data processing to another or 
  29591.       from one data processing system to another. IBM. 
  29592.  
  29593.    3. The process of changing from one form of representation to another; for 
  29594.       example to change from decimal representation to binary representation. 
  29595.       IBM. 
  29596.  
  29597.    4. A change in the type of a value. For example, when you add values having 
  29598.       different data types, the compiler converts both values to a common form 
  29599.       before adding the values. 
  29600.  
  29601.  
  29602. ΓòÉΓòÉΓòÉ 5.3.27. conversion descriptor ΓòÉΓòÉΓòÉ
  29603.  
  29604. conversion descriptor 
  29605.  
  29606. A per-process unique value used to identify an open codeset conversion. X/Open. 
  29607.  
  29608.  
  29609. ΓòÉΓòÉΓòÉ 5.3.28. coordinated universal time (UTC) ΓòÉΓòÉΓòÉ
  29610.  
  29611. coordinated universal time (UTC) 
  29612.  
  29613. Equivalent to Greenwich Mean Time (GMT) 
  29614.  
  29615.  
  29616. ΓòÉΓòÉΓòÉ 5.3.29. current working directory ΓòÉΓòÉΓòÉ
  29617.  
  29618. current working directory 
  29619.  
  29620.    1. A directory, associated with a process, that is used in path-name 
  29621.       resolution for path names that do not begin with a slash. X/Open. ISO.1. 
  29622.  
  29623.    2. The directory that is searched when a file name is entered with no 
  29624.       indication of the directory that lists the file name.  The operating 
  29625.       system assumes that the current directory is the root directory unless a 
  29626.       path to another directory is specified. IBM. 
  29627.  
  29628.    3. In the OS/2 operating system, the first directory in which the operating 
  29629.       system looks for programs and files and stores temporary files and 
  29630.       output. IBM. 
  29631.  
  29632.  
  29633. ΓòÉΓòÉΓòÉ 5.4. D ΓòÉΓòÉΓòÉ
  29634.  
  29635.  
  29636. ΓòÉΓòÉΓòÉ 5.4.1. data object ΓòÉΓòÉΓòÉ
  29637.  
  29638. data object 
  29639.  
  29640.    1. A storage area used to hold a value. 
  29641.  
  29642.    2. Anything that exists in storage and on which operations can be performed, 
  29643.       such as files, programs, classes, or arrays. 
  29644.  
  29645.    3. In a program, an element of data structure, such as a file, array, or 
  29646.       operand, that is needed for the execution of a program and that is named 
  29647.       or otherwise specified by the allowable character set of the language in 
  29648.       which a program is coded. IBM. 
  29649.  
  29650.  
  29651. ΓòÉΓòÉΓòÉ 5.4.2. data stream ΓòÉΓòÉΓòÉ
  29652.  
  29653. data stream 
  29654.  
  29655. A continuous stream of data elements being transmitted, or intended for 
  29656. transmission, in character or binary-digit form, using a defined format. IBM. 
  29657.  
  29658.  
  29659. ΓòÉΓòÉΓòÉ 5.4.3. data type ΓòÉΓòÉΓòÉ
  29660.  
  29661. data type 
  29662.  
  29663. The properties and internal representation that characterize data. 
  29664.  
  29665.  
  29666. ΓòÉΓòÉΓòÉ 5.4.4. DBCS (double-byte character set) ΓòÉΓòÉΓòÉ
  29667.  
  29668. DBCS (double-byte character set) 
  29669.  
  29670. A set of characters in which each character is represented by 2 bytes. 
  29671. Languages such as Japanese, Chinese, and Korean, which contain more symbols 
  29672. than can be represented by 256 code points, require double-byte character sets. 
  29673.  
  29674. Because each character requires 2 bytes, the typing, display, and printing of 
  29675. DBCS characters requires hardware and programs that support DBCS. IBM. 
  29676.  
  29677.  
  29678. ΓòÉΓòÉΓòÉ 5.4.5. declaration ΓòÉΓòÉΓòÉ
  29679.  
  29680. declaration 
  29681.  
  29682.    1. In the C and C++ languages, a description that makes an external object 
  29683.       or function available to a function or a block statement. IBM. 
  29684.  
  29685.    2. Establishes the names and characteristics of data objects and functions 
  29686.       used in a program. 
  29687.  
  29688.  
  29689. ΓòÉΓòÉΓòÉ 5.4.6. default locale ΓòÉΓòÉΓòÉ
  29690.  
  29691. default locale 
  29692.  
  29693.    1. The C locale, which is always used when no selection of locale is 
  29694.       performed. 
  29695.  
  29696.    2. A system default locale, named by locale-related environmental variables. 
  29697.  
  29698.  
  29699. ΓòÉΓòÉΓòÉ 5.4.7. define directive ΓòÉΓòÉΓòÉ
  29700.  
  29701. define directive 
  29702.  
  29703. A preprocessor statement that directs the preprocessor to replace an identifier 
  29704. or macro invocation with special code. 
  29705.  
  29706.  
  29707. ΓòÉΓòÉΓòÉ 5.4.8. definition ΓòÉΓòÉΓòÉ
  29708.  
  29709. definition 
  29710.  
  29711.    1. A data description that reserves storage and may provide an initial 
  29712.       value. 
  29713.  
  29714.    2. A declaration that allocates storage, and may initialize a data object or 
  29715.       specify the body of a function. 
  29716.  
  29717.  
  29718. ΓòÉΓòÉΓòÉ 5.4.9. delete ΓòÉΓòÉΓòÉ
  29719.  
  29720. delete 
  29721.  
  29722.    1. A C++ keyword that identifies a free storage deallocation operator. 
  29723.  
  29724.    2. A C++ operator used to destroy objects created by new. 
  29725.  
  29726.  
  29727. ΓòÉΓòÉΓòÉ 5.4.10. device ΓòÉΓòÉΓòÉ
  29728.  
  29729. device 
  29730.  
  29731. A computer peripheral or an object that appears to the application as such. 
  29732. X/Open. ISO.1. 
  29733.  
  29734.  
  29735. ΓòÉΓòÉΓòÉ 5.4.11. directory ΓòÉΓòÉΓòÉ
  29736.  
  29737. directory 
  29738.  
  29739. A type of file containing the names and controlling information for other files 
  29740. or other directories. IBM. 
  29741.  
  29742.  
  29743. ΓòÉΓòÉΓòÉ 5.4.12. display ΓòÉΓòÉΓòÉ
  29744.  
  29745. display 
  29746.  
  29747. To direct the output to the user's terminal. If the output is not directed to 
  29748. the terminal, the results are undefined. X/Open. 
  29749.  
  29750.  
  29751. ΓòÉΓòÉΓòÉ 5.4.13. dot ΓòÉΓòÉΓòÉ
  29752.  
  29753. dot 
  29754.  
  29755. The file name consisting of a single dot character (.). X/Open. ISO.1. 
  29756.  
  29757.  
  29758. ΓòÉΓòÉΓòÉ 5.4.14. double-byte character set ΓòÉΓòÉΓòÉ
  29759.  
  29760. double-byte character set 
  29761.  
  29762. See DBCS. 
  29763.  
  29764.  
  29765. ΓòÉΓòÉΓòÉ 5.4.15. double-precision ΓòÉΓòÉΓòÉ
  29766.  
  29767. double-precision 
  29768.  
  29769. Pertaining to the use of two computer words to represent a number in accordance 
  29770. with the required precision. (I). (A). 
  29771.  
  29772.  
  29773. ΓòÉΓòÉΓòÉ 5.4.16. dump ΓòÉΓòÉΓòÉ
  29774.  
  29775. dump 
  29776.  
  29777. To copy data in a readable format from main or auxiliary storage onto an 
  29778. external medium such as tape, diskette, or printer. IBM. 
  29779.  
  29780.  
  29781. ΓòÉΓòÉΓòÉ 5.4.17. dynamic ΓòÉΓòÉΓòÉ
  29782.  
  29783. dynamic 
  29784.  
  29785. Pertaining to an operation that occurs at the time it is needed rather than at 
  29786. a predetermined or fixed time. IBM. 
  29787.  
  29788.  
  29789. ΓòÉΓòÉΓòÉ 5.5. E ΓòÉΓòÉΓòÉ
  29790.  
  29791.  
  29792. ΓòÉΓòÉΓòÉ 5.5.1. EBCDIC (extended binary-coded decimal interchange code) ΓòÉΓòÉΓòÉ
  29793.  
  29794. EBCDIC (extended binary-coded decimal interchange code) 
  29795.  
  29796. A coded character set of 256 8-bit characters. IBM. 
  29797.  
  29798.  
  29799. ΓòÉΓòÉΓòÉ 5.5.2. E-format ΓòÉΓòÉΓòÉ
  29800.  
  29801. E-format 
  29802.  
  29803. Floating-point format, consisting of a number in scientific notation. IBM. 
  29804.  
  29805.  
  29806. ΓòÉΓòÉΓòÉ 5.5.3. element ΓòÉΓòÉΓòÉ
  29807.  
  29808. element 
  29809.  
  29810. The component of an array, subrange, enumeration, or set. 
  29811.  
  29812.  
  29813. ΓòÉΓòÉΓòÉ 5.5.4. empty string ΓòÉΓòÉΓòÉ
  29814.  
  29815. empty string 
  29816.  
  29817.    1. A string whose first byte is a null byte. Synonymous with null string. 
  29818.       X/Open. 
  29819.  
  29820.    2. A character array whose first element is a null character. ISO.1. 
  29821.  
  29822.  
  29823. ΓòÉΓòÉΓòÉ 5.5.5. epoch ΓòÉΓòÉΓòÉ
  29824.  
  29825. epoch 
  29826.  
  29827. The time zero hours, zero minutes, zero seconds, on January 1, 1970 Coordinated 
  29828. Universal Time. X/Open. ISO.1. 
  29829.  
  29830.  
  29831. ΓòÉΓòÉΓòÉ 5.5.6. exception ΓòÉΓòÉΓòÉ
  29832.  
  29833. exception 
  29834.  
  29835.    1. Any user, logic, or system error detected by a function that does not 
  29836.       itself deal with the error but passes the error on to a handling routine 
  29837.       (also called throwing the exception). 
  29838.  
  29839.    2. In programming languages, an abnormal situation that may arise during 
  29840.       execution, that may cause a deviation from the normal execution sequence, 
  29841.       and for which facilities exist in a programming language to define, 
  29842.       raise, recognize, ignore, and handle it; for example, (ON-) condition in 
  29843.       PL/I, exception in ADA. (I). 
  29844.  
  29845.  
  29846. ΓòÉΓòÉΓòÉ 5.5.7. exception handler ΓòÉΓòÉΓòÉ
  29847.  
  29848. exception handler 
  29849.  
  29850.    1. Exception handlers are catch blocks in C++ applications. Catch blocks 
  29851.       catch exceptions when they are thrown from a function enclosed in a try 
  29852.       block. Try blocks, catch blocks, and throw expressions are the constructs 
  29853.       used to implement formal exception handling in C++ applications. 
  29854.  
  29855.    2. A set of routines used to detect deadlock conditions or to process 
  29856.       abnormal condition processing. An exception handler allows the normal 
  29857.       running of processes to be interrupted and resumed. IBM. 
  29858.  
  29859.  
  29860. ΓòÉΓòÉΓòÉ 5.5.8. executable file ΓòÉΓòÉΓòÉ
  29861.  
  29862. executable file 
  29863.  
  29864. A regular file acceptable as a new process image file by the equivalent of the 
  29865. exec family of functions, and thus usable as one form of a utility. The 
  29866. standard utilities described as compilers can produce executable files, but 
  29867. other unspecified methods of producing executable files may also be provided. 
  29868. The internal format of an executable file is unspecified, but a conforming 
  29869. application cannot assume an executable file is a text file. X/Open. 
  29870.  
  29871.  
  29872. ΓòÉΓòÉΓòÉ 5.5.9. extension ΓòÉΓòÉΓòÉ
  29873.  
  29874. extension 
  29875.  
  29876.    1. An element or function not included in the standard language. 
  29877.  
  29878.    2. File name extension. 
  29879.  
  29880.  
  29881. ΓòÉΓòÉΓòÉ 5.6. F ΓòÉΓòÉΓòÉ
  29882.  
  29883.  
  29884. ΓòÉΓòÉΓòÉ 5.6.1. file mode ΓòÉΓòÉΓòÉ
  29885.  
  29886. file mode 
  29887.  
  29888. An object containing the file mode bits and file type of a file, as described 
  29889. in <sys/stat.h>. X/Open. 
  29890.  
  29891.  
  29892. ΓòÉΓòÉΓòÉ 5.6.2. file mode bits ΓòÉΓòÉΓòÉ
  29893.  
  29894. file mode bits 
  29895.  
  29896. A file's file permission bits, set-user-ID-on-execution bit (S_ISUID) and 
  29897. set-group-ID-on-execution bit (S_ISGID). X/Open. 
  29898.  
  29899.  
  29900. ΓòÉΓòÉΓòÉ 5.6.3. file scope ΓòÉΓòÉΓòÉ
  29901.  
  29902. file scope 
  29903.  
  29904. A name declared outside all blocks and classes has file scope and can be used 
  29905. after the point of declaration in a source file. 
  29906.  
  29907.  
  29908. ΓòÉΓòÉΓòÉ 5.6.4. for statement ΓòÉΓòÉΓòÉ
  29909.  
  29910. for statement 
  29911.  
  29912. A looping statement that contains the word for followed by a list of 
  29913. expressions enclosed in parentheses (the condition) and a statement (the 
  29914. action). Each expression in the parenthesized list is separated by a semicolon. 
  29915. You can omit any of the expressions, but you cannot omit the semicolons. 
  29916.  
  29917.  
  29918. ΓòÉΓòÉΓòÉ 5.6.5. function ΓòÉΓòÉΓòÉ
  29919.  
  29920. function 
  29921.  
  29922. A named group of statements that can be called and evaluated and can return a 
  29923. value to the calling statement. IBM. 
  29924.  
  29925.  
  29926. ΓòÉΓòÉΓòÉ 5.6.6. function call ΓòÉΓòÉΓòÉ
  29927.  
  29928. function call 
  29929.  
  29930. An expression that moves the path of execution from the current function to a 
  29931. specified function and evaluates to the return value provided by the called 
  29932. function. A function call contains the name of the function to which control 
  29933. moves and a parenthesized list of values. IBM. 
  29934.  
  29935.  
  29936. ΓòÉΓòÉΓòÉ 5.7. G ΓòÉΓòÉΓòÉ
  29937.  
  29938.  
  29939. ΓòÉΓòÉΓòÉ 5.7.1. global ΓòÉΓòÉΓòÉ
  29940.  
  29941. global 
  29942.  
  29943. Pertaining to information available to more than one program or subroutine. 
  29944. IBM. 
  29945.  
  29946.  
  29947. ΓòÉΓòÉΓòÉ 5.7.2. global variable ΓòÉΓòÉΓòÉ
  29948.  
  29949. global variable 
  29950.  
  29951. A symbol defined in one program module that is used in other independently 
  29952. compiled program modules. 
  29953.  
  29954.  
  29955. ΓòÉΓòÉΓòÉ 5.7.3. GMT (Greenwich Mean Time) ΓòÉΓòÉΓòÉ
  29956.  
  29957. GMT (Greenwich Mean Time) 
  29958.  
  29959. The solar time at the meridian of Greenwich, formerly used as the prime basis 
  29960. of standard time throughout the world. GMT has been superseded by coordinate 
  29961. universal time (UTC). 
  29962.  
  29963.  
  29964. ΓòÉΓòÉΓòÉ 5.7.4. Greenwich Mean Time ΓòÉΓòÉΓòÉ
  29965.  
  29966. Greenwich Mean Time 
  29967.  
  29968. See GMT. 
  29969.  
  29970.  
  29971. ΓòÉΓòÉΓòÉ 5.8. H ΓòÉΓòÉΓòÉ
  29972.  
  29973.  
  29974. ΓòÉΓòÉΓòÉ 5.8.1. header file ΓòÉΓòÉΓòÉ
  29975.  
  29976. header file 
  29977.  
  29978. A text file that contains declarations used by a group of functions, programs, 
  29979. or users. 
  29980.  
  29981.  
  29982. ΓòÉΓòÉΓòÉ 5.8.2. heap ΓòÉΓòÉΓòÉ
  29983.  
  29984. heap 
  29985.  
  29986. An unordered flat collection that allows duplicate elements. 
  29987.  
  29988.  
  29989. ΓòÉΓòÉΓòÉ 5.9. I ΓòÉΓòÉΓòÉ
  29990.  
  29991.  
  29992. ΓòÉΓòÉΓòÉ 5.9.1. I18N ΓòÉΓòÉΓòÉ
  29993.  
  29994. I18N 
  29995.  
  29996. Abbreviation for internationalization. The abbreviation uses the first 
  29997. character of the word internationalization (i), the last character (n), and 
  29998. omitting the middle eighteen characters. 
  29999.  
  30000.  
  30001. ΓòÉΓòÉΓòÉ 5.9.2. identifier ΓòÉΓòÉΓòÉ
  30002.  
  30003. identifier 
  30004.  
  30005.    1. One or more characters used to identify or name a data element and 
  30006.       possibly to indicate certain properties of that data element. (A). 
  30007.  
  30008.    2. In programming languages, a token that names a data object such as a 
  30009.       variable, an array, a record, a subprogram, or a function. (A). 
  30010.  
  30011.    3. A sequence of letters, digits, and underscores used to identify a data 
  30012.       object or function. IBM. 
  30013.  
  30014.  
  30015. ΓòÉΓòÉΓòÉ 5.9.3. if statement ΓòÉΓòÉΓòÉ
  30016.  
  30017. if statement 
  30018.  
  30019. A conditional statement that contains the keyword if, followed by an expression 
  30020. in parentheses (the condition), a statement (the action), and an optional else 
  30021. clause (the alternative action). IBM. 
  30022.  
  30023.  
  30024. ΓòÉΓòÉΓòÉ 5.9.4. include directive ΓòÉΓòÉΓòÉ
  30025.  
  30026. include directive 
  30027.  
  30028. A preprocessor directive that causes the preprocessor to replace the statement 
  30029. with the contents of a specified file. 
  30030.  
  30031.  
  30032. ΓòÉΓòÉΓòÉ 5.9.5. include file ΓòÉΓòÉΓòÉ
  30033.  
  30034. include file 
  30035.  
  30036. See header file. 
  30037.  
  30038.  
  30039. ΓòÉΓòÉΓòÉ 5.9.6. input stream ΓòÉΓòÉΓòÉ
  30040.  
  30041. input stream 
  30042.  
  30043. A sequence of control statements and data submitted to a system from an input 
  30044. unit. Synonymous with input job stream, job input stream. IBM. 
  30045.  
  30046.  
  30047. ΓòÉΓòÉΓòÉ 5.9.7. instance ΓòÉΓòÉΓòÉ
  30048.  
  30049. instance 
  30050.  
  30051. An object-oriented programming term synonymous with object. An instance is a 
  30052. particular instantiation of a data type. It is simply a region of storage that 
  30053. contains a value or group of values. For example, if a class box is previously 
  30054. defined, two instances of a class box could be instantiated with the 
  30055. declaration: 
  30056.  
  30057. box box1, box2;
  30058.  
  30059.  
  30060. ΓòÉΓòÉΓòÉ 5.9.8. instruction ΓòÉΓòÉΓòÉ
  30061.  
  30062. instruction 
  30063.  
  30064. A program statement that specifies an operation to be performed by the 
  30065. computer, along with the values or locations of operands.  This statement 
  30066. represents the programmer's request to the processor to perform a specific 
  30067. operation. 
  30068.  
  30069.  
  30070. ΓòÉΓòÉΓòÉ 5.9.9. internationalization ΓòÉΓòÉΓòÉ
  30071.  
  30072. internationalization 
  30073.  
  30074. The capability of a computer program to adapt to the requirements of different 
  30075. native languages, local customs, and coded character sets. X/Open. 
  30076.  
  30077. Synonymous with I18N. 
  30078.  
  30079.  
  30080. ΓòÉΓòÉΓòÉ 5.9.10. iteration ΓòÉΓòÉΓòÉ
  30081.  
  30082. iteration 
  30083.  
  30084. The process of repeatedly applying a function to a series of elements in a 
  30085. collection until some condition is satisfied. 
  30086.  
  30087.  
  30088. ΓòÉΓòÉΓòÉ 5.10. K ΓòÉΓòÉΓòÉ
  30089.  
  30090.  
  30091. ΓòÉΓòÉΓòÉ 5.10.1. key access ΓòÉΓòÉΓòÉ
  30092.  
  30093. key access 
  30094.  
  30095. A property that allows elements to be accessed by matching keys. 
  30096.  
  30097.  
  30098. ΓòÉΓòÉΓòÉ 5.10.2. keyword ΓòÉΓòÉΓòÉ
  30099.  
  30100. keyword 
  30101.  
  30102.    1. A predefined word reserved for the C and C++ languages, that may not be 
  30103.       used as an identifier. 
  30104.  
  30105.    2. A symbol that identifies a parameter in JCL. 
  30106.  
  30107.  
  30108. ΓòÉΓòÉΓòÉ 5.11. L ΓòÉΓòÉΓòÉ
  30109.  
  30110.  
  30111. ΓòÉΓòÉΓòÉ 5.11.1. label ΓòÉΓòÉΓòÉ
  30112.  
  30113. label 
  30114.  
  30115. An identifier within or attached to a set of data elements. (T). 
  30116.  
  30117.  
  30118. ΓòÉΓòÉΓòÉ 5.11.2. library ΓòÉΓòÉΓòÉ
  30119.  
  30120. library 
  30121.  
  30122.    1. A collection of functions, calls, subroutines, or other data. IBM. 
  30123.  
  30124.    2. A set of object modules that can be specified in a link command. 
  30125.  
  30126.  
  30127. ΓòÉΓòÉΓòÉ 5.11.3. link ΓòÉΓòÉΓòÉ
  30128.  
  30129. link 
  30130.  
  30131. To interconnect items of data or portions of one or more computer programs; for 
  30132. example, linking of object programs by a linkage editor to produce an 
  30133. executable file. 
  30134.  
  30135.  
  30136. ΓòÉΓòÉΓòÉ 5.11.4. linker ΓòÉΓòÉΓòÉ
  30137.  
  30138. linker 
  30139.  
  30140. A computer program for creating load modules from one or more object modules by 
  30141. resolving cross references among the modules and, if necessary, adjusting 
  30142. addresses. IBM. 
  30143.  
  30144.  
  30145. ΓòÉΓòÉΓòÉ 5.11.5. literal ΓòÉΓòÉΓòÉ
  30146.  
  30147. literal 
  30148.  
  30149.    1. In programming languages, a lexical unit that directly represents a 
  30150.       value; for example, 14 represents the integer fourteen, "APRIL" 
  30151.       represents the string of characters APRIL, 3.0005E2 represents the number 
  30152.       300.05. (I). 
  30153.  
  30154.    2. A symbol or a quantity in a source program that is itself data, rather 
  30155.       than a reference to data. IBM. 
  30156.  
  30157.    3. A character string whose value is given by the characters themselves; for 
  30158.       example, the numeric literal 7 has the value 7, and the character literal 
  30159.       CHARACTERS has the value CHARACTERS. IBM. 
  30160.  
  30161.  
  30162. ΓòÉΓòÉΓòÉ 5.11.6. local ΓòÉΓòÉΓòÉ
  30163.  
  30164. local 
  30165.  
  30166.    1. In programming languages, pertaining to the relationship between a 
  30167.       language object and a block such that the language object has a scope 
  30168.       contained in that block. (I). 
  30169.  
  30170.    2. Pertaining to that which is defined and used only in one subdivision of a 
  30171.       computer program. (A). 
  30172.  
  30173.  
  30174. ΓòÉΓòÉΓòÉ 5.11.7. locale ΓòÉΓòÉΓòÉ
  30175.  
  30176. locale 
  30177.  
  30178. The definition of the subset of a user's environment that depends on language, 
  30179. territory (country), and code set information. X/Open. 
  30180.  
  30181.  
  30182. ΓòÉΓòÉΓòÉ 5.11.8. lvalue ΓòÉΓòÉΓòÉ
  30183.  
  30184. lvalue 
  30185.  
  30186. An expression that represents a data object that can be both examined and 
  30187. altered. 
  30188.  
  30189.  
  30190. ΓòÉΓòÉΓòÉ 5.12. M ΓòÉΓòÉΓòÉ
  30191.  
  30192.  
  30193. ΓòÉΓòÉΓòÉ 5.12.1. macro ΓòÉΓòÉΓòÉ
  30194.  
  30195. macro 
  30196.  
  30197. An identifier followed by arguments (may be a parenthesized list of arguments) 
  30198. that the preprocessor replaces with the replacement code located in a 
  30199. preprocessor #define directive. 
  30200.  
  30201.  
  30202. ΓòÉΓòÉΓòÉ 5.12.2. mask ΓòÉΓòÉΓòÉ
  30203.  
  30204. mask 
  30205.  
  30206. A pattern of characters that controls the keeping, deleting, or testing of 
  30207. portions of another pattern of characters. (I). (A). 
  30208.  
  30209.  
  30210. ΓòÉΓòÉΓòÉ 5.12.3. member ΓòÉΓòÉΓòÉ
  30211.  
  30212. member 
  30213.  
  30214. A data object or function in a structure, union, or class. Members can also be 
  30215. classes, enumerations, bit fields, and type names. 
  30216.  
  30217.  
  30218. ΓòÉΓòÉΓòÉ 5.12.4. method ΓòÉΓòÉΓòÉ
  30219.  
  30220. method 
  30221.  
  30222. In the C++ language, a synonym for member function. 
  30223.  
  30224.  
  30225. ΓòÉΓòÉΓòÉ 5.12.5. migrate ΓòÉΓòÉΓòÉ
  30226.  
  30227. migrate 
  30228.  
  30229. To move to a changed operating environment,  usually to a new release or 
  30230. version of a system. IBM. 
  30231.  
  30232.  
  30233. ΓòÉΓòÉΓòÉ 5.12.6. mode ΓòÉΓòÉΓòÉ
  30234.  
  30235. mode 
  30236.  
  30237. A collection of attributes that specifies a file's type and its access 
  30238. permissions. X/Open. ISO.1. 
  30239.  
  30240.  
  30241. ΓòÉΓòÉΓòÉ 5.12.7. module ΓòÉΓòÉΓòÉ
  30242.  
  30243. module 
  30244.  
  30245. A program unit that usually performs a particular function or related 
  30246. functions, and that is distinct and identifiable with respect to compiling, 
  30247. combining with other units, and loading. 
  30248.  
  30249.  
  30250. ΓòÉΓòÉΓòÉ 5.12.8. multibyte code set (MBCS) ΓòÉΓòÉΓòÉ
  30251.  
  30252. multibyte code set (MBCS) 
  30253.  
  30254. A code set that needs one or more bytes to represent a single character. 
  30255.  
  30256.  
  30257. ΓòÉΓòÉΓòÉ 5.12.9. multitasking ΓòÉΓòÉΓòÉ
  30258.  
  30259. multitasking 
  30260.  
  30261. A mode of operation that allows concurrent performance, or interleaved 
  30262. execution of two or more tasks. (I). (A). 
  30263.  
  30264.  
  30265. ΓòÉΓòÉΓòÉ 5.13. N ΓòÉΓòÉΓòÉ
  30266.  
  30267.  
  30268. ΓòÉΓòÉΓòÉ 5.13.1. name ΓòÉΓòÉΓòÉ
  30269.  
  30270. name 
  30271.  
  30272. In the C++ language, a name is commonly referred to as an identifier. However, 
  30273. syntactically, a name can be an identifier, operator function name, conversion 
  30274. function name, destructor name or qualified name. 
  30275.  
  30276.  
  30277. ΓòÉΓòÉΓòÉ 5.13.2. NULL ΓòÉΓòÉΓòÉ
  30278.  
  30279. NULL 
  30280.  
  30281. In the C and C++ languages, a pointer that does not point to a data object. 
  30282. IBM. 
  30283.  
  30284.  
  30285. ΓòÉΓòÉΓòÉ 5.13.3. null character (NUL) ΓòÉΓòÉΓòÉ
  30286.  
  30287. null character (NUL) 
  30288.  
  30289. The ASCII or EBCDIC character '\0' with the hex value 00, all bits turned off. 
  30290. It is used to represent the absence of a printed or displayed character. This 
  30291. character is named<NUL> in the portable character set. 
  30292.  
  30293.  
  30294. ΓòÉΓòÉΓòÉ 5.13.4. null pointer ΓòÉΓòÉΓòÉ
  30295.  
  30296. null pointer 
  30297.  
  30298. The value that is obtained by converting the number 0 into a pointer; for 
  30299. example, (void *) 0.  The C and C++ languages guarantee that this value will 
  30300. not match that of any legitimate pointer, so it is used by many functions that 
  30301. return pointers to indicate an error. X/Open. 
  30302.  
  30303.  
  30304. ΓòÉΓòÉΓòÉ 5.13.5. null string ΓòÉΓòÉΓòÉ
  30305.  
  30306. null string 
  30307.  
  30308.    1. A string whose first byte is a null byte. Synonymous with empty string. 
  30309.       X/Open. 
  30310.  
  30311.    2. A character array whose first element is a null character. ISO.1. 
  30312.  
  30313.  
  30314. ΓòÉΓòÉΓòÉ 5.13.6. null value ΓòÉΓòÉΓòÉ
  30315.  
  30316. null value 
  30317.  
  30318. A parameter position for which no value is specified. IBM. 
  30319.  
  30320.  
  30321. ΓòÉΓòÉΓòÉ 5.14. O ΓòÉΓòÉΓòÉ
  30322.  
  30323.  
  30324. ΓòÉΓòÉΓòÉ 5.14.1. object ΓòÉΓòÉΓòÉ
  30325.  
  30326. object 
  30327.  
  30328.    1. A region of storage.  An object is created when a variable is defined or 
  30329.       new is invoked.  An object is destroyed when it goes out of scope. (See 
  30330.       also instance.) 
  30331.  
  30332.    2. In object-oriented design or programming, an abstraction consisting of 
  30333.       data and the operations associated with that data. See also class. IBM. 
  30334.  
  30335.    3. An instance of a class. 
  30336.  
  30337.  
  30338. ΓòÉΓòÉΓòÉ 5.14.2. open file ΓòÉΓòÉΓòÉ
  30339.  
  30340. open file 
  30341.  
  30342. A file that is currently associated with a file descriptor. X/Open. ISO.1. 
  30343.  
  30344.  
  30345. ΓòÉΓòÉΓòÉ 5.14.3. operating system (OS) ΓòÉΓòÉΓòÉ
  30346.  
  30347. operating system (OS) 
  30348.  
  30349. Software that controls functions such as resource allocation, scheduling, 
  30350. input/output control, and data management. 
  30351.  
  30352.  
  30353. ΓòÉΓòÉΓòÉ 5.14.4. operator precedence ΓòÉΓòÉΓòÉ
  30354.  
  30355. operator precedence 
  30356.  
  30357. In programming languages, an order relation defining the sequence of the 
  30358. application of operators within an expression. (I). 
  30359.  
  30360.  
  30361. ΓòÉΓòÉΓòÉ 5.14.5. overflow ΓòÉΓòÉΓòÉ
  30362.  
  30363. overflow 
  30364.  
  30365.    1. A condition that occurs when a portion of the result of an operation 
  30366.       exceeds the capacity of the intended unit of storage. 
  30367.  
  30368.    2. That portion of an operation that exceeds the capacity of the intended 
  30369.       unit of storage. IBM. 
  30370.  
  30371.  
  30372. ΓòÉΓòÉΓòÉ 5.15. P ΓòÉΓòÉΓòÉ
  30373.  
  30374.  
  30375. ΓòÉΓòÉΓòÉ 5.15.1. parameter ΓòÉΓòÉΓòÉ
  30376.  
  30377. parameter 
  30378.  
  30379.    1. In the C and C++ languages, an object declared as part of a function 
  30380.       declaration or definition that acquires a value on entry to the function, 
  30381.       or an identifier following the macro name in a function-like macro 
  30382.       definition. X/Open. 
  30383.  
  30384.    2. Data passed between programs or procedures. IBM. 
  30385.  
  30386.  
  30387. ΓòÉΓòÉΓòÉ 5.15.2. parent process ΓòÉΓòÉΓòÉ
  30388.  
  30389. parent process 
  30390.  
  30391.    1. The program that originates the creation of other processes by means of 
  30392.       spawn or exec function calls. See also child process. 
  30393.  
  30394.    2. A process that creates other processes. 
  30395.  
  30396.  
  30397. ΓòÉΓòÉΓòÉ 5.15.3. path name ΓòÉΓòÉΓòÉ
  30398.  
  30399. path name 
  30400.  
  30401.    1. A string that is used to identify a file. A path name consists of, at 
  30402.       most, {PATH_MAX} bytes, including the terminating null character.  It has 
  30403.       an optional beginning slash, followed by zero or more file names 
  30404.       separated by slashes.  If the path name refers to a directory, it may 
  30405.       also have one or more trailing slashes.  Multiple successive slashes are 
  30406.       considered to be the same as one slash.  A path name that begins with two 
  30407.       successive slashes may be interpreted in an implementation-dependent 
  30408.       manner, although more than two leading slashes will be treated as a 
  30409.       single slash.  The interpretation of the path name is described in 
  30410.       pathname resolution. ISO.1. 
  30411.  
  30412.    2. A file name specifying all directories leading to the file. 
  30413.  
  30414.  
  30415. ΓòÉΓòÉΓòÉ 5.15.4. period ΓòÉΓòÉΓòÉ
  30416.  
  30417. period 
  30418.  
  30419. The character (.). The term period is contrasted against dot, which is used to 
  30420. describe a specific directory entry. This character is named <period> in the 
  30421. portable character set. 
  30422.  
  30423.  
  30424. ΓòÉΓòÉΓòÉ 5.15.5. pointer ΓòÉΓòÉΓòÉ
  30425.  
  30426. pointer 
  30427.  
  30428. In the C and C++ languages, a variable that holds the address of a data object 
  30429. or a function. IBM. 
  30430.  
  30431.  
  30432. ΓòÉΓòÉΓòÉ 5.15.6. portable character set ΓòÉΓòÉΓòÉ
  30433.  
  30434. portable character set 
  30435.  
  30436. The set of characters specified in POSIX 1003.2, section 2.4 and in ISO 646 
  30437. IRV. It includes uppercase A-Z, lowercase a-z, 0-9, and basic punctuation 
  30438. characters. 
  30439.  
  30440.  
  30441. ΓòÉΓòÉΓòÉ 5.15.7. portability ΓòÉΓòÉΓòÉ
  30442.  
  30443. portability 
  30444.  
  30445. The ability of a programming language to compile successfully on different 
  30446. operating systems without requiring changes to the source code. 
  30447.  
  30448.  
  30449. ΓòÉΓòÉΓòÉ 5.15.8. positional parameter ΓòÉΓòÉΓòÉ
  30450.  
  30451. positional parameter 
  30452.  
  30453. A parameter that must appear in a specified location relative to other 
  30454. positional parameters. IBM. 
  30455.  
  30456.  
  30457. ΓòÉΓòÉΓòÉ 5.15.9. precedence ΓòÉΓòÉΓòÉ
  30458.  
  30459. precedence 
  30460.  
  30461. The priority system for grouping different types of operators with their 
  30462. operands. 
  30463.  
  30464.  
  30465. ΓòÉΓòÉΓòÉ 5.15.10. predefined macros ΓòÉΓòÉΓòÉ
  30466.  
  30467. predefined macros 
  30468.  
  30469. Frequently used routines provided by an application or language for the 
  30470. programmer. 
  30471.  
  30472.  
  30473. ΓòÉΓòÉΓòÉ 5.15.11. preprocessor ΓòÉΓòÉΓòÉ
  30474.  
  30475. preprocessor 
  30476.  
  30477. A phase of the compiler that examines the source program for preprocessor 
  30478. statements that are then executed, resulting in the alteration of the source 
  30479. program. 
  30480.  
  30481.  
  30482. ΓòÉΓòÉΓòÉ 5.15.12. printable character ΓòÉΓòÉΓòÉ
  30483.  
  30484. printable character 
  30485.  
  30486. One of the characters included in the print character classification of the 
  30487. LC_CTYPE category in the current locale. X/Open. 
  30488.  
  30489.  
  30490. ΓòÉΓòÉΓòÉ 5.15.13. process ΓòÉΓòÉΓòÉ
  30491.  
  30492. process 
  30493.  
  30494.    1. An instance of an executing application and the resources it uses. 
  30495.  
  30496.    2. An address space and single thread of control that executes within that 
  30497.       address space, and its required system resources. X/Open. ISO.1. 
  30498.  
  30499.  
  30500. ΓòÉΓòÉΓòÉ 5.15.14. process ID ΓòÉΓòÉΓòÉ
  30501.  
  30502. process ID 
  30503.  
  30504. The unique identifier representing a process. A process ID is a positive 
  30505. integer. (Under ISO only, it is a positive integer that can be contained in a 
  30506. pid_t.) A process ID will not be reused by the system until the process 
  30507. lifetime ends. In addition, if there exists a process group whose process group 
  30508. ID is equal to that process ID, the process ID will not be reused by the system 
  30509. until the process group lifetime ends. A process that is not a system process 
  30510. will not have a process ID of 1. X/Open. ISO.1. 
  30511.  
  30512.  
  30513. ΓòÉΓòÉΓòÉ 5.15.15. public ΓòÉΓòÉΓòÉ
  30514.  
  30515. public 
  30516.  
  30517. Pertaining to a class member that is accessible to all functions. 
  30518.  
  30519.  
  30520. ΓòÉΓòÉΓòÉ 5.16. R ΓòÉΓòÉΓòÉ
  30521.  
  30522.  
  30523. ΓòÉΓòÉΓòÉ 5.16.1. redirection ΓòÉΓòÉΓòÉ
  30524.  
  30525. redirection 
  30526.  
  30527. In the shell, a method of associating files with the input or output of 
  30528. commands. X/Open. 
  30529.  
  30530.  
  30531. ΓòÉΓòÉΓòÉ 5.16.2. reentrant ΓòÉΓòÉΓòÉ
  30532.  
  30533. reentrant 
  30534.  
  30535. The attribute of a program or routine that allows the same copy of a program or 
  30536. routine to be used concurrently by two or more tasks. 
  30537.  
  30538.  
  30539. ΓòÉΓòÉΓòÉ 5.16.3. regular expression ΓòÉΓòÉΓòÉ
  30540.  
  30541. regular expression 
  30542.  
  30543.    1. A mechanism to select specific strings from a set of character strings. 
  30544.  
  30545.    2. A set of characters, meta-characters, and operators that define a string 
  30546.       or group of strings in a search pattern. 
  30547.  
  30548.    3. A string containing wildcard characters and operations that define a set 
  30549.       of one or more possible strings. 
  30550.  
  30551.  
  30552. ΓòÉΓòÉΓòÉ 5.16.4. root ΓòÉΓòÉΓòÉ
  30553.  
  30554. root 
  30555.  
  30556. In the OS/2 operating system, the base directory. 
  30557.  
  30558.  
  30559. ΓòÉΓòÉΓòÉ 5.16.5. run-time library ΓòÉΓòÉΓòÉ
  30560.  
  30561. run-time library 
  30562.  
  30563. A compiled collection of functions whose members can be referred to by an 
  30564. application program during run time execution. Typically used to refer to a 
  30565. dynamic library that is provided in object code, such that references to the 
  30566. library are resolved during the linking step.  The run-time library itself is 
  30567. not statically bound into the application modules. 
  30568.  
  30569.  
  30570. ΓòÉΓòÉΓòÉ 5.17. S ΓòÉΓòÉΓòÉ
  30571.  
  30572.  
  30573. ΓòÉΓòÉΓòÉ 5.17.1. scope ΓòÉΓòÉΓòÉ
  30574.  
  30575. scope 
  30576.  
  30577.    1. That part of a source program in which a variable is visible. 
  30578.  
  30579.    2. That part of a source program in which an object is defined and 
  30580.       recognized. 
  30581.  
  30582.  
  30583. ΓòÉΓòÉΓòÉ 5.17.2. semaphore ΓòÉΓòÉΓòÉ
  30584.  
  30585. semaphore 
  30586.  
  30587. An object used by multithread applications for signalling purposes and for 
  30588. controlling access to serially reusable resources. Processes can be locked to a 
  30589. resource with semaphores if the processes follow certain programming 
  30590. conventions. 
  30591.  
  30592.  
  30593. ΓòÉΓòÉΓòÉ 5.17.3. sequence ΓòÉΓòÉΓòÉ
  30594.  
  30595. sequence 
  30596.  
  30597. A sequentially ordered flat collection. 
  30598.  
  30599.  
  30600. ΓòÉΓòÉΓòÉ 5.17.4. session ΓòÉΓòÉΓòÉ
  30601.  
  30602. session 
  30603.  
  30604. A collection of process groups established for job control purposes. Each 
  30605. process group is a member of a session. A process is considered to be a member 
  30606. of the session of which its process group is a member. A newly created process 
  30607. joins the session of its creator. A process can alter its session membership; 
  30608. see &setsid.. There can be multiple process groups in the same session. X/Open. 
  30609. ISO.1. 
  30610.  
  30611.  
  30612. ΓòÉΓòÉΓòÉ 5.17.5. signal ΓòÉΓòÉΓòÉ
  30613.  
  30614. signal 
  30615.  
  30616.    1. A condition that may or may not be reported during program execution. For 
  30617.       example, SIGFPE is the signal used to represent erroneous arithmetic 
  30618.       operations such as a division by zero. 
  30619.  
  30620.    2. A mechanism by which a process may be notified of, or affected by, an 
  30621.       event occurring in the system. Examples of such events include hardware 
  30622.       exceptions and specific actions by processes. The term signal is also 
  30623.       used to refer to the event itself. X/Open. ISO.1. 
  30624.  
  30625.  
  30626. ΓòÉΓòÉΓòÉ 5.17.6. signal handler ΓòÉΓòÉΓòÉ
  30627.  
  30628. signal handler 
  30629.  
  30630. A function to be called when the signal is reported. 
  30631.  
  30632.  
  30633. ΓòÉΓòÉΓòÉ 5.17.7. space character ΓòÉΓòÉΓòÉ
  30634.  
  30635. space character 
  30636.  
  30637. The character defined in the portable character set as <space>. The space 
  30638. character is a member of the space character class of the current locale, but 
  30639. represents the single character, and not all of the possible members of the 
  30640. class. X/Open. 
  30641.  
  30642.  
  30643. ΓòÉΓòÉΓòÉ 5.17.8. specifiers ΓòÉΓòÉΓòÉ
  30644.  
  30645. specifiers 
  30646.  
  30647. Used in declarations to indicate storage class, fundamental data type and other 
  30648. properties of the object or function being declared. 
  30649.  
  30650.  
  30651. ΓòÉΓòÉΓòÉ 5.17.9. standard error (stderr) ΓòÉΓòÉΓòÉ
  30652.  
  30653. standard error (stderr) 
  30654.  
  30655. An output stream usually intended to be used for diagnostic messages. X/Open. 
  30656.  
  30657.  
  30658. ΓòÉΓòÉΓòÉ 5.17.10. standard input (stdin) ΓòÉΓòÉΓòÉ
  30659.  
  30660. standard input (stdin) 
  30661.  
  30662.    1. An input stream usually intended to be used for primary data input. 
  30663.       X/Open. 
  30664.  
  30665.    2. The primary source of data entered into a command. Standard input comes 
  30666.       from the keyboard unless redirection or piping is used, in which case 
  30667.       standard input can be from a file or the output from another command. 
  30668.       IBM. 
  30669.  
  30670.  
  30671. ΓòÉΓòÉΓòÉ 5.17.11. standard output (stdout) ΓòÉΓòÉΓòÉ
  30672.  
  30673. standard output (stdout) 
  30674.  
  30675.    1. An output stream usually intended to be used for primary data output. 
  30676.       X/Open. 
  30677.  
  30678.    2. In the AIX operating system, the primary destination of data coming from 
  30679.       a command. Standard output goes to the display unless redirection or 
  30680.       piping is used, in which case standard output can go to a file or to 
  30681.       another command. IBM. 
  30682.  
  30683.  
  30684. ΓòÉΓòÉΓòÉ 5.17.12. statement ΓòÉΓòÉΓòÉ
  30685.  
  30686. statement 
  30687.  
  30688. An instruction that ends with the character ; (semicolon) or several 
  30689. instructions that are surrounded by the characters { and }. 
  30690.  
  30691.  
  30692. ΓòÉΓòÉΓòÉ 5.17.13. static ΓòÉΓòÉΓòÉ
  30693.  
  30694. static 
  30695.  
  30696. A keyword used for defining the scope and linkage of variables and functions. 
  30697. For internal variables, the variable has block scope and retains its value 
  30698. between function calls. For external values, the variable has file scope and 
  30699. retains its value within the source file. For class variables, the variable is 
  30700. shared by all objects of the class and retains its value within the entire 
  30701. program. 
  30702.  
  30703.  
  30704. ΓòÉΓòÉΓòÉ 5.17.14. stream ΓòÉΓòÉΓòÉ
  30705.  
  30706. stream 
  30707.  
  30708.    1. A continuous stream of data elements being transmitted, or intended for 
  30709.       transmission, in character or binary-digit form, using a defined format. 
  30710.  
  30711.    2. A file access object that allows access to an ordered sequence of 
  30712.       characters, as described by the ISO C standard. Such objects can be 
  30713.       created by the fdopen or fopen functions, and are associated with a file 
  30714.       descriptor. A stream provides the additional services of user-selectable 
  30715.       buffering and formatted input and output. X/Open. 
  30716.  
  30717.  
  30718. ΓòÉΓòÉΓòÉ 5.17.15. stream buffer ΓòÉΓòÉΓòÉ
  30719.  
  30720. stream buffer 
  30721.  
  30722. A stream buffer is a buffer between the ultimate consumer, ultimate producer, 
  30723. and the I/O Stream Library functions that format data. It is implemented in the 
  30724. I/O Stream Library by the streambuf class and the classes derived from 
  30725. streambuf. 
  30726.  
  30727.  
  30728. ΓòÉΓòÉΓòÉ 5.17.16. string ΓòÉΓòÉΓòÉ
  30729.  
  30730. string 
  30731.  
  30732. A contiguous sequence of bytes including and terminated by the first null byte. 
  30733. X/Open. 
  30734.  
  30735.  
  30736. ΓòÉΓòÉΓòÉ 5.17.17. string constant ΓòÉΓòÉΓòÉ
  30737.  
  30738. string constant 
  30739.  
  30740. Zero or more characters enclosed in double quotation marks. 
  30741.  
  30742.  
  30743. ΓòÉΓòÉΓòÉ 5.17.18. struct ΓòÉΓòÉΓòÉ
  30744.  
  30745. struct 
  30746.  
  30747. An aggregate of elements, having arbitrary types. 
  30748.  
  30749.  
  30750. ΓòÉΓòÉΓòÉ 5.17.19. structure ΓòÉΓòÉΓòÉ
  30751.  
  30752. structure 
  30753.  
  30754. A construct (a class data type) that contains an ordered group of data objects. 
  30755. Unlike an array, the data objects within a structure can have varied data 
  30756. types. A structure can be used in all places a class is used. The initial 
  30757. projection is public. 
  30758.  
  30759.  
  30760. ΓòÉΓòÉΓòÉ 5.17.20. subsystem ΓòÉΓòÉΓòÉ
  30761.  
  30762. subsystem 
  30763.  
  30764. A secondary or subordinate system, usually capable of operating independently 
  30765. of or asynchronously with, a controlling system. (T). 
  30766.  
  30767.  
  30768. ΓòÉΓòÉΓòÉ 5.17.21. support ΓòÉΓòÉΓòÉ
  30769.  
  30770. support 
  30771.  
  30772. In system development, to provide the necessary resources for the correct 
  30773. operation of a functional unit. IBM. 
  30774.  
  30775.  
  30776. ΓòÉΓòÉΓòÉ 5.18. T ΓòÉΓòÉΓòÉ
  30777.  
  30778.  
  30779. ΓòÉΓòÉΓòÉ 5.18.1. text file ΓòÉΓòÉΓòÉ
  30780.  
  30781. text file 
  30782.  
  30783. A file that contains characters organized into one or more lines. The lines 
  30784. must not contain NUL characters and none can exceed {LINE_MAX}-which is defined 
  30785. in limits.h-bytes in length, including the new-line character. The term text 
  30786. file does not prevent the inclusion of control or other non-printable 
  30787. characters (other than NUL). X/Open. 
  30788.  
  30789.  
  30790. ΓòÉΓòÉΓòÉ 5.18.2. this ΓòÉΓòÉΓòÉ
  30791.  
  30792. this 
  30793.  
  30794. A C++ keyword that identifies a special type of pointer in a member function, 
  30795. that references the class object with which the member function was invoked. 
  30796.  
  30797.  
  30798. ΓòÉΓòÉΓòÉ 5.18.3. thread ΓòÉΓòÉΓòÉ
  30799.  
  30800. thread 
  30801.  
  30802. The smallest unit of operation to be performed within a process. IBM. 
  30803.  
  30804.  
  30805. ΓòÉΓòÉΓòÉ 5.18.4. tilde ΓòÉΓòÉΓòÉ
  30806.  
  30807. tilde 
  30808.  
  30809. The character ~. This character is named <tilde> in the portable character set. 
  30810.  
  30811.  
  30812. ΓòÉΓòÉΓòÉ 5.18.5. token ΓòÉΓòÉΓòÉ
  30813.  
  30814. token 
  30815.  
  30816. The smallest independent unit of meaning of a program as defined either by a 
  30817. parser or a lexical analyzer. A token can contain data, a language keyword, an 
  30818. identifier, or other parts of language syntax. IBM. 
  30819.  
  30820.  
  30821. ΓòÉΓòÉΓòÉ 5.18.6. trap ΓòÉΓòÉΓòÉ
  30822.  
  30823. trap 
  30824.  
  30825. An unprogrammed conditional jump to a specified address that is automatically 
  30826. activated by hardware. A recording is made of the location from which the jump 
  30827. occurred. (I). 
  30828.  
  30829.  
  30830. ΓòÉΓòÉΓòÉ 5.18.7. type ΓòÉΓòÉΓòÉ
  30831.  
  30832. type 
  30833.  
  30834. The description of the data and the operations that can be performed on or by 
  30835. the data.  See also data type. 
  30836.  
  30837.  
  30838. ΓòÉΓòÉΓòÉ 5.18.8. type conversion ΓòÉΓòÉΓòÉ
  30839.  
  30840. type conversion 
  30841.  
  30842. Synonym for boundary alignment. 
  30843.  
  30844.  
  30845. ΓòÉΓòÉΓòÉ 5.18.9. type definition ΓòÉΓòÉΓòÉ
  30846.  
  30847. type definition 
  30848.  
  30849. A definition of a name for a data type. IBM. 
  30850.  
  30851.  
  30852. ΓòÉΓòÉΓòÉ 5.18.10. type specifier ΓòÉΓòÉΓòÉ
  30853.  
  30854. type specifier 
  30855.  
  30856. Used to indicate the data type of an object or function being declared. 
  30857.  
  30858.  
  30859. ΓòÉΓòÉΓòÉ 5.19. U ΓòÉΓòÉΓòÉ
  30860.  
  30861.  
  30862. ΓòÉΓòÉΓòÉ 5.19.1. underflow ΓòÉΓòÉΓòÉ
  30863.  
  30864. underflow 
  30865.  
  30866.    1. A condition that occurs when the result of an operation is less than the 
  30867.       smallest possible nonzero number. 
  30868.  
  30869.    2. Synonym for arithmetic underflow, monadic operation. IBM. 
  30870.  
  30871.  
  30872. ΓòÉΓòÉΓòÉ 5.19.2. union ΓòÉΓòÉΓòÉ
  30873.  
  30874. union 
  30875.  
  30876.    1. In the C or C++ language, a variable that can hold any one of several 
  30877.       data types, but only one data type at a time. IBM. 
  30878.  
  30879.    2. For bags, there is an additional rule for duplicates: If bag P contains 
  30880.       an element m times and bag Q contains the same element n times, then the 
  30881.       union of P and Q contains that element m+n times. 
  30882.  
  30883.  
  30884. ΓòÉΓòÉΓòÉ 5.20. V ΓòÉΓòÉΓòÉ
  30885.  
  30886.  
  30887. ΓòÉΓòÉΓòÉ 5.20.1. variable ΓòÉΓòÉΓòÉ
  30888.  
  30889. variable 
  30890.  
  30891. In programming languages, a language object that may take different values, one 
  30892. at a time. The values of a variable are usually restricted to a certain data 
  30893. type. (I). 
  30894.  
  30895.  
  30896. ΓòÉΓòÉΓòÉ 5.21. W ΓòÉΓòÉΓòÉ
  30897.  
  30898.  
  30899. ΓòÉΓòÉΓòÉ 5.21.1. while statement ΓòÉΓòÉΓòÉ
  30900.  
  30901. while statement 
  30902.  
  30903. A looping statement that contains the keyword while followed by an expression 
  30904. in parentheses (the condition) and a statement (the action). IBM. 
  30905.  
  30906.  
  30907. ΓòÉΓòÉΓòÉ 5.21.2. white space ΓòÉΓòÉΓòÉ
  30908.  
  30909. white space 
  30910.  
  30911.    1. Space characters, tab characters, form-feed characters, and new-line 
  30912.       characters. 
  30913.  
  30914.    2. A sequence of one or more characters that belong to the space character 
  30915.       class as defined via the LC_CTYPE category in the current locale. In the 
  30916.       POSIX locale, white space consists of one or more blank characters (space 
  30917.       and tab characters), new-line characters, carriage-return characters, 
  30918.       form-feed characters, and vertical-tab characters. X/Open. 
  30919.  
  30920.  
  30921. ΓòÉΓòÉΓòÉ 5.21.3. wide character ΓòÉΓòÉΓòÉ
  30922.  
  30923. wide character 
  30924.  
  30925. A character whose range of values can represent distinct codes for all members 
  30926. of the largest extended character set specified among the supporting locales. 
  30927.  
  30928.  
  30929. ΓòÉΓòÉΓòÉ 5.21.4. wide-character string ΓòÉΓòÉΓòÉ
  30930.  
  30931. wide-character string 
  30932.  
  30933. A contiguous sequence of wide-character codes including and terminated by the 
  30934. first null wide-character code. X/Open. 
  30935.  
  30936.  
  30937. ΓòÉΓòÉΓòÉ 5.21.5. working directory ΓòÉΓòÉΓòÉ
  30938.  
  30939. working directory 
  30940.  
  30941. Synonym for current working directory.