Bird
Raised Fist0
MATLABdata~20 mins

Writing text files (writetable, fprintf) in MATLAB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Text File Writing 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 fprintf code?
Consider the following MATLAB code that writes formatted text to a file. What will be the content of the file after running this code?
MATLAB
fid = fopen('output.txt', 'w');
fprintf(fid, 'Value: %d\n', 42);
fclose(fid);
file_content = fileread('output.txt');
disp(file_content);
A
Value: %d
B24 :eulaV
C
Value: 42
DError: File not found
Attempts:
2 left
💡 Hint
Remember that fprintf with '%d' replaces the placeholder with the integer value and '\n' adds a new line.
❓ Predict Output
intermediate
2:00remaining
What does writetable write to the file?
Given this MATLAB code, what will be the content of 'data.csv' after execution?
MATLAB
T = table([1;2;3], {'A';'B';'C'}, 'VariableNames', {'ID', 'Letter'});
writetable(T, 'data.csv');
content = fileread('data.csv');
disp(content);
AError: VariableNames not supported
B
ID,Letter
1,A
2,B
3,C
C
ID Letter
1 A
2 B
3 C
D
1,A
2,B
3,C
Attempts:
2 left
💡 Hint
writetable writes variable names as headers by default and separates values with commas in CSV format.
🔧 Debug
advanced
2:00remaining
Why does this fprintf code produce an error?
Examine the code below. Why does it cause an error when run?
MATLAB
fid = fopen('test.txt', 'w');
fprintf(fid, 'Number: %d %f\n', 5);
fclose(fid);
Afprintf expects two values for '%d' and '%f' but only one is provided, causing an error.
Bfopen failed to open the file, so fprintf errors out.
CThe format string is invalid because '%f' cannot be used with fprintf.
Dfclose is called before fprintf, causing an error.
Attempts:
2 left
💡 Hint
Check how many values fprintf expects based on the format string placeholders.
📝 Syntax
advanced
2:00remaining
Which option correctly writes a table without row names?
You want to write a table to a CSV file without including row names. Which code does this correctly?
MATLAB
T = table([10;20], {'X';'Y'}, 'VariableNames', {'Num', 'Char'});
Awritetable(T, 'file.csv', 'RowNames', false);
Bwritetable(T, 'file.csv', 'WriteRowNames', true);
Cwritetable(T, 'file.csv', 'IncludeRowNames', false);
Dwritetable(T, 'file.csv', 'WriteRowNames', false);
Attempts:
2 left
💡 Hint
Check the exact parameter name for controlling row names in writetable.
🚀 Application
expert
2:00remaining
How many lines are written by this fprintf loop?
This MATLAB code writes lines to a file. How many lines will the file contain after running?
MATLAB
fid = fopen('log.txt', 'w');
for i = 1:5
    fprintf(fid, 'Line %d\n', i);
end
fclose(fid);
content = fileread('log.txt');
lines = count(content, '\n');
A5
B6
C4
D1
Attempts:
2 left
💡 Hint
Each fprintf call writes one line ending with '\n'. Count how many times the loop runs.

Practice

(1/5)
1. Which MATLAB function is best suited to save a table as a CSV file quickly?
easy
A. writetable
B. fprintf
C. fopen
D. load

Solution

  1. Step 1: Understand the purpose of writetable

    writetable is designed to save MATLAB tables directly to files like CSV with minimal code.
  2. Step 2: Compare with other functions

    fprintf is for custom text formatting, fopen opens files but doesn't save tables, and load is for loading data, not saving.
  3. Final Answer:

    writetable -> Option A
  4. Quick Check:

    Save table fast = writetable [OK]
Hint: Use writetable to save tables directly as CSV files [OK]
Common Mistakes:
  • Confusing fprintf with writetable for saving tables
  • Using fopen alone to save data
  • Thinking load saves files
2. Which of the following is the correct syntax to open a file named 'data.txt' for writing in MATLAB?
easy
A. fid = fopen('data.txt', 'w');
B. fid = fopen('data.txt', 'r');
C. fid = fopen('data.txt', 'a');
D. fid = fopen('data.txt', 'x');

Solution

  1. Step 1: Understand fopen modes

    'r' is read-only, 'w' is write (creates or overwrites), 'a' appends, 'x' creates new file but errors if exists.
  2. Step 2: Choose mode for writing

    To write fresh data, use 'w' mode to open file for writing.
  3. Final Answer:

    fid = fopen('data.txt', 'w'); -> Option A
  4. Quick Check:

    Open file for writing = 'w' mode [OK]
Hint: 'w' mode in fopen opens file for writing (overwrite) [OK]
Common Mistakes:
  • Using 'r' mode which is read-only
  • Using 'a' when overwrite is needed
  • Confusing 'x' mode with 'w'
3. What will be the output file content after running this MATLAB code?
fid = fopen('output.txt', 'w');
fprintf(fid, 'Value: %d\n', 42);
fclose(fid);
medium
A. 42
B. Value: 42
C. Value: %d
D. Error: File not closed

Solution

  1. Step 1: Analyze fprintf formatting

    fprintf writes formatted text. '%d' is replaced by integer 42, '\n' adds a newline.
  2. Step 2: Check file closing

    fclose(fid) properly closes the file, so no error occurs.
  3. Final Answer:

    Value: 42 -> Option B
  4. Quick Check:

    Formatted integer output = Value: 42 [OK]
Hint: fprintf replaces %d with number, remember to fclose [OK]
Common Mistakes:
  • Forgetting to close the file
  • Expecting %d to appear literally
  • Confusing output with just the number
4. Identify the error in this MATLAB code snippet that writes numbers to a file:
fid = fopen('numbers.txt', 'w');
fprintf(fid, '%d\n', 1:5);
% Missing fclose(fid)
medium
A. Missing file open mode
B. Using range 1:5 is invalid
C. Incorrect format specifier in fprintf
D. Missing fclose to close the file

Solution

  1. Step 1: Check file opening

    fopen uses 'w' mode correctly, so file opens for writing.
  2. Step 2: Check file closing

    The code does not call fclose(fid), which is necessary to save and release the file.
  3. Final Answer:

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

    Always fclose after writing [OK]
Hint: Always fclose after writing to save file properly [OK]
Common Mistakes:
  • Forgetting fclose causes incomplete writes
  • Thinking fprintf needs different format for vectors
  • Assuming fopen mode is missing
5. You want to save a table T with columns 'Name' and 'Score' to a CSV file, but only include rows where Score > 50. Which MATLAB code correctly does this?
hard
A. fid = fopen('filtered.csv', 'w'); fprintf(fid, '%s, %d\n', T.Name, T.Score); fclose(fid);
B. fprintf('filtered.csv', '%s, %d\n', T.Name, T.Score);
C. writetable(T(T.Score > 50, :), 'filtered.csv');
D. writetable(T, 'filtered.csv');

Solution

  1. Step 1: Filter rows where Score > 50

    Use logical indexing: T.Score > 50 selects rows with Score greater than 50.
  2. Step 2: Use writetable to save filtered table

    Pass filtered rows T(T.Score > 50, :) to writetable to save only those rows.
  3. Final Answer:

    writetable(T(T.Score > 50, :), 'filtered.csv'); -> Option C
  4. Quick Check:

    Filter rows then writetable = writetable(T(T.Score > 50, :), 'filtered.csv'); [OK]
Hint: Filter table rows before writetable to save subset [OK]
Common Mistakes:
  • Using fprintf without opening file
  • Not filtering rows before saving
  • Saving entire table without filtering
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