Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Text and Binary File Processing 程式設計 潘仁義 CCU COMM."— Presentation transcript:

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

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

3 C File I/O Overview(3/3) - stdio.h 與檔案相關之函式 - 開啟檔案 FILE *fopen( const char *filename, const char *mode); 存取檔案 int fgetc( FILE *fp ); int fputc( int c, FILE *fp ); int fprintf( FILE *fp, const char *format, … ); int fscanf( FILE *fp, const char *format, … ); size_t fread(void *ptr, size_t size, size_t n, FILE *fp ); size_t fwrite(const void *ptr, size_t, size_t n, FILE *fp ); char *fgets( char *s, int n FILE *fp ); int fputs( const char *s, FILE *fp); int fseek( FILE *fp, long offset, int whence); long ftell( FILE *fp ); Int feof(FILE *fp); … 關閉檔案 int fclose( FILE *fp);

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.2 Placeholders for printf Format Strings PlaceholderUsed for Output of %ca single character %sa string %dan integer (in base 10) %oan integer (in base 8) %xan integer (in base 16) %fa floating-point number %ea floating-point number in scientific notation %Ea floating-point number in scientific notation %a single % sign

6 TABLE 12.1 Meanings of Common Escape Sequences Escape SequenceMeaning ‘\n’new line ‘\t’tab ‘\f’form feed (new page) ‘\r’return (go back to column 1 of current output line) ‘\b’backspace

7 TABLE 12.4 Comparison of I/O with Standard Files and I/O with User-Defined File Pointers LineFunctions That Access stdin and stdout Functions That Can Access Any Text File 1scanf(“%d”, &num);fscanf(infilep,“%d”, &num); 2printf(“Number=%d\n”,num);fprintf(outfilep, “Number=%d\n”,num); 3ch=getchar();ch=getc(infilep); 4putchar(ch);putc(ch,outfilep);

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 a struct 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 ( int s, for example) use the same memory All records of the same type have a fixed length Data not human readable

15

16 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

17 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?

18 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

19 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

20 Figure 12.3 Creating a Binary File of Integers

21 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 SEEK_SETSEEK_CURSEEK_END origin: 目前存取位置位移後 offset file

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

23 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 and fwrite are applied exclusively to binary files fscanf, fprintf and getc take the file pointer as their first argument putc, fread and fwrite take the file pointer as their last argument

24 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 feek(SEEK_CUR, 0) between them


Download ppt "Text and Binary File Processing 程式設計 潘仁義 CCU COMM."

Similar presentations


Ads by Google