Bird
Raised Fist0
Cprogramming~20 mins

Accessing structure members - Mini Project: Build & Apply

Choose your learning style10 modes available
Accessing structure members
📖 Scenario: You are working on a simple program to store and display information about a book. You will create a structure to hold the book's title and number of pages, then access and print these details.
🎯 Goal: Build a C program that defines a struct for a book with a title and page count, assigns values to its members, and prints them.
📋 What You'll Learn
Define a struct named Book with members title (string) and pages (integer).
Create a variable of type Book named myBook.
Assign the title "C Programming" to myBook.title.
Assign the number 250 to myBook.pages.
Print the book's title and page count using printf.
💡 Why This Matters
🌍 Real World
Structures help organize related data together, like storing information about books, students, or products in a program.
💼 Career
Understanding structures is essential for C programming jobs, especially in systems programming, embedded systems, and software development where grouping data logically is important.
Progress0 / 4 steps
1
Define the Book structure
Define a struct named Book with two members: title as a character array of size 50, and pages as an integer.
C
Hint

Use struct Book { char title[50]; int pages; }; to define the structure.

2
Create a Book variable and assign values
Create a variable named myBook of type struct Book. Assign the string "C Programming" to myBook.title using strcpy, and assign the integer 250 to myBook.pages. Include #include <string.h> at the top.
C
Hint

Remember to include #include <string.h> to use strcpy.

3
Access and print the structure members
Inside the main function, use printf to print the book's title and page count from myBook. Use myBook.title and myBook.pages to access the members.
C
Hint

Use printf("Title: %s\n", myBook.title); and printf("Pages: %d\n", myBook.pages); to print.

4
Run and check the output
Run the program and ensure it prints exactly:
Title: C Programming
Pages: 250
C
Hint

Make sure your output matches exactly, including capitalization and spacing.

Practice

(1/5)
1. Which operator is used to access members of a structure variable in C?
easy
A. Colon operator (:)
B. Arrow operator (->)
C. Double colon (::)
D. Dot operator (.)

Solution

  1. Step 1: Understand structure member access

    In C, when you have a structure variable, you use the dot operator (.) to access its members.
  2. Step 2: Differentiate from pointer access

    The arrow operator (->) is used when you have a pointer to a structure, not the structure variable itself.
  3. Final Answer:

    Dot operator (.) -> Option D
  4. Quick Check:

    Structure variable member access = dot operator (.) [OK]
Hint: Use dot (.) for struct variables, arrow (->) for pointers [OK]
Common Mistakes:
  • Confusing dot (.) with arrow (->) operator
  • Using colon (:) which is invalid in C
  • Using double colon (::) which is from other languages
2. Given the structure struct Point { int x; int y; } p;, which is the correct way to assign 10 to member x?
easy
A. p->x = 10;
B. p:x = 10;
C. p.x = 10;
D. p[x] = 10;

Solution

  1. Step 1: Identify the variable type

    Here, p is a structure variable, not a pointer.
  2. Step 2: Use correct member access syntax

    For structure variables, use the dot operator (.) to access members, so p.x = 10; is correct.
  3. Final Answer:

    p.x = 10; -> Option C
  4. Quick Check:

    Structure variable assignment uses dot (.) [OK]
Hint: Use dot (.) for struct variables, arrow (->) only for pointers [OK]
Common Mistakes:
  • Using arrow (->) with non-pointer variable
  • Using colon (:) which is invalid syntax
  • Using array-like syntax on struct members
3. What is the output of this code?
struct Person {
  char name[10];
  int age;
};

int main() {
  struct Person p = {"Amy", 25};
  printf("%s %d", p.name, p.age);
  return 0;
}
medium
A. Amy 25
B. Amy 0
C. Error: cannot assign string to array
D. Random garbage values

Solution

  1. Step 1: Understand structure initialization

    The structure p is initialized with "Amy" for name and 25 for age.
  2. Step 2: Print structure members

    The printf prints p.name as a string and p.age as an integer, so output is Amy 25.
  3. Final Answer:

    Amy 25 -> Option A
  4. Quick Check:

    Struct initialized correctly, prints members [OK]
Hint: Initialize structs with braces; access members with dot [OK]
Common Mistakes:
  • Thinking string assignment to array is invalid here
  • Confusing pointer and array initialization
  • Expecting syntax error for string in struct
4. Identify the error in this code snippet:
struct Data {
  int id;
  float value;
};

int main() {
  struct Data d;
  d->id = 5;
  d.value = 3.14;
  return 0;
}
medium
A. Using arrow operator (->) with structure variable
B. Missing semicolon after struct definition
C. Incorrect float assignment
D. No error, code is correct

Solution

  1. Step 1: Check member access operators

    The variable d is a structure variable, not a pointer, so d->id is incorrect.
  2. Step 2: Correct operator usage

    Use dot operator (.) for structure variables: d.id = 5; is correct.
  3. Final Answer:

    Using arrow operator (->) with structure variable -> Option A
  4. Quick Check:

    Arrow (->) only for pointers, dot (.) for variables [OK]
Hint: Use dot (.) for struct variables, arrow (->) only for pointers [OK]
Common Mistakes:
  • Using arrow (->) on non-pointer struct variable
  • Ignoring dot operator for member access
  • Assuming no error when mixing operators
5. Consider this code:
struct Employee {
  char name[20];
  int id;
};

int main() {
  struct Employee emp1 = {"John", 101};
  struct Employee *ptr = &emp1;
  ptr->id = 202;
  printf("%s %d", emp1.name, emp1.id);
  return 0;
}
What will be the output?
hard
A. John 101
B. John 202
C. Error: cannot use arrow operator here
D. John 0

Solution

  1. Step 1: Understand pointer to structure

    ptr points to emp1, so ptr->id changes emp1.id.
  2. Step 2: Update and print values

    After ptr->id = 202;, emp1.id becomes 202. Printing emp1.name and emp1.id outputs John 202.
  3. Final Answer:

    John 202 -> Option B
  4. Quick Check:

    Pointer access updates struct member correctly [OK]
Hint: Use arrow (->) with pointers to structs to access members [OK]
Common Mistakes:
  • Thinking arrow operator causes error with pointers
  • Not realizing pointer changes original struct
  • Confusing dot and arrow operators with pointers
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard