Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu

Content

 Introduction

 Declare files

 Open and close files

 Store and retrieve data from files

 Use macros

 Summary

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 1

Trang 1

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 2

Trang 2

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 3

Trang 3

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 4

Trang 4

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 5

Trang 5

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 6

Trang 6

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 7

Trang 7

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 8

Trang 8

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 9

Trang 9

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 38 trang xuanhieu 3940
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu

Bài giảng Introduction to Computer Programming (C language) - Chapter 9: File Processing - Võ Thị Ngọc Châu
 Ho Chi Minh City University of Technology 
 Faculty of Computer Science and Engineering 
Chapter 9: File Processing 
Introduction to Computer Programming 
 (C language) 
 TS. Võ Thị Ngọc Châu 
 (chauvtn@cse.hcmut.edu.vn, 
 chauvtn@hcmut.edu.vn) 
 2017 – 2018, Semester 2 
Course Content 
 C.1. Introduction to Computers and 
 Programming 
 C.2. C Program Structure and its 
 Components 
 C.3. Variables and Basic Data Types 
 C.4. Selection Statements 
 C.5. Repetition Statements 
 C.6. Functions 
 C.7. Arrays 
 C.8. Pointers 
 C.9. File Processing 2 
 References 
 [1] “C: How to Program”, 7th Ed. – Paul 
 Deitel and Harvey Deitel, Prentice Hall, 2012. 
 [2] “The C Programming Language”, 2nd Ed. 
 – Brian W. Kernighan and Dennis M. Ritchie, 
 Prentice Hall, 1988 
 and others, especially those on the Internet 
 3 
Content 
 Introduction 
 Declare files 
 Open and close files 
 Store and retrieve data from files 
 Use macros 
 Summary 
 4 
 Recall – Chapter 3 and Chapter 8 
 Memory layout of a C program 
 Higher address 
 Command-line arguments 
 and environment variables 
Local variables, arguments, Stack 
grown/shrunk with function calls 
Grown/shrunk with dynamic 
allocation and de-allocation Heap 
Uninitialized (static) global Uninitialized data Initialized to 
variables, static local variables .bss zero by exec 
Initialized (static) global variables, Initialized data Read from 
static local variables, constants 
 .data program file 
Machine code, often read-only Code by exec 
 .text 
 Lower address 
 bss = block started by symbol, better save space 
 Introduction 
 Data (input, output, supporting) in memory 
  Temporary as lost when a program terminates !!! 
 Can we have permanent data before and 
 after program execution? 
 Files on secondary storage devices (hard 
 drives, CDs, DVDs, flash drives, ) 
 6 
Introduction 
 Files on hard drives 
 data1.txt 
 data2.txt 
 7 
 Introduction 
Figure 11.1. Data hierarchy 
[1], pp. 419 8 
 Introduction 
 C views each file as a sequential stream of bytes. 
 Each file ends either with an end-of-file marker or at 
 a specific byte number recorded in a system-
 maintained, administrative data structure. 
  end-of-file: ctrl-z (Windows), ctrl-d (Linux/Mac OS X/Unix) 
 When a file is opened, a stream is associated with the 
 file. 
 Streams provide communication channels between 
 files and programs. 
Figure 11.2. C’s view of a file of n bytes 
[1], pp. 420 9 
 Introduction 
 C views each file as a sequential stream of 
 bytes. 
  Fixed-length records stored in a random-access file 
  The exact location of a record relative to the 
 beginning of the file 
 Figure 11.10: C’s view of a random-access file 
 [1], pp. 431 10 
Introduction 
 Operations on files 
  Create 
  Open 
  Read 
  Write (write a new file, append an existing file) 
  Close 
 Access to files in C for processing 
  Sequential access to a sequential stream of bytes 
  Random access to a stream of fixed-size records 
 11 
Introduction 
 The standard library: 
 FILE *fopen(const char *filename, const char *mode) 
 FILE *freopen(const char *filename, const char *mode, 
 FILE *stream) 
 int fclose(FILE *stream) 
 size_t fread(void *ptr, size_t size, size_t nmemb, FILE 
 *stream) 
 int fgetc(FILE *stream) 
 char *fgets(char *str, int n, FILE *stream) 
 int fscanf(FILE *stream, const char *format, ...) 
 size_t fwrite(const void *ptr, size_t size, size_t nmemb, 
 FILE *stream) 
 int fputc(int char, FILE *stream) 
 int fputs(const char *str, FILE *stream) 
 12 
 int fprintf(FILE *stream, const char *format, ...) 
 Declare files 
 Each file communicated with C program via a 
 stream controlled by a pointer of FILE 
 identifier: a valid identifier for a pointer 
 FILE* identifier; pointing to a file stream 
 FILE: an object type suitable for storing 
 FILE* pFile1; information for a file stream, defined in 
 the standard library 
 FILE* pFile2 = 0; 
 FILE*: a pointer type of FILE type 
 FILE* pFile3 = NULL; 
 A file pointer will be associated with a file 
 stream once a file is opened. 
 13 
Open and close files 
 Open files 
  FILE *fopen(const char *filename, const char 
 *mode) 
 Opens the file pointed to by filename using the given 
 opening mode. 
 pFile1 = fopen("Data.txt", "r"); 
 Close files 
  int fclose(FILE *stream) 
 Closes the stream. All buffers are flushed. 
 fclose(pFile1); 
 14 
 Open and close files 
 Open files 
  Filename = "Data.txt" 
 Located in the current directory 
  Filename = ".\\Data\\Data.txt" 
 Located in the sub-directory of the current directory 
  Filename = "..\\Data.txt" 
 Located in the super-directory of the current directory 
  Filename = "D:\\CS - Introduction to Computer 
 Programming - CO1003 - Undergraduate 
 course\\Code samples\\Data\\Data.txt" 
 Located in the specified directory with the absolute path 
   15 
Open and close files 
 File opening modes 
 16 
Store and retrieve data from files 
 Store data into files (write) 
  A sequence of bytes from memory to the file 
 The file plays a role of stdout. 
 Retrieve data from files (read) 
  A sequence of bytes from the files to memory 
 The file plays a role of stdin. 
What bytes? Read (file -> memory) Write (memory -> file) 
A char fgetc fputc 
A line of bytes fgets fputs 
Formatted bytes fscanf fprintf 
Bytes in the fread fwrite 
binary mode 17 
Store and retrieve data from files 
 18 
Store and retrieve data from files 
 19 
Store and retrieve data from files 
What bytes? Read (file -> memory) Write (memory -> file) 
A char fgetc fputc 
char aChar; aChar = fgetc(pFile1); fputc('a', pFile1); 
A line of bytes fgets fputs 
char aStr[50]; fgets(aStr, 50, pFile1); fputs("Today?", pFile1); 
Formatted bytes fscanf fprintf 
int anInt; fscanf(pFile1, "%d %c fprintf(pFile1, "%d %d 
char aChar; %f", &anInt, &aChar, %c %f", 10, anInt, aChar, 
float aFloat; &aFloat); aFloat); 
Bytes in the fread fwrite 
binary mode 
char buffer[50]; fread(buffer, fwrite(buffer, 
 sizeof(int)+sizeof(char)+si strlen(buffer)+1, 1, 
 zeof(float)+1, 5, pFile1); pFile1); 
 20 
 Process the grades of each student 
Put them all togetherin a file for their averaged grades. 
 21 
 Process the grades of each student 
 in a file for their averaged grades. 
Put them all togetherWrite the resulting averaged grades 
 into another file. 
 22 
 Input data file 
Put them all together 
 Output data file in the binary mode 
 Output data file 
 in the formatted 
 mode 
 23 
Output data file in the binary mode 
 Output data file in 
 the formatted mode 
 24 
 Use macros 
 Macro 
  An identifier in #define preprocessor directive 
 #define identifier replacement-text 
 identifier: a valid identifier scoped from its definition to the 
 end of the file or to the #undef directive 
 replacement-text: text on the line or longer text on many 
 lines with a backslash (\) 
  Considered as operations defined as symbols 
 With no argument processed like a symbolic constant 
 With arguments processed like an inline function 
 . Arguments are substituted in the replacement text 
 . The replacement text then replaces the identifier and 
 argument list in the program 25 
 Use macros 
 #define identifier replacement-text 
 User-defined macros 
 Parentheses need using for 
 correct value determination. 
 26 
Use macros 
 #define identifier replacement-text 
#define CIRCUMFERENCE(radius) (2*PI*(radius)) 
 r=1.5 
CIRCUMFERENCE(r+1) = (2*PI*(r+1)) = 15.71  
 VS. 
#define CIRCUMFERENCE(radius) (2*PI*radius) 
 r=1.5 
CIRCUMFERENCE(r+1) = (2*PI*r+1) = 10.42 X 
 27 
Use macros 
 #define identifier replacement-text 
#define DIAMETER(radius) ((radius) + (radius)) 
CIRCUMFERENCE = PI*DIAMETER(r+1) r=1.5 
 = PI*((r+1)+(r+1)) = 15.71  
 VS. 
#define DIAMETER(radius) (radius) + (radius) 
CIRCUMFERENCE = PI*DIAMETER(r+1) r=1.5 
 = PI*(r+1)+(r+1) = 10.35 X 
 28 
 Use macros 
 Conditional compilation up to macro definition 
  control the execution of preprocessor directives 
 and the compilation of program code 
 #ifdef identifier //if identifier is defined, consider the following code 
 #endif 
 #ifdef identifier //if identifier is defined, consider the following code 
 #else //else consider the following code 
 #endif 
 #ifdef identifier //if identifier is defined, consider the following code 
 #elif constant-expression 
 #endif 
 #ifndef identifier //if identifier is not defined, consider the following code 
 #endif 
 #undef identifier //remove the definition of identifier 29 
Use macros – Conditional compilation 
 Recall – Chapter 6 – Functions 
 Header file: mynumber.h 
 30 
 Use macros 
 Many macros predefined in the standard 
 library files 
  
 FLT_MIN: the minimum finite floating-point value 
 FLT_MAX: the maximum finite floating-point value 
  
 INT_MIN: the minimum value for an int with 2 bytes 
 INT_MAX: the maximum value for an int with 2 bytes 
  
 LC_ALL: sets everything with the location specific settings 
 LC_CTYPE: affects all the character functions with settings 
 31 
 Use macros 
 Many macros predefined in the standard 
 library files 
  
 The stdarg.h header defines a variable type va_list and 
 three following macros which can be used to get the 
 arguments in a function when the number of arguments 
 are not known i.e. variable number of arguments. 
 . void va_start(va_list ap, last_arg) 
 . type va_arg(va_list ap, type) 
 . void va_end(va_list ap) 
 A function of variable arguments is defined with the 
 ellipsis (,...) at the end of the parameter list. 
 32 
 Use macros - 
 va_list 
 A type whose variable ap is used for holding information 
 about the arguments 
 void va_start(va_list ap, last_arg) 
 The macro initializes ap variable to be used with the va_arg 
 and va_end macros. The last_arg is the last known fixed 
 argument being passed to the function i.e. the argument 
 before the ellipsis. 
 type va_arg(va_list ap, type) 
 The macro retrieves the next argument in the parameter list 
 of the function with type type. 
 void va_end(va_list ap) 
 The macro allows a function with variable arguments which 
 used the va_start macro to return. If va_end is not called 
 before returning from the function, the result is undefined. 
 33 
 Use macros - 
Define the function isSubstring to check if a substring is contained 
by a list of given strings. 
 34 
Use macros - 
 Variable ap is required to have an 
 access to each argument in the 
 argument list after this point. 
 This macro is required to start 
 the access to the argument list. 
 This macro is required to have an 
 access to an actual argument of 
 type char* in the argument list. 
 This macro is required to end the 
 access to the argument list before 
 the return of the function. 35 
Summary 
 File processing in C 
  Allows data permanency 
  Performs with the standard functions in the 
 library 
 Open/Close 
 Read/Write/Append 
  Supports two access schemes 
 Sequential access 
 Random access 
 36 
 Summary 
 Macros in the #define preprocessor directive 
  User-defined macros vs. Macros in the libraries 
  Conditional compilation based on macro 
 definitions 
  Examples with macros in the for 
 functions with the variable numbers of arguments 
 37 
Chapter 9: File Processing 
 38 

File đính kèm:

  • pdfbai_giang_introduction_to_computer_programming_c_language_ch.pdf