MATLAB Answers

Week 9, Assignment 2

21 views (last 30 days)
Ajith Thomas
Ajith Thomas on 19 Aug 2019
Commented: Steven Lord on 19 Aug 2019
Write a function called char_counter that counts the number of a certain character in a text file. The function takes two input arguments, fname, a char vector of the filename and character, the char it counts in the file. The function returns charnum, the number of characters found. If the file is not found or character is not a valid char, the function return -1. As an example, consider the following run. The file "simple.txt" contains a single line: "This file should have exactly three a-s...
function charnum=char_counter(fname,a)
fid=fopen(fname,'rt');
if fid<0
charnum=-1;
fprintf('error\n');
return;
end
if ischar('a')==0
return;
end
if fid>0 && ischar(a)
line=fgets(fid);
n=0;
for n=n+count(line,a)
end
charnum=n;
else charnum=-1;
end
if ischar(a)==0
charnum =-1;
elseif charnum==0
charnum=0;
return;
end
fclose(fid);
why second error is coming?

  6 Comments

Show 3 older comments
Guillaume
Guillaume on 19 Aug 2019
Ajith's comment mistakenly posted as an answer moved here:
function charnum=char_counter(fname,a)
fid=fopen(fname,'rt');
if fid<0 || ischar(a)==0 || ~isempty(a)==0
charnum=-1;
return;
end
if double(a)==32
charnum=0;
return;
end
if fid>0 && ischar(a)
line=fgets(fid);
n=0;
for n=n+count(line,a)
end
charnum=n;
end
if charnum==0
charnum=0;
end
fclose(fid);
and the solution gives 0 in return. This is the error em getting right now
my question is which all characters should be eliminated?
Guillaume
Guillaume on 19 Aug 2019
The code is much better. However,
  • if the file is valid (fid >= 0) but a is not, you quit the function without closing the file
  • double(a) == 32 is exactly the same as a == ' '. The latter is a lot clearer as to the intent.
  • Your for loop doesn't make any sense. By chance, your function will produce the correct result if the input has one line only.
  • Again, testing if something is 0 and then setting it to 0 if it is, doesn't make sense.
my question is which all characters should be eliminated
Why should any of them be eliminated?
Steven Lord
Steven Lord on 19 Aug 2019
Why is the space character not a valid character? Nothing in the text of the assignment that you've posted says it's invalid.
By the way, I agree with Guillaume that a == ' ' is a clearer statement of intent. Calling the isspace function is even clearer, though it may be a little more permissive about what's a space than you want (are tab, line feed, or newline spaces? They are to isspace.)

Sign in to comment.

Answers (0)


Translated by