1 / 25

Text and Binary File Processing

Text and Binary File Processing. 程式設計 潘仁義 CCU COMM. User Program. C Library. OS File System. File. C File I/O Overview(1/3). C File I/O Overview(3/3). - stdio.h 與檔案相關之函式 -. 12.1 Input and Output Files, Review. text file a named collection of characters saved in secondary storage

sveta
Download Presentation

Text and Binary File Processing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Text and Binary File Processing 程式設計 潘仁義 CCU COMM

  2. User Program C Library OS File System File C File I/O Overview(1/3)

  3. C File I/O Overview(3/3) - stdio.h 與檔案相關之函式-

  4. 12.1 Input and Output Files, Review • text file • a named collection of characters saved in secondary storage • input (output) stream • continuous stream of character codes representing textual input (or output) data • (FILE *) stdin • system file pointer for keyboard’s input stream • (FILE *) stdout, stderr • system file pointers for screen’s output stream

  5. TABLE 12.2Placeholders for printf Format Strings

  6. TABLE 12.1 Meanings of Common Escape Sequences 語言

  7. TABLE 12.4 Comparison of I/O with Standard Files and I/O with User-Defined File Pointers

  8. Figure 12.1 Program to Make a Backup Copy of a Text File

  9. Figure 12.1 Program to Make a Backup Copy of a Text File (cont’d) 可以換成feof( inp)嗎? 不行,還是有點不一樣

  10. Figure 12.2 Input and Output Streams for File Backup Program

  11. File Open Mode

  12. 12.2 Binary Files • Formatted Text files • contain variable length records • must be accessed sequentially, processing all records from the start of file to access a particular record • Binary Files (random access file) • a file containing binary numbers that are the computer’s internal representation of each file component • contain fixed length records • can be accessed directly, directly accessing the record that is required • Binary files are appropriate for online transaction processing systems, • e.g. airline reservation, order processing, banking systems, • sizeof • operator that finds the number of bytes used for storage of a data type

  13. The Data Hierarchy • Bit - smallest data item • Value of 0 or 1 • Byte – 8 bits • Used to store a character • Decimal digits, letters, and special symbols • Field - group of characters conveying meaning • Example: your name • Record– group of related fields • Represented astruct or a class • Example: In a payroll system, a record for a particular employee that contained his/her identification number, name, address, etc. • File– group of related records • Example: payroll file • Database – group of related files

  14. In a Random Access File … • Data • Data unformatted (stored as "raw bytes") in random access files • All data of the same type (ints, for example) use the same memory • All records of the same type have a fixed length • Data not human readable

  15. Random Access • Access individual records without searching through other records • Instant access to records in a file • Data can be inserted without destroying other data • Data previously stored can be updated or deleted without overwriting. • Implemented using fixed length records • Sequential files do not have fixed length records

  16. Random Access a File -- fread () • fread --Transfer bytes from a file to a location in memory • Function fread requires four arguments • ret = fread(buffer, size, num, myptr); • the number of objects read • buffer: Address of first memory cell to fill • size: Size of one value • num: Maximum number of elements to copy from the file into memory • myptr: File pointer to a binary file opened in mode “rb” using function fopen How to distinguish error and EOF? feof ( ), ferror( )

  17. Random Access a File – fwrite() • fwrite - Transfer bytes from a location in memory to a file • fwrite( &number, sizeof( int ), 1, myPtr ); • &number - Location to transfer bytes from • sizeof( int ) - Number of bytes to transfer • 1 - For arrays, number of elements to transfer • In this case, "one element" of an array is being transferred • myPtr - File to transfer to or from

  18. Random Access a File – fwrite() (II) • Writing structs fwrite( &myObject, sizeof (struct myStruct), 1, myPtr ); • sizeof - Returns size in bytes of object in parentheses • To write several array elements • Pointer to array as first argument • Number of elements to write as third argument

  19. Figure 12.3 Creating a Binary File of Integers

  20. 目前存取位置 位移後 file offset origin: SEEK_SET SEEK_CUR SEEK_END Access Data Randomly in a Random Access File • fseek • Sets file position pointer to a specific position • fseek( myPtr, offset, symbolic_constant); • myPtr- pointer to file • offset - file position pointer (0 is first location) • symbolic_constant - specifies where in file we are reading from • SEEK_SET - seek starts at beginning of file • SEEK_CUR - seek starts at current location in file • SEEK_END - seek starts at end of file • ftell • Return the current position in a stream • ftell( myptr) • myPtr- pointer to file

  21. 12.3 SEARCHING A DATABASE • database • a vast electronic file of information that can be quickly searched using subject headings or keywords • 本節請自修, 寫作業時可參考

  22. 12.4 COMMON PROGRAMMING ERRORS(1/2) • Remember to declare a file pointer variable (type FILE *) for each file you want to process • fscanf, fprintf, getc and putc must be used for text I/O only • fread andfwrite are applied exclusively to binary files • getc, fscanf and fprintftake the file pointer as their first argument • getc, putc, fread and fwrite take the file pointer as their last argument

  23. 12.4 COMMON PROGRAMMING ERRORS (2/2) • Opening a file for output by calling fopen with a second argument of “w” or “wb” typically results in a loss of any existing file whose name matches the first argument • Binary files cannot be created, viewed, or modified using an editor or word processor program • Depending on OS, a read cannot follow a write, a write cannot follow a read, except using a fseek(fp, 0, SEEK_CUR) between them

  24. Ch.12 之番外篇 • 懶惰的C語言 • 讀取失敗了, 再來看原因是什麼 (別的語言不一定要等到讀失敗) • getc( )的EOF, fread的傳回0 • 用feof( ), ferror( )可分辨是 檔案結束 或是 讀取錯誤 • 想知道檔案的大小嗎? • fseek( ) + ftell( ) • stat(), fstat( ), struct stat {... st_size;…}; • +模式的陷阱 • 交互讀寫可能會有奇怪的現象 • man fopen • Reads and writes may be intermixed on read/write streams in any order, and do not require an intermediate seek as in previous versions of stdio. • This is not portable to other systems, however; ANSI C requires that a file positioning function intervene between output and input, unless an input operation encounters end-of-file.

More Related