fprintf with warning of a lone trailing backslash
18 views (last 30 days)
Show older comments
Andreas
on 28 Sep 2022
Commented: Walter Roberson
on 12 Oct 2022
Hi,
I have used matlab earlier but forgotten most of it. I have a bunch of scripts from earlier co-workers and there is some warnings. Probably because the code is from 2015-2017.
This code produces a warning 'A lone trailing backslash, ' \ ', is not a valid control character.
for m = 1:M
folderName = strcat(rootFolder,timeSteps(m+2).name,filesep);
fprintf(['\nProcessing folder', folderName]);
As I am 'new' to this it is hard for me to understand how I should fix it. I assumed the problem is '\n..', so I tried to remove that but I still get the warning and I am not sure what removing the \n does in this case. The script seems to work anyway, but I would like to know what is wrong.
Hope someone can help me
0 Comments
Accepted Answer
Image Analyst
on 29 Sep 2022
folderName = fullfile(rootFolder, timeSteps(m+2).name);
fprintf('Processing folder #%d of %d : "%s".\n', m, M, folderName);
Also see attached demo if you want to scan subfolders and do something to files in each subfolder.
More Answers (3)
VBBV
on 28 Sep 2022
folderName = strcat(rootFolder,filesep,timeSteps(m+2).name);
fprintf(['\nProcessing folder %s', folderName]);
You need to interchange the filesep position to middle or center to distinguish names. Plus use the format specifier as well in fprintf
2 Comments
Fangjun Jiang
on 28 Sep 2022
Change to
fprintf(['\nProcessing folder %s', folderName]);
'\n' is fine, it produces a carriage return
Just need the '%s' to print the value of folderName.
6 Comments
Fangjun Jiang
on 28 Sep 2022
@VBBV 's answer points to the root cause of the warning. It is the filesep ('\' in Windows) at the end of folderName.
folderName = strcat(rootFolder,filesep,timeSteps(m+2).name);
fprintf(['\nProcessing folder', folderName]);
Jasmine Dhaliwal
on 12 Oct 2022
(I know your question is already answered, but since they mentioned that there's %d and %s, I wanted to make sure you also knew that there is %f for float numbers instead of doubles (%d)! How it works: You can specify how many digits and how many decimals you want with something like %4.2f, where 4 indicates a field width of 4 digits and .2 indicates how many decimals you want! In my class we really mainly used %0.2f iirc, so I certainly looked up the literature on what the first digit (4, in this case) meant, because I couldn't quite remember what it meant. As it is, I really couldn't tell you what "field depth" is, but hopefully this is helpful to you anyhow!
1 Comment
Walter Roberson
on 12 Oct 2022
the number before the % is the minimum field width. It is the target width for a column of numbers. The default is right jurisdiction within the column but the "-" flag requests left justification and the "0" flag requests zero padding on the left instead of space padding. The field will use more characters if necessary: it is common, for example, for people to forget to take into account the space for a negative sign.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!