Bird
Raised Fist0
Cprogramming~20 mins

File modes in C - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
File Modes Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this C code when opening a file in "w" mode?
Consider the following C code snippet that opens a file in write mode and writes a string. What will be the content of the file after running this code?
C
#include <stdio.h>

int main() {
    FILE *fp = fopen("testfile.txt", "w");
    if (fp == NULL) return 1;
    fprintf(fp, "Hello, world!\n");
    fclose(fp);
    return 0;
}
AThe file "testfile.txt" will contain the text "Hello, world!\n".
BThe file "testfile.txt" will contain garbage data because the file was not opened in binary mode.
CThe file "testfile.txt" will be empty because "w" mode does not write data.
DThe program will crash because "w" mode cannot create files.
Attempts:
2 left
💡 Hint
Remember that "w" mode creates the file if it does not exist and truncates it if it does.
❓ Predict Output
intermediate
2:00remaining
What happens when opening a file in "r" mode if the file does not exist?
What will the following C code print if "nofile.txt" does not exist?
C
#include <stdio.h>

int main() {
    FILE *fp = fopen("nofile.txt", "r");
    if (fp == NULL) {
        printf("File not found\n");
    } else {
        printf("File opened\n");
        fclose(fp);
    }
    return 0;
}
AThe program crashes with segmentation fault
BFile opened
CFile not found
DThe program prints nothing
Attempts:
2 left
💡 Hint
Opening a file in "r" mode requires the file to exist.
❓ Predict Output
advanced
2:00remaining
What is the output of this code using "a" mode to append to a file?
Assuming "append.txt" initially contains "Line1\n", what will be the content of the file after running this code?
C
#include <stdio.h>

int main() {
    FILE *fp = fopen("append.txt", "a");
    if (fp == NULL) return 1;
    fprintf(fp, "Line2\n");
    fclose(fp);
    return 0;
}
AThe file is empty
B"Line1\nLine2\n"
C"Line2\n"
D"Line1\n"
Attempts:
2 left
💡 Hint
The "a" mode appends data to the end of the file without deleting existing content.
❓ Predict Output
advanced
2:00remaining
What error does this code raise when opening a file with mode "r+" if the file does not exist?
Consider this code snippet. What will happen if "data.txt" does not exist?
C
#include <stdio.h>

int main() {
    FILE *fp = fopen("data.txt", "r+");
    if (fp == NULL) {
        perror("Error opening file");
        return 1;
    }
    fclose(fp);
    return 0;
}
AError opening file: No such file or directory
BThe file is created and opened successfully
CSegmentation fault
DNo output, program runs silently
Attempts:
2 left
💡 Hint
The "r+" mode requires the file to exist for reading and writing.
❓ Predict Output
expert
2:00remaining
What is the content of the file after this code runs with mode "w+"?
Given the file "example.txt" initially contains "OldContent\n", what will be the content after running this code?
C
#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w+");
    if (fp == NULL) return 1;
    fprintf(fp, "NewContent\n");
    fseek(fp, 0, SEEK_SET);
    char buffer[20];
    fgets(buffer, sizeof(buffer), fp);
    printf("Read from file: %s", buffer);
    fclose(fp);
    return 0;
}
AThe program crashes
BRead from file: OldContent\n
CRead from file: NewContent\n
DRead from file: (empty line)
Attempts:
2 left
💡 Hint
Opening with "w+" truncates the file, but reading immediately after writing requires a flush or reposition.

Practice

(1/5)
1. Which file mode in C opens a file for reading only, without allowing any changes to the file?
easy
A. "w" mode
B. "r" mode
C. "a" mode
D. "rw" mode

Solution

  1. Step 1: Understand file modes in C

    "r" mode opens a file for reading only, without modifying it.
  2. Step 2: Compare other modes

    "w" mode opens for writing and clears the file; "a" mode appends; "rw" is invalid in C.
  3. Final Answer:

    "r" mode -> Option B
  4. Quick Check:

    Read-only mode = "r" [OK]
Hint: Read-only files use "r" mode in C [OK]
Common Mistakes:
  • Confusing "w" with read mode
  • Using "rw" which is invalid in C
  • Thinking "a" allows reading
2. Which of the following is the correct syntax 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, fopen opens files; "w" mode opens for writing.
  2. Step 2: Check other options

    FILE *fp = fopen("data.txt", "r"); uses "r" (read), C uses "a" (append), D uses wrong function open.
  3. Final Answer:

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

    Write mode uses fopen with "w" [OK]
Hint: Use fopen with "w" to write files in C [OK]
Common Mistakes:
  • Using open() instead of fopen()
  • Confusing "r" with write mode
  • Using "a" when write mode is needed
3. What will be the output of the following C code snippet?
FILE *fp = fopen("test.txt", "w");
fputs("Hello", fp);
fclose(fp);

fp = fopen("test.txt", "a");
fputs(" World", fp);
fclose(fp);

fp = fopen("test.txt", "r");
char buffer[20];
fgets(buffer, 20, fp);
printf("%s", buffer);
fclose(fp);
medium
A. Hello
B. Error
C. Hello World
D. World

Solution

  1. Step 1: Write "Hello" to file with "w" mode

    Opening with "w" clears file and writes "Hello".
  2. Step 2: Append " World" with "a" mode

    Opening with "a" adds " World" at the end without erasing.
  3. Step 3: Read file content with "r" mode

    Reading file returns "Hello World" in buffer.
  4. Final Answer:

    Hello World -> Option C
  5. Quick Check:

    Write + Append + Read = "Hello World" [OK]
Hint: "w" clears file, "a" adds at end, reading shows combined text [OK]
Common Mistakes:
  • Assuming "a" overwrites file
  • Forgetting "w" clears file
  • Expecting only "Hello" output
4. Identify the error in this C code snippet that tries to open a file for appending:
FILE *fp;
fp = fopen("log.txt", "wa");
if (fp == NULL) {
    printf("Failed to open file\n");
}
medium
A. Incorrect file mode string "wa"
B. Missing fclose(fp) after opening
C. Using printf instead of perror
D. File name should be absolute path

Solution

  1. Step 1: Check file mode string validity

    "wa" is not a valid mode; modes must be "r", "w", "a" or with "b" for binary.
  2. Step 2: Understand consequences

    Invalid mode causes fopen to fail and return NULL.
  3. Final Answer:

    Incorrect file mode string "wa" -> Option A
  4. Quick Check:

    File modes must be valid strings like "a" or "w" [OK]
Hint: File modes are single valid strings like "r", "w", or "a" [OK]
Common Mistakes:
  • Combining modes incorrectly like "wa"
  • Ignoring fopen failure check
  • Assuming "wa" means write and append
5. You want to create a log file that preserves old logs and adds new entries each time your program runs. Which file mode should you use in C to open the file, and why?
hard
A. "w" mode, because it clears old logs and writes fresh data
B. "r" mode, because it reads existing logs before adding new ones
C. "r+" mode, because it allows reading and writing at the start
D. "a" mode, because it appends new logs preserving old content

Solution

  1. Step 1: Understand log file requirements

    Logs must keep old entries and add new ones without erasing.
  2. Step 2: Match file mode to requirement

    "a" mode appends data at the end, preserving existing content.
  3. Step 3: Evaluate other modes

    "w" clears file, "r" only reads, "r+" reads/writes but doesn't append automatically.
  4. Final Answer:

    "a" mode, because it appends new logs preserving old content -> Option D
  5. Quick Check:

    Append mode "a" preserves and adds data [OK]
Hint: Use "a" mode to add without deleting old file content [OK]
Common Mistakes:
  • Using "w" which erases old logs
  • Thinking "r" can write
  • Confusing "r+" with append mode
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