SlideShare a Scribd company logo
Programming in C
Objectives


                In this session, you will learn to:
                   Differentiate between high-level and low-level input/output
                   Work with low-level input/output functions
                   Use random access in files




     Ver. 1.0                                                              Slide 1 of 22
Programming in C
Differentiating Between High-Level and Low-Level Input/Output


                In C, files and devices can be accessed by using two
                groups of functions:
                   High-level I/O or stream-level I/O
                   Low-level I/O




     Ver. 1.0                                                          Slide 2 of 22
Programming in C
Difference Between High-level I/O and Low-level I/O


                High-level or Stream-level I/O:
                   Is more flexible and convenient.
                   Hides complexity from the programmer.
                   Is slower.
                Low-level I/O:
                   Provides direct access to files and devices.
                   Is complex (buffer management is to be done by the
                   programmer).
                   Is faster.
                   Uses a file descriptor to track the status of the file.




     Ver. 1.0                                                                Slide 3 of 22
Programming in C
Practice: 8.1


                Which of the following statements is true?
                   In C, there are many interfaces between a program and
                   peripheral devices.
                   A file descriptor is a non-negative integer.
                   When you perform an operation on a file, the system uses the
                   name of the file to identify it.




     Ver. 1.0                                                           Slide 4 of 22
Programming in C
Practice: 8.1 (Contd.)


                Solution:
                 – A file descriptor is a non-negative integer.




     Ver. 1.0                                                     Slide 5 of 22
Programming in C
Uses of Low-Level Input/Output


                Low-level I/O functions are used for:
                   Accessing files and devices directly.
                   Reading binary files in large chunks.
                   Performing I/O operations quickly and efficiently.




     Ver. 1.0                                                           Slide 6 of 22
Programming in C
Working with Low-Level Input/Output Functions


                The low-level I/O system in C provides functions that can be
                used to access files and devices.
                The basic low-level I/O functions are:
                   open()
                   close()
                   read()
                   write()




     Ver. 1.0                                                        Slide 7 of 22
Programming in C
The open() Function


                •   The open() function:
                       Is used to open an existing file or create a new file.
                       Returns a file descriptor for the file name passed to it.
                       Has the following syntax:
                         int open(char *filename, int flags, int perms
                       );




     Ver. 1.0                                                            Slide 8 of 22
Programming in C
The close() Function


                •   The close() function:
                    –   Closes the file that was opened using the open() function.
                    –   Takes the file descriptor as a parameter to close the file.
                    –   Returns 0 on success and -1 in case of an error.
                    –   Has the following syntax:
                         int close(int filedes);




     Ver. 1.0                                                                  Slide 9 of 22
Programming in C
The read() function


                •   The read() function:
                       Reads data from a file.
                       Starts reading a file from the current file position.
                       Has the following syntax:
                       int read (int filedes, char *buffer, int
                       size);




     Ver. 1.0                                                                  Slide 10 of 22
Programming in C
The write() function


                •   The write() function:
                       Enables a user to write contents to a file.
                       Has the following syntax:
                       int write (int filedes, char *buffer, int
                       size);




     Ver. 1.0                                                    Slide 11 of 22
Programming in C
Practice: 8.2


                1. Which of the following statements is true?
                     – At end-of-file, if a function is called repeatedly, it will give error.
                     – In a read() function, the value of zero indicates end-of-file.
                •   What will happen if you do not call the write() function in
                    a loop?




     Ver. 1.0                                                                       Slide 12 of 22
Programming in C
Practice: 8.2 (Contd.)


                Solution:
                 – In a read() function, the value of zero indicates end-of-file.
                 – If you do not call write() function in a loop then the entire
                   data would not be written.




     Ver. 1.0                                                              Slide 13 of 22
Programming in C
Error Handling


                Error Handling:
                 – Some of the low-level I/O functions return error flags when they
                   fail to perform a specified task.
                 – You can find these types of errors using a variable, errno.
                 – The following table lists some values of errno that are
                   common to the open(), close(), read(), and write()
                   functions.

                      errno values                                Description
                EACCES               Specifies that the program has failed to access one of the directories
                                     in the file.
                ENAMETOOLONG         Indicates that the file name is too long.
                ENOSPC               Specifies that the disc is out of space and the file can not be created.
                EIO                  Specifies that there was a hardware error.
                EBADF                Specifies that the file descriptor passed to read, write, or close the
                                     file is invalid.




     Ver. 1.0                                                                                          Slide 14 of 22
Programming in C
Error Handling (Contd.)


                 – There are certain errno values that are specific to the
                   open() function, which are shown with the help of the
                   following table.
                   errno values                                 Description
                EEXIST            Specifies that if File already exists, and O_CREAT and O_EXCL are
                                  set, then opening the file would conflict with the existing file and the
                                  file will not open.
                EISDIR            Specifies that the file is actually a directory.
                ENOENT            Specifies that some of the file components do not exist.
                EMFILE            Specifies that too many files are open.
                EROFS             Specifies that the file is on a read only systembut either one of the
                                  write permissions O_WRONLY, O_RDWR, or O_TRUNC is set.




     Ver. 1.0                                                                                       Slide 15 of 22
Programming in C
Error Handling (Contd.)


                – There are certain errno values that are specific to the
                  write() function, which are shown with the help of the
                  following table.

                       errno values                       Description
                    EFBIG             Specifies that the file will become too large if the
                                      data is written on it.
                    EINTR             Specifies that the write operation is temporarily
                                      interrupted.




     Ver. 1.0                                                                                Slide 16 of 22
Programming in C
Using Random Access Seek in Files


                •   The read and write operations on files are usually
                    sequential in nature.
                •   Random access permits non-sequential file access so that a
                    file can be read or written out of sequence.
                •   Random access in low-level file routines is performed using
                    the lseek() function.




     Ver. 1.0                                                          Slide 17 of 22
Programming in C
The lseek() Function


                •   The lseek() function:
                       Returns the file position, as measured in bytes from the
                       beginning of the file.
                       Has the following syntax:
                        long lseek (int filedes, long offset, int
                        origin);




     Ver. 1.0                                                               Slide 18 of 22
Programming in C
The lseek() Function (Contd.)


                •   The following table lists the various values of the third
                    parameter (origin).
                         Values for origin                       Description

                        SEEK_SET or 0        Specifies that the offset is relative to the
                                             beginning of the file. The offset can only be
                                             positive.
                        SEEK_CUR or 1        Specifies that the offset is relative to the current
                                             position. The offset can be positive or negative.

                        SEEK_END or 2        Specifies that the offset is relative to the end of
                                             the file. The offset can be positive or negative.




     Ver. 1.0                                                                                       Slide 19 of 22
Programming in C
The lseek() Function (Contd.)


                The following table lists some instructions for moving to the
                end or beginning of a file.

                       Instruction                            Function used
                       To get to the end of a file            lseek(filedes,0,2);
                       To return to the beginning of a file   lseek(filedes,0,0);




     Ver. 1.0                                                                       Slide 20 of 22
Programming in C
Summary


               In this session, you learned that:
                – In C, files and devices can be accessed by using high-level I/O
                  or stream-level I/O and low-level I/O.
                – Low-level I/O functions are those, which provide direct access
                  to files and peripheral devices.
                – A file descriptor is a non-negative integer, which is returned by
                  the open() function and is used in read() and write()
                  functions. It tells about the permission to access the file.
                – Low-level input/output functions are used for the following
                  purposes:
                    • Accessing files and devices directly
                    • Reading the binary files in large chunks
                    • Performing I/O operations quickly and efficiently
                – The open() function is used to open or create a file.



    Ver. 1.0                                                              Slide 21 of 22
Programming in C
Summary (Contd.)


               – The close() function is used for closing the file.
               – The read() function reads the existing file up to specified size
                 and stores it into a character array.
               – The write() function writes on the file taking input from a
                 character array up to specified size.
               – Most of the low-level I/O functions throw errors during file
                 handling.
               – errno is the variable that tells about the error occurred during
                 a low-level I/O operation.
               – Files and devices can also be accessed randomly.
               – The lseek() function is used to place the file position to the
                 desired place.
               – The lseek() function do not require to read or write the file
                 for positioning it.



    Ver. 1.0                                                            Slide 22 of 22

More Related Content

PPS
C programming session 14
PPS
C programming session 11
PDF
SysProg-Tutor 01 Introduction to C Programming Language
PDF
Hs P005 Reflective Dll Injection
PPT
bh-europe-01-clowes
PDF
Java chapter 1
PDF
Java Programming Assignment
PPT
Big Java Chapter 1
C programming session 14
C programming session 11
SysProg-Tutor 01 Introduction to C Programming Language
Hs P005 Reflective Dll Injection
bh-europe-01-clowes
Java chapter 1
Java Programming Assignment
Big Java Chapter 1

What's hot (20)

PDF
Handout#01
PDF
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
PPTX
Reverse code engineering
PDF
iFL: An Interactive Environment for Understanding Feature Implementations
PDF
SOFTWARE TOOL FOR TRANSLATING PSEUDOCODE TO A PROGRAMMING LANGUAGE
PPTX
Revers engineering
PDF
Learning the C Language
PDF
Python reading and writing files
PDF
Toward Understanding How Developers Recognize Features in Source Code from De...
PDF
C Programming - Refresher - Part IV
ODP
LD_PRELOAD Exploitation - DC9723
PDF
SysProg-Tutor 02 Introduction to Unix Operating System
PPT
Embedded _c_
PDF
Unit 2 introduction to c programming
PDF
SysProg-Tutor 03 Unix Shell Script Programming
PPTX
Chapter 2
PDF
Introduction to Level Zero API for Heterogeneous Programming : NOTES
PPT
Introduction to programming with c,
PPT
Digital design with Systemc
PPTX
7 compiler lab
Handout#01
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Reverse code engineering
iFL: An Interactive Environment for Understanding Feature Implementations
SOFTWARE TOOL FOR TRANSLATING PSEUDOCODE TO A PROGRAMMING LANGUAGE
Revers engineering
Learning the C Language
Python reading and writing files
Toward Understanding How Developers Recognize Features in Source Code from De...
C Programming - Refresher - Part IV
LD_PRELOAD Exploitation - DC9723
SysProg-Tutor 02 Introduction to Unix Operating System
Embedded _c_
Unit 2 introduction to c programming
SysProg-Tutor 03 Unix Shell Script Programming
Chapter 2
Introduction to Level Zero API for Heterogeneous Programming : NOTES
Introduction to programming with c,
Digital design with Systemc
7 compiler lab
Ad

Viewers also liked (7)

PPS
C programming session 04
PPS
C programming session 05
PPS
C programming session 02
PPS
C programming session 16
PPS
C programming session 08
PPS
C programming session 10
PPS
C programming session 07
C programming session 04
C programming session 05
C programming session 02
C programming session 16
C programming session 08
C programming session 10
C programming session 07
Ad

Similar to C programming session 14 (20)

PDF
Debug tutorial
PPTX
Linux Systems Programming: File Handling
PPS
Java session08
PPTX
Python Programming | JNTUK | UNIT 1 | Lecture 3
PDF
Bypassing anti virus scanners
PPTX
Basics of file handling
PPTX
basics of file handling
PDF
CS8251_QB_answers.pdf
PPS
C programming session 11
PPT
Linux basics
PPT
02 fundamentals
PDF
C programming part1
PPSX
C programming basics
DOC
BIT204 1 Software Fundamentals
PDF
Java IO
PDF
Binary translation
PDF
Introduction of c language
PPTX
File Handling.pptx
PPT
Advanced c programming in Linux
PPTX
Build process in ST Visual Develop
Debug tutorial
Linux Systems Programming: File Handling
Java session08
Python Programming | JNTUK | UNIT 1 | Lecture 3
Bypassing anti virus scanners
Basics of file handling
basics of file handling
CS8251_QB_answers.pdf
C programming session 11
Linux basics
02 fundamentals
C programming part1
C programming basics
BIT204 1 Software Fundamentals
Java IO
Binary translation
Introduction of c language
File Handling.pptx
Advanced c programming in Linux
Build process in ST Visual Develop

Recently uploaded (20)

PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
01-Introduction-to-Information-Management.pdf
PDF
RMMM.pdf make it easy to upload and study
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
Lesson notes of climatology university.
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PDF
Basic Mud Logging Guide for educational purpose
PDF
O5-L3 Freight Transport Ops (International) V1.pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PPTX
Cell Types and Its function , kingdom of life
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
Institutional Correction lecture only . . .
PPTX
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
PDF
Anesthesia in Laparoscopic Surgery in India
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Microbial diseases, their pathogenesis and prophylaxis
01-Introduction-to-Information-Management.pdf
RMMM.pdf make it easy to upload and study
human mycosis Human fungal infections are called human mycosis..pptx
TR - Agricultural Crops Production NC III.pdf
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Lesson notes of climatology university.
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Basic Mud Logging Guide for educational purpose
O5-L3 Freight Transport Ops (International) V1.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
STATICS OF THE RIGID BODIES Hibbelers.pdf
Cell Types and Its function , kingdom of life
Supply Chain Operations Speaking Notes -ICLT Program
Institutional Correction lecture only . . .
Introduction_to_Human_Anatomy_and_Physiology_for_B.Pharm.pptx
Anesthesia in Laparoscopic Surgery in India
Renaissance Architecture: A Journey from Faith to Humanism
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...

C programming session 14

  • 1. Programming in C Objectives In this session, you will learn to: Differentiate between high-level and low-level input/output Work with low-level input/output functions Use random access in files Ver. 1.0 Slide 1 of 22
  • 2. Programming in C Differentiating Between High-Level and Low-Level Input/Output In C, files and devices can be accessed by using two groups of functions: High-level I/O or stream-level I/O Low-level I/O Ver. 1.0 Slide 2 of 22
  • 3. Programming in C Difference Between High-level I/O and Low-level I/O High-level or Stream-level I/O: Is more flexible and convenient. Hides complexity from the programmer. Is slower. Low-level I/O: Provides direct access to files and devices. Is complex (buffer management is to be done by the programmer). Is faster. Uses a file descriptor to track the status of the file. Ver. 1.0 Slide 3 of 22
  • 4. Programming in C Practice: 8.1 Which of the following statements is true? In C, there are many interfaces between a program and peripheral devices. A file descriptor is a non-negative integer. When you perform an operation on a file, the system uses the name of the file to identify it. Ver. 1.0 Slide 4 of 22
  • 5. Programming in C Practice: 8.1 (Contd.) Solution: – A file descriptor is a non-negative integer. Ver. 1.0 Slide 5 of 22
  • 6. Programming in C Uses of Low-Level Input/Output Low-level I/O functions are used for: Accessing files and devices directly. Reading binary files in large chunks. Performing I/O operations quickly and efficiently. Ver. 1.0 Slide 6 of 22
  • 7. Programming in C Working with Low-Level Input/Output Functions The low-level I/O system in C provides functions that can be used to access files and devices. The basic low-level I/O functions are: open() close() read() write() Ver. 1.0 Slide 7 of 22
  • 8. Programming in C The open() Function • The open() function: Is used to open an existing file or create a new file. Returns a file descriptor for the file name passed to it. Has the following syntax: int open(char *filename, int flags, int perms ); Ver. 1.0 Slide 8 of 22
  • 9. Programming in C The close() Function • The close() function: – Closes the file that was opened using the open() function. – Takes the file descriptor as a parameter to close the file. – Returns 0 on success and -1 in case of an error. – Has the following syntax: int close(int filedes); Ver. 1.0 Slide 9 of 22
  • 10. Programming in C The read() function • The read() function: Reads data from a file. Starts reading a file from the current file position. Has the following syntax: int read (int filedes, char *buffer, int size); Ver. 1.0 Slide 10 of 22
  • 11. Programming in C The write() function • The write() function: Enables a user to write contents to a file. Has the following syntax: int write (int filedes, char *buffer, int size); Ver. 1.0 Slide 11 of 22
  • 12. Programming in C Practice: 8.2 1. Which of the following statements is true? – At end-of-file, if a function is called repeatedly, it will give error. – In a read() function, the value of zero indicates end-of-file. • What will happen if you do not call the write() function in a loop? Ver. 1.0 Slide 12 of 22
  • 13. Programming in C Practice: 8.2 (Contd.) Solution: – In a read() function, the value of zero indicates end-of-file. – If you do not call write() function in a loop then the entire data would not be written. Ver. 1.0 Slide 13 of 22
  • 14. Programming in C Error Handling Error Handling: – Some of the low-level I/O functions return error flags when they fail to perform a specified task. – You can find these types of errors using a variable, errno. – The following table lists some values of errno that are common to the open(), close(), read(), and write() functions. errno values Description EACCES Specifies that the program has failed to access one of the directories in the file. ENAMETOOLONG Indicates that the file name is too long. ENOSPC Specifies that the disc is out of space and the file can not be created. EIO Specifies that there was a hardware error. EBADF Specifies that the file descriptor passed to read, write, or close the file is invalid. Ver. 1.0 Slide 14 of 22
  • 15. Programming in C Error Handling (Contd.) – There are certain errno values that are specific to the open() function, which are shown with the help of the following table. errno values Description EEXIST Specifies that if File already exists, and O_CREAT and O_EXCL are set, then opening the file would conflict with the existing file and the file will not open. EISDIR Specifies that the file is actually a directory. ENOENT Specifies that some of the file components do not exist. EMFILE Specifies that too many files are open. EROFS Specifies that the file is on a read only systembut either one of the write permissions O_WRONLY, O_RDWR, or O_TRUNC is set. Ver. 1.0 Slide 15 of 22
  • 16. Programming in C Error Handling (Contd.) – There are certain errno values that are specific to the write() function, which are shown with the help of the following table. errno values Description EFBIG Specifies that the file will become too large if the data is written on it. EINTR Specifies that the write operation is temporarily interrupted. Ver. 1.0 Slide 16 of 22
  • 17. Programming in C Using Random Access Seek in Files • The read and write operations on files are usually sequential in nature. • Random access permits non-sequential file access so that a file can be read or written out of sequence. • Random access in low-level file routines is performed using the lseek() function. Ver. 1.0 Slide 17 of 22
  • 18. Programming in C The lseek() Function • The lseek() function: Returns the file position, as measured in bytes from the beginning of the file. Has the following syntax: long lseek (int filedes, long offset, int origin); Ver. 1.0 Slide 18 of 22
  • 19. Programming in C The lseek() Function (Contd.) • The following table lists the various values of the third parameter (origin). Values for origin Description SEEK_SET or 0 Specifies that the offset is relative to the beginning of the file. The offset can only be positive. SEEK_CUR or 1 Specifies that the offset is relative to the current position. The offset can be positive or negative. SEEK_END or 2 Specifies that the offset is relative to the end of the file. The offset can be positive or negative. Ver. 1.0 Slide 19 of 22
  • 20. Programming in C The lseek() Function (Contd.) The following table lists some instructions for moving to the end or beginning of a file. Instruction Function used To get to the end of a file lseek(filedes,0,2); To return to the beginning of a file lseek(filedes,0,0); Ver. 1.0 Slide 20 of 22
  • 21. Programming in C Summary In this session, you learned that: – In C, files and devices can be accessed by using high-level I/O or stream-level I/O and low-level I/O. – Low-level I/O functions are those, which provide direct access to files and peripheral devices. – A file descriptor is a non-negative integer, which is returned by the open() function and is used in read() and write() functions. It tells about the permission to access the file. – Low-level input/output functions are used for the following purposes: • Accessing files and devices directly • Reading the binary files in large chunks • Performing I/O operations quickly and efficiently – The open() function is used to open or create a file. Ver. 1.0 Slide 21 of 22
  • 22. Programming in C Summary (Contd.) – The close() function is used for closing the file. – The read() function reads the existing file up to specified size and stores it into a character array. – The write() function writes on the file taking input from a character array up to specified size. – Most of the low-level I/O functions throw errors during file handling. – errno is the variable that tells about the error occurred during a low-level I/O operation. – Files and devices can also be accessed randomly. – The lseek() function is used to place the file position to the desired place. – The lseek() function do not require to read or write the file for positioning it. Ver. 1.0 Slide 22 of 22

Editor's Notes

  • #2: Begin the session by explaining the objectives of the session.
  • #4: Give examples where low-level and I/O can be used.
  • #5: Use this slide to test the student’s understanding on high-level and low-level I/O.
  • #7: Give a scenario and ask the students which type of I/O they would use in the situation. Also, ask them to justify their answers.
  • #9: Tell the students that the value returned by the open() function can be used to check whether a file has been opened successfully.
  • #10: The close() function releases the resources occupied. It also flushes out the data from the streams before closing them.
  • #11: If successful, the read() functions returns the number of characters read.
  • #12: If successful, the write function returns the number of bytes written into the file. This number should be equal to the size parameter of the write function.
  • #13: Use this slide to test the student’s understanding on low-level I/O functions.
  • #22: Use this and the next slide to summarize the session.