Consider a file that contains the following text,
Brand
New World
The result after reading the words in the reverse
order
World New Brand
Steps
to be performed:
1. Open
a file and move the pointer to the end of the file.
2. Move
the pointer to the current-1 position
3. Read
the character and store it in an array.
4. Move
the pointer to the current-2 position and read the character and store it in an
array.
5. If
the character is a blank space, then reverse the array. To reverse array use 'fliplr'.
6. Append
the array to a string and initialize the array to zero.
7. Repeat
this procedure till the pointer reaches the beginning of the file.
8. To
learn more about file reverse: http://angeljohnsy.blogspot.in/2012/10/read-file-in-reverse-from-end-of-file.html
MATLAB CODE:
%Open a file to
read
fp=fopen('rev.txt');
%Move the
pointer to the end of the file
fseek(fp,0,'eof');
%Find the
position
fsz=ftell(fp);
n=1;
%Move the
pointer to the current-1 position
fseek(fp,-1,'cof');
%Read a
character
c=fread(fp,1,'*char');
%Store in the
matrix
M(1,n)=c;
Words=0;
%Check whether
the file pointer has reached the beginning of the file
while(fseek(fp,-2,'cof')~=-1)
c=fread(fp,1,'*char');
%When a space is
encountered reverse the character array and append
%it to a string
if(isspace(c))
if(Words==0)
%Intially, the
string is empty.
%Append the
array in the reverse order with a blank space
Words=[fliplr(M) blanks(1)];
else
%Append the
reversed character array to the string
Words=[Words fliplr(M)];
end
n=1;
M='';
else
%The array is updated
with the characters until blank space is
%encountered
n=n+1;
M(1,n)=c;
end
end
Words=[Words
fliplr(M)];
display(Words);
fclose(fp);
Result:
Words =
World New Brand
No comments:
Post a Comment