Error in Reading and Writing a text file

1 次查看(过去 30 天)
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

采纳的回答

Jan
Jan 2011-7-11
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 个评论
Fangjun Jiang
Fangjun Jiang 2011-7-11
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."

请先登录,再进行评论。

更多回答(1 个)

Fangjun Jiang
Fangjun Jiang 2011-7-11
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 个评论
Fangjun Jiang
Fangjun Jiang 2011-7-11
All right, good to know! The example provided in help fopen shows 'w+t'
Jan
Jan 2011-7-11
@Jiang: Walter's link contains a 'wt+' example also.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Low-Level File I/O 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by