Bird
Raised Fist0
Cprogramming~30 mins

Writing to files in C - Mini Project: Build & Apply

Choose your learning style10 modes available
Writing to files
📖 Scenario: Imagine you want to save a list of your favorite fruits to a file on your computer so you can look at it later or share it with friends.
🎯 Goal: You will write a simple C program that creates a file and writes a list of fruits into it, one fruit per line.
📋 What You'll Learn
Create an array of strings with exact fruit names
Open a file for writing with the exact filename
Write each fruit to the file on its own line
Close the file properly
Print a confirmation message after writing
💡 Why This Matters
🌍 Real World
Saving data to files is common in many programs, like saving user preferences, logs, or reports.
💼 Career
Understanding file writing is essential for software developers working on data storage, configuration files, or any program that needs to save information.
Progress0 / 4 steps
1
Create the fruit list
Create a string array called fruits with these exact entries: "Apple", "Banana", "Cherry", "Date", "Elderberry".
C
Hint

Use char *fruits[] = { ... }; to create the array of fruit names.

2
Open the file for writing
Add a variable called file of type FILE * and open a file named "fruits.txt" for writing using fopen.
C
Hint

Use FILE *file = fopen("fruits.txt", "w"); to open the file for writing.

3
Write fruits to the file
Use a for loop with an integer variable i from 0 to 4 to write each fruit from fruits[i] to the file using fprintf, adding a newline after each fruit.
C
Hint

Use for (int i = 0; i < 5; i++) and inside the loop fprintf(file, "%s\n", fruits[i]);.

4
Close the file and print confirmation
Close the file using fclose(file) and then print "Fruits saved to fruits.txt" using printf. End the main function with return 0;.
C
Hint

Use fclose(file); to close the file and printf("Fruits saved to fruits.txt\n"); to print the message.

Practice

(1/5)
1. What does the mode "w" mean when used with fopen in C?
easy
A. Open a file for writing, creating it if it doesn't exist, or overwriting if it does.
B. Open a file for reading only.
C. Open a file for appending data at the end.
D. Open a file in binary mode for reading and writing.

Solution

  1. Step 1: Understand fopen modes

    The mode "w" in fopen means open for writing. If the file exists, it will be overwritten. If it doesn't exist, it will be created.
  2. Step 2: Compare with other modes

    Other modes like "r" are for reading, "a" for appending, and "wb" for binary write. "w" specifically means write with overwrite or create.
  3. Final Answer:

    Open a file for writing, creating it if it doesn't exist, or overwriting if it does. -> Option A
  4. Quick Check:

    fopen mode "w" = write with overwrite [OK]
Hint: Remember: "w" means write and overwrite file [OK]
Common Mistakes:
  • Confusing "w" with "a" (append mode)
  • Thinking "w" opens file for reading
  • Assuming "w" preserves existing content
2. Which of the following is the correct way to open a file named "data.txt" for writing in C?
easy
A. FILE *fp = fopen("data.txt", "w");
B. FILE *fp = fopen("data.txt", "r");
C. FILE *fp = fopen("data.txt", "a");
D. FILE *fp = open("data.txt", "w");

Solution

  1. Step 1: Identify correct function and mode

    In C, to open a file for writing, use fopen with mode "w". The function is fopen, not open.
  2. Step 2: Check each option

    FILE *fp = fopen("data.txt", "r"); uses mode "r" (read), not writing. FILE *fp = fopen("data.txt", "a"); uses "a" (append). FILE *fp = open("data.txt", "w"); uses open, which is not standard C file open function.
  3. Final Answer:

    FILE *fp = fopen("data.txt", "w"); -> Option A
  4. Quick Check:

    Use fopen with "w" to write [OK]
Hint: Use fopen with "w" to write files in C [OK]
Common Mistakes:
  • Using open() instead of fopen()
  • Using wrong mode like "r" or "a"
  • Forgetting to use double quotes around filename
3. What will be the output in the file "output.txt" after running this code?
FILE *fp = fopen("output.txt", "w");
fprintf(fp, "Hello %s!", "World");
fclose(fp);
medium
A. World!
B. Hello %s!
C. Hello World!
D. Compilation error

Solution

  1. Step 1: Understand fprintf usage

    fprintf writes formatted text to the file. The format string "Hello %s!" expects a string argument, which is "World" here.
  2. Step 2: Determine file content

    The file will contain the formatted string with %s replaced by "World", so the file content is "Hello World!".
  3. Final Answer:

    Hello World! -> Option C
  4. Quick Check:

    fprintf formats string correctly [OK]
Hint: fprintf formats and writes text to file [OK]
Common Mistakes:
  • Thinking %s prints literally
  • Forgetting to pass argument for %s
  • Assuming fprintf prints to console
4. Identify the error in this code snippet that writes "Test" to a file:
FILE *fp;
fp = fopen("test.txt", "w");
fprintf(fp, "Test");
medium
A. fopen mode "w" is incorrect for writing
B. File name should be a variable, not a string literal
C. fprintf syntax is wrong, needs format specifier
D. Missing fclose(fp) to close the file

Solution

  1. Step 1: Check file opening and writing

    The file is opened correctly with fopen and mode "w". fprintf syntax is correct to write "Test".
  2. Step 2: Check for missing file closure

    The code does not call fclose(fp), which is necessary to close the file and flush buffers properly.
  3. Final Answer:

    Missing fclose(fp) to close the file -> Option D
  4. Quick Check:

    Always close files with fclose [OK]
Hint: Always fclose after writing to file [OK]
Common Mistakes:
  • Forgetting fclose causes data loss
  • Confusing fopen modes
  • Thinking fprintf needs format specifier always
5. You want to write multiple lines to a file "log.txt" in C. Which code snippet correctly writes these lines and ensures the file is properly handled?
1) FILE *fp = fopen("log.txt", "w");
fprintf(fp, "Line 1\n");
fprintf(fp, "Line 2\n");
fclose(fp);

2) FILE *fp = fopen("log.txt", "r");
fprintf(fp, "Line 1\n");
fclose(fp);

3) FILE *fp = fopen("log.txt", "w");
fprintf(fp, "Line 1\nLine 2\n");
// missing fclose

4) FILE *fp = fopen("log.txt", "a");
fprintf(fp, "Line 1\n");
fclose(fp);
hard
A. Options 1 and 4
B. Option 1 only
C. Option 3 only
D. Option 2 only

Solution

  1. Step 1: Analyze each option's correctness

    Option 1 opens file with "w" (write), writes two lines separately, and closes file properly. This is correct.
  2. Step 2: Check other options

    Option 2 opens with "r" (read), so writing causes error. Option 3 writes lines but misses fclose, risking data loss. Option 4 opens with "a" (append), writes only one line, but the goal is multiple lines.
  3. Final Answer:

    Option 1 only -> Option B
  4. Quick Check:

    "w" + multiple fprintf + fclose [OK]
Hint: Use "w" mode and always fclose [OK]
Common Mistakes:
  • Using "r" mode when writing
  • Forgetting fclose after writing
  • Not understanding difference between "w" and "a"
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