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

 Akzeptierte Antwort

Image Analyst
Image Analyst am 29 Sep. 2022
Like @Walter Roberson said, use fullfile, not strcat.
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.

1 Kommentar

Yes! This solution is best. Thanks a lot for suggesting fullfile and not strcat. Thank you all for being helpfull!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

VBBV
VBBV am 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 Kommentare

+1! filesep at the end of the string is the root cause of the warning!
I tried changing filesep. That gives me an error:
'Processing folder ../output/\002Error using imread>get_full_filename (line 570)
File "../output/\002DEM.tif" does not exist.'
So this solution does not work.
The best solution so far is
folderName = strcat(rootFolder,timeSteps(m+2).name, filesep);
fprintf('\nProcessing folder %s', folderName);

Melden Sie sich an, um zu kommentieren.

Fangjun Jiang
Fangjun Jiang am 28 Sep. 2022

0 Stimmen

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 Kommentare

You need to remove the square brackets
Hi,
Thanks for answering! I added %s but I still get the same warning message.
fprintf(['\nProcessing folder %s', folderName])
Andreas
Andreas am 28 Sep. 2022
Yes, Les Beckham, that worked! Thanks a lot!
Thank you @Les Beckham for your sharp eye.
Now, since you pointed it out, I wonder why the warning. I ran the original code in R2022b, no warning.
@VBBV 's answer points to the root cause of the warning. It is the filesep ('\' in Windows) at the end of folderName.
So, for @Andreas, the true fix (with minimum change to the original code) should be this
folderName = strcat(rootFolder,filesep,timeSteps(m+2).name);
fprintf(['\nProcessing folder', folderName]);
We recommend that you use fullfile()

Melden Sie sich an, um zu kommentieren.

Jasmine Dhaliwal
Jasmine Dhaliwal am 12 Okt. 2022

0 Stimmen

(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 Kommentar

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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Programming finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by