SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Lecture 8
C
Language
ENG : HATEM ABD EL-SALAM
• Files I/O
• Preprocessor
• Conditional Compilation
Agenda
Files I/O
• When a program is terminated, the entire data is lost. Storing in a file will
preserve your data even if the program terminates.
• If you have to enter a large number of data, it will take a lot of time to enter
them all.
However, if you have a file containing all the data, you can easily access the
contents of the file using few commands in C.
• You can easily move your data from one computer to another without any
changes.
Types of Files
1. Text files
2. Binary files
Files I/O (Cont.)
1- Text files
• Text files are the normal .txt files that you can easily create using Notepad
or any simple text editors.
• When you open those files, you'll see all the contents within the file as
plain text. You can easily edit or delete the contents.
• They take minimum effort to maintain, are easily readable, and provide
least security and takes bigger storage space.
Files I/O (Cont.)
2- Binary files
• Binary files are mostly the .bin files in your computer.
• Instead of storing data in plain text, they store it in the binary form (0's
and 1's).
• They can hold higher amount of data, are not readable easily and provides
a better security than text files.
Files I/O (Cont.)
File Operations
• In C, you can perform four major operations on the file, either text or
binary:
1. Creating a new file
2. Opening an existing file
3. Closing a file
4. Reading from and writing information to a file
Files I/O (Cont.)
Working with files
• When working with files, you need to declare a pointer of type file.
This declaration is needed for communication between the file and
program.
• Opening a file is performed using the library function in
the "stdio.h" header file: fopen().
• The syntax of fopen().
Files I/O (Cont.)
• Let's suppose the file newprogram.txt doesn't exist in the location
E:cprogram. The first function creates a new file named
newprogram.txt and opens it for writing as per the mode 'w'.
• The writing mode allows you to create and edit (overwrite) the
contents of the file.
• Now let's suppose the second binary file oldprogram.bin exists in the
location E:cprogram. The second function opens the existing file for
reading in binary mode 'rb'.
• The reading mode only allows you to read the file, you cannot write
into the file.
Files I/O (Cont.)
Closing a File
• The file (both text and binary) should be closed after reading/writing.
• Closing a file is performed using library function fclose().
Files I/O (Cont.)
Reading and writing to a text file
• For reading and writing to a text file, we use the functions fprintf() and
fscanf().
• They are just the file versions of printf() and scanf(). The only
difference is that, fprint and fscanf expects a pointer to the structure
FILE.
Files I/O (Cont.)
• Example 1: write to a text file using fprintf()
Files I/O (Cont.)
• Example 1: read from a text file using fscanf()
Files I/O (Cont.)
Reading and writing to a binary file
• Functions fread() and fwrite() are used for reading from and writing to
a file on the disk respectively in case of binary files.
• To write into a binary file, you need to use the function fwrite(). The
functions takes four arguments: Address of data to be written in disk,
Size of data to be written in disk, number of such type of data and
pointer to the file where you want to write.
Files I/O (Cont.)
• Example 3: writing to a binary file using fwrite()
Files I/O (Cont.)
• Example 4: reading from a binary file using fread()
Files I/O (Cont.)
Getting data using fseek()
• If you have many records inside a file and need to access a record at a
specific position, you need to loop through all the records before it to
get the record.
• This will waste a lot of memory and operation time. An easier way to
get to the required data can be achieved using fseek().
• As the name suggests, fseek() seeks the cursor to the given record in
the file.
Files I/O (Cont.)
Syntax of fseek()
• The first parameter stream is the pointer to the file. The second
parameter is the position of the record to be found, and the third
parameter specifies the location where the offset starts.
Example of fseek()
Preprocessor
• The C preprocessor is a macro preprocessor (allows you to define
macros) that transforms your program before it is compiled. These
transformations can be inclusion of header file, macro expansions etc.
• All preprocessing directives begins with a # symbol.
1. Include header files
2. Macros
Preprocessor (Cont.)
1-Including Header Files
• The #include preprocessor is used to include header files to a C program. For
example,
• Here, "stdio.h" is a header file. The #include preprocessor directive replaces the
above line with the contents of stdio.h header file which contains function and
macro definitions.
• That's the reason why you need to use #include <stdio.h> before you can use
functions like scanf() and printf().
• You can also create your own header file containing function declaration and
include it in your program using this preprocessor directive.
Preprocessor (Cont.)
2-Macros
• You can define a macro in C using #define preprocessor directive.
• A macro is a fragment of code that is given a name. You can use that
fragment of code in your program by using the name. For example,
• Here, when we use c in our program, it's replaced by 3.1415.
Preprocessor (Cont.)
• Example 1:
In this example, the pointer variable of type struct person is referenced to the address of person1.
Then, only the structure member through pointer can accessed.
Preprocessor (Cont.)
2-Macros
• You can also define macros that works like a function call, known as function-
like macros.
• Every time the program encounters circleArea(argument), it is replaced by
(3.1415*(argument)*(argument)).
• Suppose, we passed 5 as an argument then, it expands as below:
Preprocessor (Cont.)
Example 2:
Conditional Compilation (Cont.)
• In C programming, you can instruct preprocessor whether to include certain
chuck of code or not. To do so, conditional directives can be used.
• It's similar like a if statement. However, there is a big difference you need to
understand.
• The if statement is tested during the execution time to check whether a block of
code should be executed or not whereas, the conditionals is used to include (or
skip) certain chucks of code in your program before execution.
Conditional Compilation (Cont.)
Uses of Conditional:
• use different code depending on the machine, operating system
• compile same source file in two different programs
• to exclude certain code from the program but to keep it as reference for future
purpose
How to use conditional?
• To use conditional, #ifdef, #if, #defined, #else and #elseif directives are used.
Conditional Compilation (Cont.)
#ifdef Directive
• Here, the conditional codes are included in the program only if MACRO is
defined.
• Here, expression is a expression of integer type (can be integers, characters,
arithmetic expression, macros and so on). The conditional codes are included in
the program only if the expression is evaluated to a non-zero value.
Conditional Compilation (Cont.)
The optional #else directive can used with #if directive.
• You can also add nested conditional to your #if...#else using #elif
Conditional Compilation (Cont.)
Predefined Macros
• There are some predefined macros which are readily for use in C programming.
Conditional Compilation (Cont.)
• Example :
C- language Lecture 8

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Compiler construction tools
Compiler construction toolsCompiler construction tools
Compiler construction tools
 
Code Optimization
Code OptimizationCode Optimization
Code Optimization
 
Hm system programming class 1
Hm system programming class 1Hm system programming class 1
Hm system programming class 1
 
Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2Lecture 15 run timeenvironment_2
Lecture 15 run timeenvironment_2
 
Learning New Semi-Supervised Deep Auto-encoder Features for Statistical Machi...
Learning New Semi-Supervised Deep Auto-encoder Features for Statistical Machi...Learning New Semi-Supervised Deep Auto-encoder Features for Statistical Machi...
Learning New Semi-Supervised Deep Auto-encoder Features for Statistical Machi...
 
System Programming Unit III
System Programming Unit IIISystem Programming Unit III
System Programming Unit III
 
Workshop Assembler
Workshop AssemblerWorkshop Assembler
Workshop Assembler
 
Intro to Data Structure & Algorithms
Intro to Data Structure & AlgorithmsIntro to Data Structure & Algorithms
Intro to Data Structure & Algorithms
 
C basics
C basicsC basics
C basics
 
Compiler Design- Machine Independent Optimizations
Compiler Design- Machine Independent OptimizationsCompiler Design- Machine Independent Optimizations
Compiler Design- Machine Independent Optimizations
 
what is compiler and five phases of compiler
what is compiler and five phases of compilerwhat is compiler and five phases of compiler
what is compiler and five phases of compiler
 
Compiler Design Material
Compiler Design MaterialCompiler Design Material
Compiler Design Material
 
Unit 3 sp assembler
Unit 3 sp assemblerUnit 3 sp assembler
Unit 3 sp assembler
 
Ppl
PplPpl
Ppl
 
Subprogram
SubprogramSubprogram
Subprogram
 
Compiler Design Basics
Compiler Design BasicsCompiler Design Basics
Compiler Design Basics
 
Optimization
OptimizationOptimization
Optimization
 
C programming
C programmingC programming
C programming
 
System Programing Unit 1
System Programing Unit 1System Programing Unit 1
System Programing Unit 1
 
Programming the basic computer
Programming the basic computerProgramming the basic computer
Programming the basic computer
 

Similar a C- language Lecture 8 (20)

File handling.pptx
File handling.pptxFile handling.pptx
File handling.pptx
 
File Handling
File HandlingFile Handling
File Handling
 
File Handling
File HandlingFile Handling
File Handling
 
File management
File managementFile management
File management
 
Linux System Programming - File I/O
Linux System Programming - File I/O Linux System Programming - File I/O
Linux System Programming - File I/O
 
VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5VIT351 Software Development VI Unit5
VIT351 Software Development VI Unit5
 
C language header files
C language header filesC language header files
C language header files
 
C files
C filesC files
C files
 
file_c.pdf
file_c.pdffile_c.pdf
file_c.pdf
 
Linux System Programming - Buffered I/O
Linux System Programming - Buffered I/O Linux System Programming - Buffered I/O
Linux System Programming - Buffered I/O
 
ch09.ppt
ch09.pptch09.ppt
ch09.ppt
 
File handing in C
File handing in CFile handing in C
File handing in C
 
UNIT 5.pptx
UNIT 5.pptxUNIT 5.pptx
UNIT 5.pptx
 
Python file handling
Python file handlingPython file handling
Python file handling
 
File Handling and Preprocessor Directives
File Handling and Preprocessor DirectivesFile Handling and Preprocessor Directives
File Handling and Preprocessor Directives
 
637225560972186380.pdf
637225560972186380.pdf637225560972186380.pdf
637225560972186380.pdf
 
File mangement
File mangementFile mangement
File mangement
 
IOStream.pptx
IOStream.pptxIOStream.pptx
IOStream.pptx
 
Data file handling
Data file handlingData file handling
Data file handling
 
Robocopy
RobocopyRobocopy
Robocopy
 

Más de Hatem Abd El-Salam

Más de Hatem Abd El-Salam (12)

Java- language Lecture 7
Java- language Lecture 7Java- language Lecture 7
Java- language Lecture 7
 
Java- language Lecture 6
Java- language Lecture 6Java- language Lecture 6
Java- language Lecture 6
 
Java- language Lecture 5
Java- language Lecture 5Java- language Lecture 5
Java- language Lecture 5
 
Java- language Lecture 4
Java- language Lecture 4Java- language Lecture 4
Java- language Lecture 4
 
Java- language Lecture 3
Java- language Lecture 3Java- language Lecture 3
Java- language Lecture 3
 
Java- Language Lecture 2
Java- Language Lecture 2Java- Language Lecture 2
Java- Language Lecture 2
 
Java- language Lecture 1
Java- language Lecture 1Java- language Lecture 1
Java- language Lecture 1
 
introduction to embedded systems part 2
introduction to embedded systems part 2introduction to embedded systems part 2
introduction to embedded systems part 2
 
introduction to embedded systems part 1
introduction to embedded systems part 1introduction to embedded systems part 1
introduction to embedded systems part 1
 
C- language Lecture 3
C- language Lecture 3C- language Lecture 3
C- language Lecture 3
 
C- Language Lecture 2
C- Language Lecture 2C- Language Lecture 2
C- Language Lecture 2
 
C-language Lecture 1
C-language Lecture 1C-language Lecture 1
C-language Lecture 1
 

Último

On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsMebane Rash
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Association for Project Management
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxDenish Jangid
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701bronxfugly43
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin ClassesCeline George
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxVishalSingh1417
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdfssuserdda66b
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.pptRamjanShidvankar
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structuredhanjurrannsibayan2
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsKarakKing
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseAnaAcapella
 

Último (20)

On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...Making communications land - Are they received and understood as intended? we...
Making communications land - Are they received and understood as intended? we...
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptxBasic Civil Engineering first year Notes- Chapter 4 Building.pptx
Basic Civil Engineering first year Notes- Chapter 4 Building.pptx
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Unit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptxUnit-IV- Pharma. Marketing Channels.pptx
Unit-IV- Pharma. Marketing Channels.pptx
 
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdfVishram Singh - Textbook of Anatomy  Upper Limb and Thorax.. Volume 1 (1).pdf
Vishram Singh - Textbook of Anatomy Upper Limb and Thorax.. Volume 1 (1).pdf
 
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
Single or Multiple melodic lines structure
Single or Multiple melodic lines structureSingle or Multiple melodic lines structure
Single or Multiple melodic lines structure
 
Salient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functionsSalient Features of India constitution especially power and functions
Salient Features of India constitution especially power and functions
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 

C- language Lecture 8

  • 1. Lecture 8 C Language ENG : HATEM ABD EL-SALAM
  • 2. • Files I/O • Preprocessor • Conditional Compilation Agenda
  • 3. Files I/O • When a program is terminated, the entire data is lost. Storing in a file will preserve your data even if the program terminates. • If you have to enter a large number of data, it will take a lot of time to enter them all. However, if you have a file containing all the data, you can easily access the contents of the file using few commands in C. • You can easily move your data from one computer to another without any changes. Types of Files 1. Text files 2. Binary files
  • 4. Files I/O (Cont.) 1- Text files • Text files are the normal .txt files that you can easily create using Notepad or any simple text editors. • When you open those files, you'll see all the contents within the file as plain text. You can easily edit or delete the contents. • They take minimum effort to maintain, are easily readable, and provide least security and takes bigger storage space.
  • 5. Files I/O (Cont.) 2- Binary files • Binary files are mostly the .bin files in your computer. • Instead of storing data in plain text, they store it in the binary form (0's and 1's). • They can hold higher amount of data, are not readable easily and provides a better security than text files.
  • 6. Files I/O (Cont.) File Operations • In C, you can perform four major operations on the file, either text or binary: 1. Creating a new file 2. Opening an existing file 3. Closing a file 4. Reading from and writing information to a file
  • 7. Files I/O (Cont.) Working with files • When working with files, you need to declare a pointer of type file. This declaration is needed for communication between the file and program. • Opening a file is performed using the library function in the "stdio.h" header file: fopen(). • The syntax of fopen().
  • 8. Files I/O (Cont.) • Let's suppose the file newprogram.txt doesn't exist in the location E:cprogram. The first function creates a new file named newprogram.txt and opens it for writing as per the mode 'w'. • The writing mode allows you to create and edit (overwrite) the contents of the file. • Now let's suppose the second binary file oldprogram.bin exists in the location E:cprogram. The second function opens the existing file for reading in binary mode 'rb'. • The reading mode only allows you to read the file, you cannot write into the file.
  • 9.
  • 10. Files I/O (Cont.) Closing a File • The file (both text and binary) should be closed after reading/writing. • Closing a file is performed using library function fclose().
  • 11. Files I/O (Cont.) Reading and writing to a text file • For reading and writing to a text file, we use the functions fprintf() and fscanf(). • They are just the file versions of printf() and scanf(). The only difference is that, fprint and fscanf expects a pointer to the structure FILE.
  • 12. Files I/O (Cont.) • Example 1: write to a text file using fprintf()
  • 13. Files I/O (Cont.) • Example 1: read from a text file using fscanf()
  • 14. Files I/O (Cont.) Reading and writing to a binary file • Functions fread() and fwrite() are used for reading from and writing to a file on the disk respectively in case of binary files. • To write into a binary file, you need to use the function fwrite(). The functions takes four arguments: Address of data to be written in disk, Size of data to be written in disk, number of such type of data and pointer to the file where you want to write.
  • 15. Files I/O (Cont.) • Example 3: writing to a binary file using fwrite()
  • 16. Files I/O (Cont.) • Example 4: reading from a binary file using fread()
  • 17. Files I/O (Cont.) Getting data using fseek() • If you have many records inside a file and need to access a record at a specific position, you need to loop through all the records before it to get the record. • This will waste a lot of memory and operation time. An easier way to get to the required data can be achieved using fseek(). • As the name suggests, fseek() seeks the cursor to the given record in the file.
  • 18. Files I/O (Cont.) Syntax of fseek() • The first parameter stream is the pointer to the file. The second parameter is the position of the record to be found, and the third parameter specifies the location where the offset starts.
  • 20.
  • 21. Preprocessor • The C preprocessor is a macro preprocessor (allows you to define macros) that transforms your program before it is compiled. These transformations can be inclusion of header file, macro expansions etc. • All preprocessing directives begins with a # symbol. 1. Include header files 2. Macros
  • 22. Preprocessor (Cont.) 1-Including Header Files • The #include preprocessor is used to include header files to a C program. For example, • Here, "stdio.h" is a header file. The #include preprocessor directive replaces the above line with the contents of stdio.h header file which contains function and macro definitions. • That's the reason why you need to use #include <stdio.h> before you can use functions like scanf() and printf(). • You can also create your own header file containing function declaration and include it in your program using this preprocessor directive.
  • 23. Preprocessor (Cont.) 2-Macros • You can define a macro in C using #define preprocessor directive. • A macro is a fragment of code that is given a name. You can use that fragment of code in your program by using the name. For example, • Here, when we use c in our program, it's replaced by 3.1415.
  • 24. Preprocessor (Cont.) • Example 1: In this example, the pointer variable of type struct person is referenced to the address of person1. Then, only the structure member through pointer can accessed.
  • 25. Preprocessor (Cont.) 2-Macros • You can also define macros that works like a function call, known as function- like macros. • Every time the program encounters circleArea(argument), it is replaced by (3.1415*(argument)*(argument)). • Suppose, we passed 5 as an argument then, it expands as below:
  • 27. Conditional Compilation (Cont.) • In C programming, you can instruct preprocessor whether to include certain chuck of code or not. To do so, conditional directives can be used. • It's similar like a if statement. However, there is a big difference you need to understand. • The if statement is tested during the execution time to check whether a block of code should be executed or not whereas, the conditionals is used to include (or skip) certain chucks of code in your program before execution.
  • 28. Conditional Compilation (Cont.) Uses of Conditional: • use different code depending on the machine, operating system • compile same source file in two different programs • to exclude certain code from the program but to keep it as reference for future purpose How to use conditional? • To use conditional, #ifdef, #if, #defined, #else and #elseif directives are used.
  • 29. Conditional Compilation (Cont.) #ifdef Directive • Here, the conditional codes are included in the program only if MACRO is defined. • Here, expression is a expression of integer type (can be integers, characters, arithmetic expression, macros and so on). The conditional codes are included in the program only if the expression is evaluated to a non-zero value.
  • 30. Conditional Compilation (Cont.) The optional #else directive can used with #if directive. • You can also add nested conditional to your #if...#else using #elif
  • 31. Conditional Compilation (Cont.) Predefined Macros • There are some predefined macros which are readily for use in C programming.