MATLAB Answers

How to read a list of strings in a txt file?

2 views (last 30 days)
Benson Gou
Benson Gou on 17 Sep 2020
Commented: Star Strider on 17 Sep 2020
Dear All,
I need to read a txt file which contains a list of names with different lengths. Here is my txt file:
mynames:
OAKFIELD
5556_T
ROLLINS
......
I need to read those names to store them in a string array MyNames. MyNames should be like below:
MyNames = [
'OAKFIELD'
'5556_T'
'ROLLINS'
......
];
Here is my code:
fid = fopen(FileName, 'r');
if fid < 0, error('Cannot open file'); end
while KKK < 30000 % Infinite loop
s = fgets(fid);
if ischar(s)
MyNames = [MyNames; s];
else % End of file:
break;
end
end
But what I got is Not correct. MyNames is an array having 10 coulmns and shows as
'CHSTRSVC←↵'
'5556_T'←↵'
'ROLLINS←↵'
...

  0 Comments

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 17 Sep 2020
Unless I am missing something, ‘KKK’ is never incremented inside the while loop, so it will in fact be infinite.
If you are actually using ‘KKK’ as a counter (and therefore incrementing it), this could work:
MyNames{KKK} = s;
That creates a cell array, and while that can create additional steps required to recover its contents later, it could be an effective approach.
A better approach could be readtable. The first variable would be the names, and you could simply ignore the others.
.

  4 Comments

Show 1 older comment
Benson Gou
Benson Gou on 17 Sep 2020
I tried to use MyNames{KKK} = s, but I got the same thing.
MyNames =
1×2 cell array
{'CHSTRSVC←↵'} {'ORRINGTN←↵'} ...
Benson Gou
Benson Gou on 17 Sep 2020
I used data = sscanf(s, '%s %s'), and got the right cell array MyNames:
{'OAKFIELD'} {'OAKFIELD'} {'5556_T'} {'ROLLINS'} {'ROLLINS'} {'STETSON'} ...
Thanks a lot for all of you.
Benson

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!