[討論] fscanf 讀檔問題已回收

看板MATLAB作者 (dogbear)時間14年前 (2011/05/06 17:57), 編輯推噓0(003)
留言3則, 2人參與, 最新討論串1/1
關於 fscanf指令有些問題想請教一下 1. 讀取 set檔案時 format設定上會有些問題 想直接跳過第一行str直接讀取第二行 help裡面有提到 可以使用 %*s來忽略str 在讀取其他 但當我檔案第一行為 檔案通式 (例如:01P660-1980 的01P660-) 就會讀取到後面的 (例如 也就是說 加上* 只省略了第一個str 繼續讀取後面的str 我希望能寫成 直接跳過第一行的說明 也試過前面加上 \r\n code 變成 name=fscanf(set,'\n %d \b\n'); 也是無法順利跳過第一行 想問有沒有向fortran 略過第一行 直接 讀取第二行的方法 2. 在format當中 若要讀取幾行就要放入相同數目的 %f 若我想讀去n行 例如15行 要如何 表示 %f*15?? P.S. FORTRAN 是在前面加上係數15 15F5.2 %資料整理 多個檔案 合成 set=fopen('set.txt','r'); name=fscanf(set,'%*s%s\b\n'); year_start =fscanf(set,'%*s%g\b'); year_end =fscanf(set,'%*s%g\b'); fclose(set); n=0; fid=fopen('result.txt','w'); for i=year_start:year_end D=strcat(name,num2str(i),'.txt'); temp = load(D); n=n+1; N=strcat('#',num2str(n)); fprintf(fid,'%s\t\n',N); fprintf(fid,'%1.0d \t %10d \t %f \t\n',temp'); end fclose(fid); set.txt 格式 檔案通式 01P660- 起始年份 1980 結束年份 2079 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.190.65

05/06 21:24, , 1F
試試看先用fgetl讀取第一行 然後再用fscanf
05/06 21:24, 1F

05/07 19:50, , 2F
謝謝 我試試看
05/07 19:50, 2F

05/10 00:45, , 3F
已經搞定 謝謝 不過分不出來fgetl 與 fgets的差別
05/10 00:45, 3F
文章代碼(AID): #1DmyO30N (MATLAB)