How do I find the number of character in a text file?

7 vues (au cours des 30 derniers jours)
raktim banerjee
raktim banerjee le 26 Jan 2011
I have a text file 'inp.txt' containing one line like this:
'banerjee.raktim 123456789125'
I want to know the number of character present in this line, including the white space. And also want to know the position of the white space character.
The expected no of character is 28 and opsition of space is:
16
How to do this?

Réponse acceptée

Matt Fig
Matt Fig le 26 Jan 2011
fid = fopen('inp.txt'); % see also fclose
A = char(fread(fid,inf)).';
A =
banerjee.raktim 123456789125
>> length(A)
ans =
28
>> strfind(A,' ')
ans =
16
  3 commentaires
raktim banerjee
raktim banerjee le 26 Jan 2011
Thank You Sir!
Jan
Jan le 26 Jan 2011
This "A = char(fread(fid,inf)).';" is can be improved: "A = fread(fid, [1, inf], '*char');" This avoid a data copy, casting and transpose operation, but creates a tiny [1x2] vector. But FGETL is efficient also and available in Matlab 6.5.

Connectez-vous pour commenter.

Plus de réponses (2)

Walter Roberson
Walter Roberson le 26 Jan 2011
Are the quote marks and the period present in the file? For the purposes of this discussion I will presume they are not.
a = textread('inp.txt','%s','Whitespace','');
line_length = length(a{1});
space_pos = find(a{1} == ' ',1,'first');
fprintf('The actual number of characters was %d and the actual space position was %d', line_length, space_pos);
  5 commentaires
Walter Roberson
Walter Roberson le 26 Jan 2011
Matlab 6.5? Sorry, that is before my time for functions such as textread(). This answer will not work for you.
Jan
Jan le 26 Jan 2011
TEXTREAD is available in Matlab 6.5, but you have to use lower case for 'whitespace'.

Connectez-vous pour commenter.


Gary
Gary le 26 Jan 2011
for a text file, doesn't each character represent 1 byte?
Does the 'dir' function exist in Matlab 6.5? In my tests creating a text file in Windows notepad, then getting the file size using Matlab's 'dir', the reported number of bytes in the file is equal to the number of characters I typed into it.
Of course, that doesn't tell you where the spaces are.
  6 commentaires
Walter Roberson
Walter Roberson le 28 Jan 2011
The OP wants the number of characters on the first line, and gave a specific expected count that did not include any line terminators.
We saw in an earlier cssm thread that Matlab does not read past ^Z on MS Windows for a file opened as text, so any check based upon file size returned by dir() would have to account for possible line terminators and possible ^Z . I don't think it worth the effort compared to just reading the line and taking its length().
Walter Roberson
Walter Roberson le 28 Jan 2011
Gary, MS Windows is happy to write UTF-16 text files, so we cannot count on one character being the same as 1 byte, even without these issues of line or file terminators.

Connectez-vous pour commenter.

Catégories

En savoir plus sur File Operations dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by