Error in Reading and Writing a text file

I have a problem with my program when i read and write the file. The following code is what I have so far. It works when I use only textscan and fopen with 'r' instead of 'r+'. The error is Invalid file identifier, Use fopen to generate a valid file identifier. Can somebody see a mistake? Thank you in advance
fid = fopen('3.csv', 'r+'); %Opens the file
NData = textscan(fid, '%s %s %d % ... %d', 'delimiter' ,',', 'headerlines',2);
T_DB = NData {32}; %Gets Dry Bullb Temperature
T_DP = NData {35}; %Gets Dew Point Temperature
RH = NData {38}; %Gets Relative Humitidy
Temp_data = [T_DB T_DP RH];
frewind(fid)
fprintf(fid, '%f %f %f', Temp_data);
fclose(fid); %Closes the file

 Risposta accettata

Jan
Jan il 11 Lug 2011
While "fopen(FileName, 'r')" searchs the file in all folders of the Matlab path, "fopen(FileName, 'r+')" looks in the current folder only. To solve this, change into the folder, which contains the file (see CD) or specify the file by a full path (see FULLFILE).
As a side-effect the fopen with 'r+' is about 2.3 times faster than with 'r' even if the file is specified with a full path.

1 Commento

This could be the reason! Now I notice this sentence in help fopen. "FILENAME can be a MATLABPATH relative partial pathname only if the file
is opened for reading."

Accedi per commentare.

Più risposte (1)

Fangjun Jiang
Fangjun Jiang il 11 Lug 2011
Since you are reading and writing the same file, it is surprise to hear that 'r' (read only) works but 'r+' (read and write but not to create new) doesn't. Are you sure it is not the opposite?
Since you are read and write text file, I wonder if 'r+t' would help.

5 Commenti

X
X il 11 Lug 2011
Fangjun, Sorry for the confusion. When I used 'r', it reads the file but it does not write it (this is expected). However, when I used 'r+', it does not either read or write the file. I already tried 'rt+', but it did not make a difference. Thank you fro your reply.
I wonder if you have the file opened but not closed due to debugging. Can you try fclose('all') and then try again. BTW, it is 'r+t', not 'rt+'.
BTW, 'rt+' is fine
http://www.mathworks.com/help/techdoc/ref/fopen.html
To open files in text mode, attach the letter 't' to the
permission, such as 'rt' or 'wt+'
All right, good to know! The example provided in help fopen shows 'w+t'
@Jiang: Walter's link contains a 'wt+' example also.

Accedi per commentare.

Categorie

Tag

Richiesto:

X
X
il 11 Lug 2011

Community Treasure Hunt

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

Start Hunting!

Translated by