I need a C program that will do this. Open the picture in a new tab to look clear.
Write a program that reads data about people from a file. You are supposed to create a quick data file for testing purposes yourself, which has the following structure:
Each line contains a record of data about exactly one person. Each record has the person's name, followed by a space, followed by the person's age.
Unlike in other assignments, there is no indication of how many records there will be in the file. Also, we don't want to assume that you do a first scan to find out. Instead, I ask you to solve the problem of creating enough space for all the records by incrementally reading one record at a time, putting it into a struct person, and linking that structure to the list of person structures that is already there. This means that your person structure needs to contain a pointer to the next structure in the list. This also means that you need to keep track of the structure that is the head of the list, as well as the structure that is at the end of the list, by maintaining corresponding pointers.
Here is a critical piece of code. It reads a record from the file, creates the space (i.e. structure) to hold the data, and updates the pointers involved:
while (fscanf(people_data, "%s %d", person_current->name, &person_current->age) == 2) {
person_current->next = NULL; // provide space for the new last person
// set the new last person
person_last->next = person_current;
// copy the current person's data just read into the new last person
*person_last = *person_current;
// update age total and number of records
age_total += person_current->age;
number_records++;
}
I want you to write a program that reads person data out of the above-described data file, puts the data into a linked list of person structures, and then prints out the names of those persons who are older than the average of that sample. To get you going, I attach the simple program that we developed to get you started with structures.