Bird
Raised Fist0
Cprogramming~10 mins

Reading from 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 "data.txt" for reading.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", [1]);
    if (file == NULL) {
        printf("Failed to open file.\n");
        return 1;
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
A"w"
B"r"
C"a"
D"rw"
Attempts:
3 left
💡 Hint
Common Mistakes
Using "w" which opens the file for writing and erases content.
Using "a" which opens the file for appending.
2fill in blank
medium

Complete the code to read a single character from the file.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        return 1;
    }
    int ch = [1](file);
    if (ch != EOF) {
        printf("Character read: %c\n", ch);
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afputc
Bfgets
Cfread
Dfgetc
Attempts:
3 left
💡 Hint
Common Mistakes
Using fputc which writes a character to a file.
Using fgets which reads a string, not a single character.
3fill in blank
hard

Fix the error in the code to read a line from the file into buffer.

C
#include <stdio.h>

int main() {
    char buffer[100];
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        return 1;
    }
    if ([1](buffer, 100, file) != NULL) {
        printf("Line: %s", buffer);
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afgets
Bfgetc
Cfread
Dfputc
Attempts:
3 left
💡 Hint
Common Mistakes
Using fgetc which reads only one character.
Using fread which reads raw bytes and needs size parameters.
4fill in blank
hard

Fill both blanks to read the file character by character until EOF.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("data.txt", "r");
    if (file == NULL) {
        return 1;
    }
    int ch;
    while ((ch = [1](file)) [2] EOF) {
        putchar(ch);
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afgetc
Bfputc
C!=
D==
Attempts:
3 left
💡 Hint
Common Mistakes
Using fputc which writes characters.
Using == which would stop at the first character.
5fill in blank
hard

Fill all three blanks to read integers from a file until fscanf fails.

C
#include <stdio.h>

int main() {
    FILE *file = fopen("numbers.txt", "r");
    if (file == NULL) {
        return 1;
    }
    int num;
    while ([1](file, [2], &num) == [3]) {
        printf("Number: %d\n", num);
    }
    fclose(file);
    return 0;
}
Drag options to blanks, or click blank then click option'
Afscanf
B"%d"
C1
Dfgets
Attempts:
3 left
💡 Hint
Common Mistakes
Using fgets which reads strings, not formatted integers.
Checking for return value 0 or EOF instead of 1.

Practice

(1/5)
1. What does the fopen() function with mode "r" do in C?
easy
A. It deletes a file.
B. It opens a file for reading only.
C. It creates a new file.
D. It opens a file for writing only.

Solution

  1. Step 1: Understand fopen modes

    The mode "r" in fopen means open the file for reading only.
  2. Step 2: Check other modes

    Modes like "w" are for writing, "a" for appending, and none delete files.
  3. Final Answer:

    It opens a file for reading only. -> Option B
  4. Quick Check:

    fopen with "r" = open for reading [OK]
Hint: Remember: "r" means read only mode in fopen [OK]
Common Mistakes:
  • Confusing "r" with write mode "w"
  • Thinking fopen deletes or creates files with "r"
  • Not checking if file exists before reading
2. Which of the following is the correct way to open a file named data.txt for reading in C?
easy
A. FILE *fp = fopen("data.txt", "r");
B. FILE *fp = fopen("data.txt", "w");
C. FILE *fp = fopen("data.txt", "a");
D. FILE *fp = fopen("data.txt");

Solution

  1. Step 1: Check fopen syntax

    fopen requires two arguments: filename and mode as strings.
  2. Step 2: Identify correct mode for reading

    "r" is the mode to open a file for reading.
  3. Final Answer:

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

    Correct fopen syntax with "r" mode = FILE *fp = fopen("data.txt", "r"); [OK]
Hint: Always use two arguments in fopen: filename and mode [OK]
Common Mistakes:
  • Using "w" mode which opens for writing, not reading
  • Omitting the mode argument in fopen
  • Using "a" mode which opens for appending
3. What will be the output of the following C code if the file input.txt contains the line "Hello"?
FILE *fp = fopen("input.txt", "r");
char buffer[10];
fgets(buffer, 10, fp);
printf("%s", buffer);
fclose(fp);
medium
A. Hello\n
B. Hello
C. Hello\0
D. Error: file not found

Solution

  1. Step 1: Understand fgets behavior

    fgets reads a line including the newline character if it fits in the buffer.
  2. Step 2: Check file content and output

    The file has "Hello" followed by a newline, so fgets reads "Hello\n" and prints it.
  3. Final Answer:

    Hello\n -> Option A
  4. Quick Check:

    fgets includes newline if present = Hello\n [OK]
Hint: fgets reads newline character if space allows [OK]
Common Mistakes:
  • Assuming fgets removes newline automatically
  • Confusing null terminator with newline
  • Not checking if file opened successfully
4. Identify the error in this code snippet that reads a character from a file:
FILE *fp = fopen("file.txt", "r");
char c;
c = fgetc(fp);
printf("%c", c);
fclose(fp);
medium
A. fclose should be called before reading.
B. fgetc should be replaced with fgets.
C. Variable c should be an int, not char.
D. Missing check if fopen returned NULL before reading.

Solution

  1. Step 1: Check file open validation

    Always check if fopen returns NULL before reading to avoid errors.
  2. Step 2: Review other parts

    fgetc is correct for reading one char; c as char is acceptable; fclose after reading is correct.
  3. Final Answer:

    Missing check if fopen returned NULL before reading. -> Option D
  4. Quick Check:

    Always check fopen result before file operations [OK]
Hint: Check fopen != NULL before reading file [OK]
Common Mistakes:
  • Skipping NULL check after fopen
  • Confusing fgetc and fgets usage
  • Closing file too early
5. You want to read all lines from a file log.txt and print them. Which code snippet correctly does this in C?
hard
A. FILE *fp = fopen("log.txt", "r"); char c; while((c = fgetc(fp)) != EOF) { printf("%c", c); } fclose(fp);
B. FILE *fp = fopen("log.txt", "w"); char line[100]; while(fgets(line, 100, fp) != NULL) { printf("%s", line); } fclose(fp);
C. FILE *fp = fopen("log.txt", "r"); char line[100]; while(fgets(line, 100, fp) != NULL) { printf("%s", line); } fclose(fp);
D. FILE *fp = fopen("log.txt", "r"); char line[100]; while(fgets(line, 100, fp)) { printf(line); } fclose(fp);

Solution

  1. Step 1: Check file open mode

    Opening with "r" is correct for reading; "w" would overwrite the file.
  2. Step 2: Validate reading loop and printing

    Using fgets with NULL check is correct; printf with "%s" is safe and prints lines properly.
  3. Step 3: Review other options

    FILE *fp = fopen("log.txt", "w"); char line[100]; while(fgets(line, 100, fp) != NULL) { printf("%s", line); } fclose(fp); uses wrong mode "w"; FILE *fp = fopen("log.txt", "r"); char c; while((c = fgetc(fp)) != EOF) { printf("%c", c); } fclose(fp); reads char by char, not lines; FILE *fp = fopen("log.txt", "r"); char line[100]; while(fgets(line, 100, fp)) { printf(line); } fclose(fp); uses printf(line) without format string, unsafe.
  4. Final Answer:

    Correct reading lines with fgets and printing with printf("%s", line). -> Option C
  5. Quick Check:

    Use fgets + printf("%s") + fopen with "r" [OK]
Hint: Use fgets in loop with NULL check and printf("%s") [OK]
Common Mistakes:
  • Opening file with wrong mode "w" for reading
  • Using printf without format string
  • Reading char by char when lines needed
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