Finding all visible char in txtfile in MATLAB
Show older comments
Hi everyone,
I have to write a function that counts the number of a certain character in a text file. 2 input arguments are requested: fname (char vector of the filename) and character (the char it counts in the file).
Output argument: the number of characters found. If the file is not found or character is not a valid char, the function return -1.
I wrote a function which passed correctly three of the 4 tests. The wrong one is
==> 1) Test with all visible characters
Explanation: Variable charnum has an incorrect value. When testing with '#' your solution returned -1 which is incorrect. (0)
This is my code:
function charnum = char_counter(fname, character)
if isequal(isfile(fname),0)
charnum = -1;
else
A = fileread(fname);
char_1 = strfind(A, character);
charnum = numel(char_1);
if isequal(exist(fname),0)
charnum = -1;
elseif isequal(charnum,0)
charnum = -1;
elseif isequal(ischar(char(character)),0)
charnum = -1;
end
end
end
Thank you all for your suggestions and advice.
I understand, that I probably should add an instruction to take into account all the characters but I can't find a satisfying way that works. Because when I test for the character '#', it works correctly on my MATLAB: When I test the function with the visible character '#' the answer is correct.
Accepted Answer
More Answers (2)
Gokul surya Subramanian
on 17 Apr 2019
0 votes
if ischar(character)==0
charnum =-1;
elseif charnum==0
charnum=0;
return;
end
Morgane Aubineau
on 17 Apr 2019
1 Comment
Walter Roberson
on 18 Apr 2019
It is not necessary to use if isequal(isfile(fname),0) : you could just use if ~isfile(fname)
If isfile(fname) fails, then you never get to the else and so you do not need to test exist(fname) . Likewise, you cannot get to that second ischar() test.
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!