MATLAB: Counting the number of a specific word in text.

MATLABstrings

I want to create a program, tah will count specific words in text. I wrote this:
filename='File name : ';
word= 'Searched word : ';
A=input(filename,'s');
B=input(word,'s');
count=0;
fid=fopen(filename);
C=textscan(fid,'%/s');
for i=1:lenght(C{1})
words=char(C{1}(i));
words=strrep(words,'.','');
words=strrep(words,',','');
if (strcmp(words,word))
count=count+1;
end
end
But this program isn't working.
I got:
Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in count_word (line 7)
C=textscan(fid,'%/s'

Best Answer

Use uigetfile instead of an fragile input command. But even then you should check the output of fopen:
[fid, msg] = fopen(filename);
assert(fid ~= -1, 'Cannot open file %s: %s', filename, msg);
Instead of using the cells created by textscan, the import as char vector is easier:
[filename, pathname] = uigetfile;
file = fullfile(filepath, filename);
word = input('Searched word : ', 's');
str = fileread(file);
str(ismember(str, '.,:!"''?')) = ' '; % Replace punctuation
str = [' ', str, ' '];
match = strfind(str, [' ', word, ' ']);
count = numel(match);