Bird
Raised Fist0
Cprogramming~10 mins

Writing to files in C - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to open a file named "output.txt" for writing.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "[1]");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Aa
Brw
Cw
Dr
Attempts:
3 left
💡 Hint
Common Mistakes
Using "r" mode which is for reading only.
Using "rw" which is not a valid mode in fopen.
2fill in blank
medium

Complete the code to write the string "Hello, World!" to the file.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    fprintf(file, "[1]\n");
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
AHello World
BHello, World!
CHello World!
DHello,World!
Attempts:
3 left
💡 Hint
Common Mistakes
Missing the comma or exclamation mark.
Writing without quotes or incorrect string format.
3fill in blank
hard

Fix the error in the code to properly close the file after writing.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    fprintf(file, "Hello, World!\n");
    [1](file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afclose
Bclose
Cfileclose
Dclosefile
Attempts:
3 left
💡 Hint
Common Mistakes
Using close() which is for low-level file descriptors, not FILE pointers.
Using incorrect function names like fileclose or closefile.
4fill in blank
hard

Fill both blanks to write an integer value 42 to the file using fprintf.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    int number = 42;
    fprintf(file, "[1]", [2]);
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
A"%d"
Bnumber
C"%s"
D42
Attempts:
3 left
💡 Hint
Common Mistakes
Using "%s" which is for strings.
Passing the literal 42 instead of the variable number.
5fill in blank
hard

Fill all three blanks to write multiple lines to a file using fprintf inside a loop.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "w");
    if (file == NULL) {
        perror("Error opening file");
        return 1;
    }
    for (int i = 1; i <= 3; i++) {
        fprintf(file, [1], [2], [3]);
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
A"Line %d: %s\n"
Bi
C"Hello"
D"Line %d\n"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a format string with only one placeholder.
Passing arguments in wrong order or missing arguments.

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