SlideShare a Scribd company logo
1 of 31
Download to read offline
Programming in C
Objectives


                In this session, you will learn to:
                   Work with structures
                   Use structures in file handling




     Ver. 1.0                                         Slide 1 of 31
Programming in C
Working with Structures


                Structures:
                 –   Are collection of heterogeneous data types.
                 –   Are also known as records.
                 –   Are used to define new data types.
                 –   Are defined using the struct keyword.




     Ver. 1.0                                                      Slide 2 of 31
Programming in C
Defining Structures


                •   A structure is defined by using the struct keyword.
                •   Consider the following example:
                     struct {
                          char transno [4];
                          int salesno;
                          int prodno;
                          int unit_sold;
                          float value_of_sale;
                          }    salesrec;
                     All the variables in the record are treated as one data structure –
                     salesrec.




     Ver. 1.0                                                                   Slide 3 of 31
Programming in C
Practice: 7.1


                1. State whether True or False:
                        The members of a structure must be of the same data type.
                •   a. Give the declaration for a structure called date with the
                       following members.
                        day (2 digits)
                        month (2 digits)
                        year (4 digits)
                    b. Give appropriate statements to accept values into the
                       members of the structure date and then print out the
                       date as mm/dd/yyyy.




     Ver. 1.0                                                               Slide 4 of 31
Programming in C
Practice: 7.1 (Contd.)


                Solution:
                 1. False
                 2. a. The structure declaration should be:
                     struct {
                             int day;
                             int month;
                              int year;
                          } date;
                    b. The statements could be:
                     scanf(“%d%d%d”, &date, &date.month, &date.year);
                     printf(“%d/%d/5d”, date.month, date.day,
                    date.year);




     Ver. 1.0                                                  Slide 5 of 31
Programming in C
Defining Structures (Contd.)


                Defining a label structures:
                   Structure label may be declared as:
                   struct salesdata {
                            char transno [4];
                            int salesno;
                            int prodno;
                            int unit_sold;
                            float value_of-sale;
                            };
                   struct salesdata salesrec;
                 Here, salesdata is the label and salesrec is the data item.




     Ver. 1.0                                                          Slide 6 of 31
Programming in C
Practice: 7.2


                Given the following declarations:
                     struct date_type{     struct {
                                    int day;                        int day;
                                    int month;                      int month;
                                    int year;                       int year;
                                     };             }               date;
                              Declaration 1               Declaration 2
                   Answer the following questions:
                 – Memory is allocated for the structure (date_type/ date).
                 – Which of the following is/are the correct way(s) of referring to
                   the variable day?
                     a. day.date
                     b. date_type.day




     Ver. 1.0                                                               Slide 7 of 31
Programming in C
Practice: 7.2 (Contd.)


                – What change(s) should be made to the first declaration so that
                  the structure date is created of type date_type?
                – Is the following statement valid in case of the second
                  declaration? If not, why?
                    struct date another_date;




     Ver. 1.0                                                           Slide 8 of 31
Programming in C
Practice: 7.2 (Contd.)


                Solution:
                 1. date (date_type is only a structure type)
                 2. a. Invalid because the structure name precedes the variable
                       name.
                    b. Invalid because date_type is not actually created in
                       memory, it is only a label.
                 3. The following statement should be added after the struct
                    declaration:
                     struct date_type date;
                 4. This is invalid because date is not a structure type but an
                    actual structure in memory.




     Ver. 1.0                                                               Slide 9 of 31
Programming in C
Passing Structures to Functions


                Passing Structures to Functions:
                – Structures may be passed to functions either by value or by
                  reference.
                – Usually methods pass the address of the structure.
                – The name of the variable being referenced is preceded by the
                  symbol .




     Ver. 1.0                                                          Slide 10 of 31
Programming in C
Practice: 7.3


                1. Consider the following code:
                   struct date_type   {
                   int day;
                   int month;
                   int year;
                   }; struct date_type date,      *ptr;
                    – How can the pointer variable ptr be assigned the address of
                       the structure date?
                    – Is the following statement valid?
                       ptr = &date_type;
                    c. Give alternative ways of referring to:
                         i. &date.day
                         ii. date.month
                   Given that ptr has been assigned the address of the structure
                   date.

     Ver. 1.0                                                             Slide 11 of 31
Programming in C
Practice: 7.3 (Contd.)


                2. Consider the incomplete code of a program that is given in
                   the following file. The code uses a function called
                   printmonth() that displays the month name
                   corresponding to any month number. The month number is
                   accepted into the member month of the structure date. The
                   blanks have to be filled in appropriately.


                                        Microsoft Office
                                    Word 97 - 2003 Document




     Ver. 1.0                                                        Slide 12 of 31
Programming in C
Practice: 7.3 (Contd.)


                Solution:
                 1. a. By using the following statement:
                      ptr = &date;
                    b. No. because date_type is not created in memory; it is
                       only a label.
                    c. i. &(ptr-> date)
                       ii. ptr-> month
                 2. The statement to invoke printmonth() could be:
                    printmonth(&date); /*invoke printmonth() by
                    passing structure */
                    The missing lines in the code for printmonth() are:
                    printmonth(point)
                    struct date_type *point;
                    point is the parameter of the function since it is used within
                    the function to access members of the structure date.
     Ver. 1.0                                                              Slide 13 of 31
Programming in C
Arrays of Structures


                Arrays of structures can also be created.
                It works in the same way as any other data type array.
                Consider the following example:
                   struct prod data{
                    char prodname[8];
                    int no_of_sales;
                    float tot_sale;
                   };
                   An array for the preceding structure can be declared as:
                    struct proddata prod_field[4];
                   The elements of the structure can be accessed as:
                    prod_field [0].prodnam[0];




     Ver. 1.0                                                            Slide 14 of 31
Programming in C
Practice: 7.4


                1. Declare a structure which will contain the following data for
                   3 employees:
                        Employee code            (3 characters)
                        First name               (20 characters)
                        Middle initial           (1 character)
                        Last name                (20 characters)
                   The employee codes to be stored in this structure are E01,
                   E02, and E03.
                2. Write the code to input for all 3 employees, and print out the
                   initials of each (e.g. Ashraf A Kumar would be printed as
                   AAK) along with their codes.




     Ver. 1.0                                                            Slide 15 of 31
Programming in C
Practice: 7.4 (Contd.)


                Solution:




                               Microsoft Office
                            Word 97 - 2003 Document




     Ver. 1.0                                         Slide 16 of 31
Programming in C
Working with Structures (Contd.)


                  A structure can be used as a valid data type within another
                  structure. For example, if date has been defined as:
                      struct   date{
                         int   dd;
                         int   mm;
                         int   yy;
                         };
                • The date structure can be used in another structure as:
                      struct trans_rec{
                         char transno[4];
                         char type;
                         float amount;
                         struct date tran_date;
                         };

     Ver. 1.0                                                         Slide 17 of 31
Programming in C
Practice: 7.5


                1. What will the following declaration do?
                    typedef char sentence[50];
                    sentence complex[10];




     Ver. 1.0                                                Slide 18 of 31
Programming in C
Practice: 7.5 (Contd.)


                Solution:
                 1. The first statement defines sentence as a data type consisting
                    of an array of 50 characters. The second statement declares
                    complex as a two-dimensional array, (an array of ten arrays of
                    50 characters each).




     Ver. 1.0                                                             Slide 19 of 31
Programming in C
Using Structures in File Handling


                To store data permanently, it needs to be stored in a file.
                Mostly, the data, to be written in the file, is a logical group of
                information i.e. records.
                These records can be stored in structure variables. Hence,
                you need to write structures onto a file.




     Ver. 1.0                                                             Slide 20 of 31
Programming in C
Writing Records onto a File Using Structures


                • The fwrite() function is used to write structures onto a
                  file.
                • The fwrite() function has the following syntax:
                       fwrite (constant pointer, sizeof (datatype), 1,
                       FILE pointer);
                   – The first parameter is a pointer to the data to be written.
                   – The second parameter is the size of data to be written.
                   – The third parameter is the number of objects or data to be
                     written.
                   – The fourth parameter is the pointer to file.




     Ver. 1.0                                                               Slide 21 of 31
Programming in C
Practice: 7.6


                Now that various assets of the transaction data entry
                program have been explained, these have to be
                consolidated and the entire program coded. The problem
                statement is repeated below.
                A transaction data entry program called dataent, used at
                the familiar Alcatel Automatics Company, has to be coded.
                The transaction file stores the data on transactions made by
                the salesmen of the company. The records consist of the
                following fields.
                   Transaction number
                   Salesman number
                   Product number (numbered 1 to 4)
                   Units sold
                   Value of sale
                   Value of sale is calculated in the program.
     Ver. 1.0                                                       Slide 22 of 31
Programming in C
Practice: 7.6 (Contd.)


                The program should allow the user to indicate when he
                wants to stop data entry (i.e. it should keep accepting
                records until the user indicates that there are no more
                records).
                After all records have been entered, a report on the total
                number of sales and the total sale value for each product is
                to be printed in the following format (for each product).
                 Product number              : ___________________
                 Product name                : ___________________
                 Total number of sales       : ___________________
                 Total sale value            : ___________________
                Use the structures salesrec, salesdata, prodata, and
                prod_field defined earlier and code for the report printing
                within main(). Also use the code provided on page 7.2 and
                7.3 in your solution.
     Ver. 1.0                                                        Slide 23 of 31
Programming in C
Practice: 7.6 (Contd.)


                Solution:




                               Microsoft Office
                            Word 97 - 2003 Document




     Ver. 1.0                                         Slide 24 of 31
Programming in C
Reading Records from Files Using Structures


                • The fread() function is used to read data from a stream.
                • The fread() function has the following syntax:
                    fread (ptr, sizeof, 1, fp);
                      The first parameter is a pointer to the variable where the data
                      is to be fetched.
                      The second parameter is the size of data to be read.
                      The third parameter is the number of objects or data to be
                      read.
                      The fourth parameter is the pointer to file.




     Ver. 1.0                                                                Slide 25 of 31
Programming in C
Practice: 7.7


                •   Is the following statement to read the first 5 records of the
                    file trans.dat valid?
                    fread (ptr, (sizeof(salesrec) *5), 1, fp);
                   If not state why and give the correct statement. No checks
                   are to be done for an unsuccessful read.
                2. Modify the above fread() statement to include an end-of-
                   file check and also check whether the records have been
                   read successfully. In case of end-of-file, display the
                   message:
                        End-of-file encountered
                    and in case of other errors, display the message and exit:
                        Unsuccessful read
                    In case of a successful read, display the salesman number
                    and transaction number of each record. Give all the
                    structure declarations required.
     Ver. 1.0                                                              Slide 26 of 31
Programming in C
Practice: 7.7 (Contd.)


                Solution:




                               Microsoft Office
                            Word 97 - 2003 Document




     Ver. 1.0                                         Slide 27 of 31
Programming in C
Practice: 7.8


                •   Debug the following program called dat.c using the error
                    listing provided in the following file.




                                        Microsoft Office
                                     Word 97 - 2003 Document




     Ver. 1.0                                                         Slide 28 of 31
Programming in C
Practice: 7.8 (Contd.)


                Solution:
                 1. The solution to this practice will be discussed in class. Work
                    out your answer.




     Ver. 1.0                                                              Slide 29 of 31
Programming in C
Summary


               In this session, you learned that:
                – Records can be defined in C by using structures.
                – Structure members can be of the same/different data type.
                – Memory is not reserved when a structure label is declared. A
                  structure is created when it is declared as a struct of the
                  same type as the structure label.
                – A member of a structure can be accessed as follows:
                    structure-name.member-name
                  A pointer to a structure can be used to pass a structure to a
                  function. Using pointers, the structure members are accessed
                  as follows:
                    pointer-name->member-name
                  Arrays of structures can be defined and initialized (if global or
                  static). To access any member, an index has to be used after
                  the structure name, as follows:
                  structure-name [index ].member-name
    Ver. 1.0                                                                Slide 30 of 31
Programming in C
Summary (Contd.)


               – The typedef statement can assign names to user-defined
                 data types. These are treated the same way as data types
                 provided by C.
               – The fread() function can read records from a file into a
                 structure/array of structures. The format of the function is:
                   fread (pointer, size of structure, number of
                   objects to be read, file pointer);
               – The fread() function returns the number of objects read from
                 the file. It does not return any special value in case of
                 end-of-file. The feof() function is used in conjunction with
                 fread() to check for end-of-file.
               – The fwrite() function can write a structure array of
                 structures onto a file. All numeric data is written in compressed
                 form. Usually, fread() and fwrite() are used in
                 conjunction.


    Ver. 1.0                                                             Slide 31 of 31

More Related Content

Similar to C programming session 13

2 lesson 2 object oriented programming in c++
2 lesson 2 object oriented programming in c++2 lesson 2 object oriented programming in c++
2 lesson 2 object oriented programming in c++Jeff TUYISHIME
 
Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design patternchetankane
 
C basic questions&ansrs by shiva kumar kella
C basic questions&ansrs by shiva kumar kellaC basic questions&ansrs by shiva kumar kella
C basic questions&ansrs by shiva kumar kellaManoj Kumar kothagulla
 
05 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_0705 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_07Niit Care
 
Data Structure & Algorithm - Self Referential
Data Structure & Algorithm - Self ReferentialData Structure & Algorithm - Self Referential
Data Structure & Algorithm - Self Referentialbabuk110
 
JAVA - VTU - Object oriented Concepts - 18CS45 - Module I
JAVA - VTU - Object oriented Concepts - 18CS45 - Module IJAVA - VTU - Object oriented Concepts - 18CS45 - Module I
JAVA - VTU - Object oriented Concepts - 18CS45 - Module IDemian Antony DMello
 
IT 510 Final Project Guidelines and Rubric Overview .docx
IT 510 Final Project Guidelines and Rubric  Overview .docxIT 510 Final Project Guidelines and Rubric  Overview .docx
IT 510 Final Project Guidelines and Rubric Overview .docxpriestmanmable
 
CS8592 Object Oriented Analysis & Design - UNIT I
CS8592 Object Oriented Analysis & Design - UNIT ICS8592 Object Oriented Analysis & Design - UNIT I
CS8592 Object Oriented Analysis & Design - UNIT Ipkaviya
 
Programming in C.docx
Programming in C.docxProgramming in C.docx
Programming in C.docxsports mania
 
Notes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculationsNotes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculationsWilliam Olivier
 

Similar to C programming session 13 (20)

2 lesson 2 object oriented programming in c++
2 lesson 2 object oriented programming in c++2 lesson 2 object oriented programming in c++
2 lesson 2 object oriented programming in c++
 
Unit 4 qba
Unit 4 qbaUnit 4 qba
Unit 4 qba
 
Structures in c++
Structures in c++Structures in c++
Structures in c++
 
Sofwear deasign and need of design pattern
Sofwear deasign and need of design patternSofwear deasign and need of design pattern
Sofwear deasign and need of design pattern
 
structure1.pdf
structure1.pdfstructure1.pdf
structure1.pdf
 
C basic questions&ansrs by shiva kumar kella
C basic questions&ansrs by shiva kumar kellaC basic questions&ansrs by shiva kumar kella
C basic questions&ansrs by shiva kumar kella
 
Csharp
CsharpCsharp
Csharp
 
Structures
StructuresStructures
Structures
 
Ocs752 unit 5
Ocs752   unit 5Ocs752   unit 5
Ocs752 unit 5
 
Technical Interview
Technical InterviewTechnical Interview
Technical Interview
 
05 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_0705 iec t1_s1_oo_ps_session_07
05 iec t1_s1_oo_ps_session_07
 
Lab3cth
Lab3cthLab3cth
Lab3cth
 
Data Structure & Algorithm - Self Referential
Data Structure & Algorithm - Self ReferentialData Structure & Algorithm - Self Referential
Data Structure & Algorithm - Self Referential
 
JAVA - VTU - Object oriented Concepts - 18CS45 - Module I
JAVA - VTU - Object oriented Concepts - 18CS45 - Module IJAVA - VTU - Object oriented Concepts - 18CS45 - Module I
JAVA - VTU - Object oriented Concepts - 18CS45 - Module I
 
PRELIM-Lesson-2.pdf
PRELIM-Lesson-2.pdfPRELIM-Lesson-2.pdf
PRELIM-Lesson-2.pdf
 
04 struct-union
04 struct-union04 struct-union
04 struct-union
 
IT 510 Final Project Guidelines and Rubric Overview .docx
IT 510 Final Project Guidelines and Rubric  Overview .docxIT 510 Final Project Guidelines and Rubric  Overview .docx
IT 510 Final Project Guidelines and Rubric Overview .docx
 
CS8592 Object Oriented Analysis & Design - UNIT I
CS8592 Object Oriented Analysis & Design - UNIT ICS8592 Object Oriented Analysis & Design - UNIT I
CS8592 Object Oriented Analysis & Design - UNIT I
 
Programming in C.docx
Programming in C.docxProgramming in C.docx
Programming in C.docx
 
Notes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculationsNotes how to work with variables, constants and do calculations
Notes how to work with variables, constants and do calculations
 

More from AjayBahoriya

C programming session 16
C programming session 16C programming session 16
C programming session 16AjayBahoriya
 
C programming session 14
C programming session 14C programming session 14
C programming session 14AjayBahoriya
 
C programming session 11
C programming session 11C programming session 11
C programming session 11AjayBahoriya
 
C programming session 10
C programming session 10C programming session 10
C programming session 10AjayBahoriya
 
C programming session 08
C programming session 08C programming session 08
C programming session 08AjayBahoriya
 
C programming session 07
C programming session 07C programming session 07
C programming session 07AjayBahoriya
 
C programming session 05
C programming session 05C programming session 05
C programming session 05AjayBahoriya
 
C programming session 04
C programming session 04C programming session 04
C programming session 04AjayBahoriya
 
C programming session 02
C programming session 02C programming session 02
C programming session 02AjayBahoriya
 
C programming session 01
C programming session 01C programming session 01
C programming session 01AjayBahoriya
 

More from AjayBahoriya (10)

C programming session 16
C programming session 16C programming session 16
C programming session 16
 
C programming session 14
C programming session 14C programming session 14
C programming session 14
 
C programming session 11
C programming session 11C programming session 11
C programming session 11
 
C programming session 10
C programming session 10C programming session 10
C programming session 10
 
C programming session 08
C programming session 08C programming session 08
C programming session 08
 
C programming session 07
C programming session 07C programming session 07
C programming session 07
 
C programming session 05
C programming session 05C programming session 05
C programming session 05
 
C programming session 04
C programming session 04C programming session 04
C programming session 04
 
C programming session 02
C programming session 02C programming session 02
C programming session 02
 
C programming session 01
C programming session 01C programming session 01
C programming session 01
 

Recently uploaded

March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch TuesdayIvanti
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Muhammad Tiham Siddiqui
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingMAGNIntelligence
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)IES VE
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024Brian Pichman
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and businessFrancesco Corti
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarThousandEyes
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfTejal81
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FESTBillieHyde
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNeo4j
 

Recently uploaded (20)

March Patch Tuesday
March Patch TuesdayMarch Patch Tuesday
March Patch Tuesday
 
Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)Trailblazer Community - Flows Workshop (Session 2)
Trailblazer Community - Flows Workshop (Session 2)
 
IT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced ComputingIT Service Management (ITSM) Best Practices for Advanced Computing
IT Service Management (ITSM) Best Practices for Advanced Computing
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)The Importance of Indoor Air Quality (English)
The Importance of Indoor Air Quality (English)
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024CyberSecurity - Computers In Libraries 2024
CyberSecurity - Computers In Libraries 2024
 
From the origin to the future of Open Source model and business
From the origin to the future of  Open Source model and businessFrom the origin to the future of  Open Source model and business
From the origin to the future of Open Source model and business
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
EMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? WebinarEMEA What is ThousandEyes? Webinar
EMEA What is ThousandEyes? Webinar
 
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdfQ4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
Q4 2023 Quarterly Investor Presentation - FINAL - v1.pdf
 
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie WorldTrustArc Webinar - How to Live in a Post Third-Party Cookie World
TrustArc Webinar - How to Live in a Post Third-Party Cookie World
 
Technical SEO for Improved Accessibility WTS FEST
Technical SEO for Improved Accessibility  WTS FESTTechnical SEO for Improved Accessibility  WTS FEST
Technical SEO for Improved Accessibility WTS FEST
 
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through TokenizationStobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
Stobox 4: Revolutionizing Investment in Real-World Assets Through Tokenization
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
Novo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4jNovo Nordisk's journey in developing an open-source application on Neo4j
Novo Nordisk's journey in developing an open-source application on Neo4j
 

C programming session 13

  • 1. Programming in C Objectives In this session, you will learn to: Work with structures Use structures in file handling Ver. 1.0 Slide 1 of 31
  • 2. Programming in C Working with Structures Structures: – Are collection of heterogeneous data types. – Are also known as records. – Are used to define new data types. – Are defined using the struct keyword. Ver. 1.0 Slide 2 of 31
  • 3. Programming in C Defining Structures • A structure is defined by using the struct keyword. • Consider the following example: struct { char transno [4]; int salesno; int prodno; int unit_sold; float value_of_sale; } salesrec; All the variables in the record are treated as one data structure – salesrec. Ver. 1.0 Slide 3 of 31
  • 4. Programming in C Practice: 7.1 1. State whether True or False: The members of a structure must be of the same data type. • a. Give the declaration for a structure called date with the following members. day (2 digits) month (2 digits) year (4 digits) b. Give appropriate statements to accept values into the members of the structure date and then print out the date as mm/dd/yyyy. Ver. 1.0 Slide 4 of 31
  • 5. Programming in C Practice: 7.1 (Contd.) Solution: 1. False 2. a. The structure declaration should be: struct { int day; int month; int year; } date; b. The statements could be: scanf(“%d%d%d”, &date, &date.month, &date.year); printf(“%d/%d/5d”, date.month, date.day, date.year); Ver. 1.0 Slide 5 of 31
  • 6. Programming in C Defining Structures (Contd.) Defining a label structures: Structure label may be declared as: struct salesdata { char transno [4]; int salesno; int prodno; int unit_sold; float value_of-sale; }; struct salesdata salesrec; Here, salesdata is the label and salesrec is the data item. Ver. 1.0 Slide 6 of 31
  • 7. Programming in C Practice: 7.2 Given the following declarations: struct date_type{ struct { int day; int day; int month; int month; int year; int year; }; } date; Declaration 1 Declaration 2 Answer the following questions: – Memory is allocated for the structure (date_type/ date). – Which of the following is/are the correct way(s) of referring to the variable day? a. day.date b. date_type.day Ver. 1.0 Slide 7 of 31
  • 8. Programming in C Practice: 7.2 (Contd.) – What change(s) should be made to the first declaration so that the structure date is created of type date_type? – Is the following statement valid in case of the second declaration? If not, why? struct date another_date; Ver. 1.0 Slide 8 of 31
  • 9. Programming in C Practice: 7.2 (Contd.) Solution: 1. date (date_type is only a structure type) 2. a. Invalid because the structure name precedes the variable name. b. Invalid because date_type is not actually created in memory, it is only a label. 3. The following statement should be added after the struct declaration: struct date_type date; 4. This is invalid because date is not a structure type but an actual structure in memory. Ver. 1.0 Slide 9 of 31
  • 10. Programming in C Passing Structures to Functions Passing Structures to Functions: – Structures may be passed to functions either by value or by reference. – Usually methods pass the address of the structure. – The name of the variable being referenced is preceded by the symbol . Ver. 1.0 Slide 10 of 31
  • 11. Programming in C Practice: 7.3 1. Consider the following code: struct date_type { int day; int month; int year; }; struct date_type date, *ptr; – How can the pointer variable ptr be assigned the address of the structure date? – Is the following statement valid? ptr = &date_type; c. Give alternative ways of referring to: i. &date.day ii. date.month Given that ptr has been assigned the address of the structure date. Ver. 1.0 Slide 11 of 31
  • 12. Programming in C Practice: 7.3 (Contd.) 2. Consider the incomplete code of a program that is given in the following file. The code uses a function called printmonth() that displays the month name corresponding to any month number. The month number is accepted into the member month of the structure date. The blanks have to be filled in appropriately. Microsoft Office Word 97 - 2003 Document Ver. 1.0 Slide 12 of 31
  • 13. Programming in C Practice: 7.3 (Contd.) Solution: 1. a. By using the following statement: ptr = &date; b. No. because date_type is not created in memory; it is only a label. c. i. &(ptr-> date) ii. ptr-> month 2. The statement to invoke printmonth() could be: printmonth(&date); /*invoke printmonth() by passing structure */ The missing lines in the code for printmonth() are: printmonth(point) struct date_type *point; point is the parameter of the function since it is used within the function to access members of the structure date. Ver. 1.0 Slide 13 of 31
  • 14. Programming in C Arrays of Structures Arrays of structures can also be created. It works in the same way as any other data type array. Consider the following example: struct prod data{ char prodname[8]; int no_of_sales; float tot_sale; }; An array for the preceding structure can be declared as: struct proddata prod_field[4]; The elements of the structure can be accessed as: prod_field [0].prodnam[0]; Ver. 1.0 Slide 14 of 31
  • 15. Programming in C Practice: 7.4 1. Declare a structure which will contain the following data for 3 employees: Employee code (3 characters) First name (20 characters) Middle initial (1 character) Last name (20 characters) The employee codes to be stored in this structure are E01, E02, and E03. 2. Write the code to input for all 3 employees, and print out the initials of each (e.g. Ashraf A Kumar would be printed as AAK) along with their codes. Ver. 1.0 Slide 15 of 31
  • 16. Programming in C Practice: 7.4 (Contd.) Solution: Microsoft Office Word 97 - 2003 Document Ver. 1.0 Slide 16 of 31
  • 17. Programming in C Working with Structures (Contd.) A structure can be used as a valid data type within another structure. For example, if date has been defined as: struct date{ int dd; int mm; int yy; }; • The date structure can be used in another structure as: struct trans_rec{ char transno[4]; char type; float amount; struct date tran_date; }; Ver. 1.0 Slide 17 of 31
  • 18. Programming in C Practice: 7.5 1. What will the following declaration do? typedef char sentence[50]; sentence complex[10]; Ver. 1.0 Slide 18 of 31
  • 19. Programming in C Practice: 7.5 (Contd.) Solution: 1. The first statement defines sentence as a data type consisting of an array of 50 characters. The second statement declares complex as a two-dimensional array, (an array of ten arrays of 50 characters each). Ver. 1.0 Slide 19 of 31
  • 20. Programming in C Using Structures in File Handling To store data permanently, it needs to be stored in a file. Mostly, the data, to be written in the file, is a logical group of information i.e. records. These records can be stored in structure variables. Hence, you need to write structures onto a file. Ver. 1.0 Slide 20 of 31
  • 21. Programming in C Writing Records onto a File Using Structures • The fwrite() function is used to write structures onto a file. • The fwrite() function has the following syntax: fwrite (constant pointer, sizeof (datatype), 1, FILE pointer); – The first parameter is a pointer to the data to be written. – The second parameter is the size of data to be written. – The third parameter is the number of objects or data to be written. – The fourth parameter is the pointer to file. Ver. 1.0 Slide 21 of 31
  • 22. Programming in C Practice: 7.6 Now that various assets of the transaction data entry program have been explained, these have to be consolidated and the entire program coded. The problem statement is repeated below. A transaction data entry program called dataent, used at the familiar Alcatel Automatics Company, has to be coded. The transaction file stores the data on transactions made by the salesmen of the company. The records consist of the following fields. Transaction number Salesman number Product number (numbered 1 to 4) Units sold Value of sale Value of sale is calculated in the program. Ver. 1.0 Slide 22 of 31
  • 23. Programming in C Practice: 7.6 (Contd.) The program should allow the user to indicate when he wants to stop data entry (i.e. it should keep accepting records until the user indicates that there are no more records). After all records have been entered, a report on the total number of sales and the total sale value for each product is to be printed in the following format (for each product). Product number : ___________________ Product name : ___________________ Total number of sales : ___________________ Total sale value : ___________________ Use the structures salesrec, salesdata, prodata, and prod_field defined earlier and code for the report printing within main(). Also use the code provided on page 7.2 and 7.3 in your solution. Ver. 1.0 Slide 23 of 31
  • 24. Programming in C Practice: 7.6 (Contd.) Solution: Microsoft Office Word 97 - 2003 Document Ver. 1.0 Slide 24 of 31
  • 25. Programming in C Reading Records from Files Using Structures • The fread() function is used to read data from a stream. • The fread() function has the following syntax: fread (ptr, sizeof, 1, fp); The first parameter is a pointer to the variable where the data is to be fetched. The second parameter is the size of data to be read. The third parameter is the number of objects or data to be read. The fourth parameter is the pointer to file. Ver. 1.0 Slide 25 of 31
  • 26. Programming in C Practice: 7.7 • Is the following statement to read the first 5 records of the file trans.dat valid? fread (ptr, (sizeof(salesrec) *5), 1, fp); If not state why and give the correct statement. No checks are to be done for an unsuccessful read. 2. Modify the above fread() statement to include an end-of- file check and also check whether the records have been read successfully. In case of end-of-file, display the message: End-of-file encountered and in case of other errors, display the message and exit: Unsuccessful read In case of a successful read, display the salesman number and transaction number of each record. Give all the structure declarations required. Ver. 1.0 Slide 26 of 31
  • 27. Programming in C Practice: 7.7 (Contd.) Solution: Microsoft Office Word 97 - 2003 Document Ver. 1.0 Slide 27 of 31
  • 28. Programming in C Practice: 7.8 • Debug the following program called dat.c using the error listing provided in the following file. Microsoft Office Word 97 - 2003 Document Ver. 1.0 Slide 28 of 31
  • 29. Programming in C Practice: 7.8 (Contd.) Solution: 1. The solution to this practice will be discussed in class. Work out your answer. Ver. 1.0 Slide 29 of 31
  • 30. Programming in C Summary In this session, you learned that: – Records can be defined in C by using structures. – Structure members can be of the same/different data type. – Memory is not reserved when a structure label is declared. A structure is created when it is declared as a struct of the same type as the structure label. – A member of a structure can be accessed as follows: structure-name.member-name A pointer to a structure can be used to pass a structure to a function. Using pointers, the structure members are accessed as follows: pointer-name->member-name Arrays of structures can be defined and initialized (if global or static). To access any member, an index has to be used after the structure name, as follows: structure-name [index ].member-name Ver. 1.0 Slide 30 of 31
  • 31. Programming in C Summary (Contd.) – The typedef statement can assign names to user-defined data types. These are treated the same way as data types provided by C. – The fread() function can read records from a file into a structure/array of structures. The format of the function is: fread (pointer, size of structure, number of objects to be read, file pointer); – The fread() function returns the number of objects read from the file. It does not return any special value in case of end-of-file. The feof() function is used in conjunction with fread() to check for end-of-file. – The fwrite() function can write a structure array of structures onto a file. All numeric data is written in compressed form. Usually, fread() and fwrite() are used in conjunction. Ver. 1.0 Slide 31 of 31

Editor's Notes

  1. Begin the session by explaining the objectives of the session.
  2. Discuss the need for structures. Compare structure with an array.
  3. Use this slide to test the student’s understanding on defining structures.
  4. Discuss the advantages of using a label in defining a structure. Tell the students that a structure variable can be directly assigned to another structure variable of the same type. You need not to copy elements individually.
  5. Use this slide to test the student’s understanding on defining structures.
  6. Tell the students that structures can be passed to other functions. The structures can be passed either by value or by reference.
  7. Use this slide to test the student’s understanding on passing structures to functions.
  8. Use this slide to test the student’s understanding on array of structures.
  9. Tell the students the way to access the elements of a structure, which is contained in another structure. Also, discuss the use of the typedef statement.
  10. Use this slide to test the student’s understanding on typedef statement.
  11. Use this slide to test the student’s understanding on the fwrite() function.
  12. Tell the students that they can use the feof() function to check for the end of file. The feof () function does not report end-of-file unless we try to read past the last character of the file. Consider the following code. while (!feof (fp)) { fread (&buf, sizeof (struct buf) , 1 , fp) ; printf (…) ; /* print data from structure */ } Once the last record is read , the feof () function does not return a non-zero value. It senses the end-of-file only after the next read which fails. The buffer buf would still contain the contents of the last record which will be printed again. An alternative would be: while (1) { fread (&buf , sizeof (struct buf) , 1 , fp) ; if (! feof ()) printf (…) ; /* print data from structure */ }
  13. Use this slide to test the student’s understanding on the fwrite() and fread() function.
  14. Use this slide to test the student’s understanding on reading and writing structures in a file.
  15. Use this and the next slide to summarize the session.