2013-03-21 61 views
1

我試圖做到這一點在Matlab,但它表明,使用與fgets替換第一行並保存到Matlab中的文件?

錯誤。無效的文件標識符。使用fopen生成一個有效的文件標識符。

任何人都可以幫助解決這個問題嗎?提前致謝。

以下是我的語法:

function [ ] = replaceStr(fidInFile, DIF(k), DIF(k+1)) 
for k = 1:100 
    fidInFile = fopen(['Rasch' num2str(k) '.inp'],'r'); 
    fidOutFile = fopen(['Rasch' num2str(k+1) '.inp'],'w'); 
    nextLine= fgets(fidInFile); 
    while nextLine >= 0 
     nextLine = strrep(nextLine,['DATA=DIF' num2str(k) '.dat'], ['DATA=DIF' num2str(k+1) '.dat']); 
     fprintf(fidOutFile,'%s', nextLine); 
     nextLine=fgets(fidInFile); 
    end 
    fclose(fidInFile);       
    fclose(fidOutFile);      
end 
+2

你不能只使用'textscan'嗎? – fpe 2013-03-21 14:38:27

回答

0

要在文件中讀取,修改第一行,並寫回,你可以做到以下幾點:

% open files 
fidIn = fopen('test.txt'); 
fidOut = fopen('test2.txt','w'); 

% read in file 
tline = fgets(fidIn); 
index = 1; 
while ischar(tline) 
    data{index} = tline;  
    tline = fgets(fid);   
    index = index + 1; 
end 

% replace first row 
data{1,1} = 'Something else'; 

% write to second file 
for l = data 
    fprintf(fidOut,'%s\n', l{1,1}); 
end 

fclose(fidIn); 
fclose(fidOut); 

錯誤你」重新獲得可能是因爲您正在使用的文件名或路徑無效。

相關問題