Bird
Raised Fist0
Cprogramming~10 mins

Opening and closing files - 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 "data.txt" for reading.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("data.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'
Ar
Ba
Cx
Dw
Attempts:
3 left
💡 Hint
Common Mistakes
Using "w" which opens the file for writing and truncates it.
Using "a" which opens the file for appending.
Using "x" which creates a new file but fails if it exists.
2fill in blank
medium

Complete the code to close the opened file pointer named "fp".

C
#include <stdio.h>

int main() {
    FILE *fp = fopen("log.txt", "w");
    if (fp == NULL) {
        return 1;
    }
    // Write something to the file
    fprintf(fp, "Hello, file!\n");
    [1](fp);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afopen
Bclose
Copen
Dfclose
Attempts:
3 left
💡 Hint
Common Mistakes
Using close(fp) which is not a standard C function for FILE pointers.
Using fopen(fp) which opens files, not closes.
Using open(fp) which is a system call, not for FILE pointers.
3fill in blank
hard

Fix the error in the code to open a file for appending text.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("output.txt", "[1]");
    if (file == NULL) {
        perror("Failed to open file");
        return 1;
    }
    fprintf(file, "Appending this line.\n");
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Ar
Bw
Ca
Drw
Attempts:
3 left
💡 Hint
Common Mistakes
Using "r" which opens for reading only.
Using "w" which truncates the file.
Using "rw" which is not a valid mode string.
4fill in blank
hard

Fill both blanks to open a file for writing and check if it opened successfully.

C
#include <stdio.h>

int main() {
    FILE *fp = fopen("test.txt", "[1]");
    if (fp == [2]) {
        perror("Cannot open file");
        return 1;
    }
    fclose(fp);
    return 0;
}
Drag options to blanks, or click blank then click option'
Aw
Br
CNULL
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using "r" mode which opens for reading, not writing.
Checking if fp equals 0 instead of NULL.
Using wrong mode strings.
5fill in blank
hard

Fill all three blanks to open a file for reading, check for errors, and close it.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("input.txt", "[1]");
    if (file == [2]) {
        perror("Error opening file");
        return 1;
    }
    // File operations here
    [3](file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Aw
BNULL
Cfclose
Dr
Attempts:
3 left
💡 Hint
Common Mistakes
Using "w" mode which overwrites the file.
Checking if file pointer equals 0 instead of NULL.
Forgetting to close the file.

Practice

(1/5)
1. What does the fopen function do in C programming?
easy
A. It closes an open file stream.
B. It opens a file and returns a pointer to the file stream.
C. It reads data from a file.
D. It writes data to a file.

Solution

  1. Step 1: Understand the purpose of fopen

    The fopen function is used to open a file and returns a pointer to the file stream if successful.
  2. Step 2: Differentiate fopen from other file functions

    Functions like fclose close files, fread reads data, and fwrite writes data. Only fopen opens files.
  3. Final Answer:

    It opens a file and returns a pointer to the file stream. -> Option B
  4. Quick Check:

    fopen = open file pointer [OK]
Hint: fopen opens files, fclose closes them [OK]
Common Mistakes:
  • Confusing fopen with fclose
  • Thinking fopen reads or writes data
  • Not knowing fopen returns NULL on failure
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 = open("data.txt", "w");
D. FILE fp = fopen("data.txt", "w");

Solution

  1. Step 1: Identify correct fopen syntax

    The correct syntax uses FILE * pointer and fopen with filename and mode as strings.
  2. Step 2: Check mode for writing

    Mode "w" opens the file for writing. "r" is for reading, and open is not a standard C function for files.
  3. Final Answer:

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

    fopen + "w" = open for writing [OK]
Hint: Use FILE * and fopen with mode "w" to write [OK]
Common Mistakes:
  • Using open instead of fopen
  • Declaring FILE variable instead of pointer
  • Using wrong mode like "r" for writing
3. What will be the output of the following C code snippet?
FILE *fp = fopen("nonexistent.txt", "r");
if (fp == NULL) {
    printf("File not found\n");
} else {
    printf("File opened successfully\n");
    fclose(fp);
}
medium
A. File opened successfully
B. No output
C. File not found
D. Compilation error

Solution

  1. Step 1: Understand fopen with "r" mode on nonexistent file

    Opening a file for reading with "r" mode returns NULL if the file does not exist.
  2. Step 2: Check the if condition

    The code checks if fp == NULL, then prints "File not found". Since file does not exist, this condition is true.
  3. Final Answer:

    File not found -> Option C
  4. Quick Check:

    fopen returns NULL if file missing [OK]
Hint: fopen returns NULL if file missing in "r" mode [OK]
Common Mistakes:
  • Assuming fopen creates file in "r" mode
  • Not checking for NULL before using file pointer
  • Expecting "File opened successfully" always
4. Identify the error in the following code snippet:
FILE *fp;
fp = fopen("file.txt", "w");
printf("File opened\n");
// Missing fclose here
medium
A. fopen mode "w" is incorrect
B. File pointer is not checked for NULL
C. printf statement is incorrect
D. fclose is missing to close the file

Solution

  1. Step 1: Check fopen usage and mode

    The fopen call with mode "w" is correct to open file for writing.
  2. Step 2: Identify missing fclose

    The code opens the file but never closes it with fclose, which can cause resource leaks.
  3. Final Answer:

    fclose is missing to close the file -> Option D
  4. Quick Check:

    Always fclose after fopen [OK]
Hint: Always close files with fclose after opening [OK]
Common Mistakes:
  • Ignoring fclose causes resource leaks
  • Not checking fopen return value
  • Thinking printf affects file handling
5. You want to append text to an existing file "log.txt" safely. Which code snippet correctly opens the file, checks for errors, writes "Hello\n", and closes the file?
hard
A. FILE *fp = fopen("log.txt", "a"); if (fp == NULL) { perror("Error opening file"); } else { fprintf(fp, "Hello\n"); fclose(fp); }
B. FILE *fp = fopen("log.txt", "w"); if (fp != NULL) { fprintf(fp, "Hello\n"); fclose(fp); }
C. FILE *fp = fopen("log.txt", "r"); fprintf(fp, "Hello\n"); fclose(fp);
D. FILE *fp = fopen("log.txt", "a"); fprintf(fp, "Hello\n"); // no fclose

Solution

  1. Step 1: Choose correct mode for appending

    Mode "a" opens file for appending without erasing existing content.
  2. Step 2: Check for NULL and handle errors

    Always check if fopen returns NULL before writing. Use perror to show error if NULL.
  3. Step 3: Write and close file properly

    Use fprintf to write text and fclose to close file to avoid leaks.
  4. Final Answer:

    FILE *fp = fopen("log.txt", "a"); if (fp == NULL) { perror("Error opening file"); } else { fprintf(fp, "Hello\n"); fclose(fp); } -> Option A
  5. Quick Check:

    Append mode + check NULL + fclose = safe file write [OK]
Hint: Use "a" mode, check NULL, fclose after writing [OK]
Common Mistakes:
  • Using "w" mode erases file instead of appending
  • Not checking fopen return value before writing
  • Forgetting to close file with fclose
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