How To Use fopen() to Append Data to File Terminated w/ CTRL+Z (29852)



The information in this article applies to:

  • The C Run-Time (CRT), when used with:
    • Microsoft C for MS-DOS 5.1
    • Microsoft C for MS-DOS 6.0
    • Microsoft C for MS-DOS 6.0a
    • Microsoft C for MS-DOS 6.0ax
    • Microsoft C/C++ for MS-DOS 7.0
    • Microsoft Visual C++ 1.0
    • Microsoft Visual C++ 1.5
    • Microsoft Visual C++ 1.51
    • Microsoft Visual C++ 1.52
    • Microsoft Visual C++, 32-bit Learning Edition 4.0
    • Microsoft Visual C++, 32-bit Professional Edition 2.0
    • Microsoft Visual C++, 32-bit Professional Edition 2.1
    • Microsoft Visual C++, 32-bit Professional Edition 4.0

This article was previously published under Q29852

SUMMARY

When data need to be appended to a stream file that is terminated with the CTRL+Z end-of-file (EOF) marker (ASCII 1Ah), use fopen() with an access mode of "a+" to open the stream. This will ensure that all data appended to the stream are accessible after the stream is closed.

MORE INFORMATION

If fopen() is called with the "a+" mode, the operations of reading from and writing to the opened stream file are valid. Before any data are appended, the C Run-time reads the file and deletes the end-of-file marker. However, if fopen() is called with the "a" mode, only the operation of writing to the opened file is valid. The C Run-time must seek to the end of the file and append characters after the end-of-file marker, CTRL+Z.

When displaying the contents of a text file, the MS-DOS and Windows NT TYPE commands stop upon encountering a CTRL+Z character. Certain editors such as Edlin and WordStar also ignore all characters after the first CTRL+Z in a file. Consequently, if text is appended after the CTRL+Z end-of-file marker, it may not be viewable.

Modification Type:MinorLast Reviewed:7/13/2004
Keywords:kbCRT kbhowto KB29852