The POSIX standard defines the write() interface as follows [1].
ssize_t write (int filedes, const void *buffer, size_t size);
The write function writes up to size bytes from buffer to the file with descriptor filedes. The data in buffer is not necessarily a character string and a null character is output like any other character.
The definition does not state that the write() function will stop copying characters into the file if a null character is encountered. Therefore, when writing a C string in to a file using the write() function, always use the size of the buffer string plus 1 (for the null character) as the size parameter.
Noncompliant Code Example
Compliant Code Example
References
[1] http://www.gnu.org/software/libc/manual/html_node/I_002fO-Primitives.html#I_002fO-Primitives![]()