[問題] C的input和output問題

看板C_and_CPP (C/C++)作者 (丁丁)時間15年前 (2010/11/29 21:20), 編輯推噓6(6030)
留言36則, 5人參與, 最新討論串1/1
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) ( 未必需要依照此格式,文章條理清楚即可 ) 遇到的問題: (題意請描述清楚) 我先用一個程式算出一個矩陣 然後把矩陣存入.dat檔 但我用另一個程式讀.dat檔卻一直讀失敗 一個數字都沒有出來 我讀入的矩陣是 1.000000 0.000000 0.000000 0.000000 0.000000 0.500000 1.000000 0.000000 0.000000 0.000000 5.000000 -16.000000 1.000000 0.000000 0.000000 2.500000 -6.000000 0.388462 1.000000 0.000000 0.500000 -1.000000 0.061538 2.507937 1.000000 我output的指令是 FILE *L_matrix; L_matrix=fopen("L_matrix.dat", "w"); for(i=0;i<=4;i++) { for(j=0;j<=4;j++) { fprintf(L_matrix,"%11.6f",L[i][j]); } fprintf(L_matrix,"\n"); } fclose(L_matrix); 我input的指令是 FILE *Lmatrix; Lmatrix=fopen("L_matrix.dat","r"); for(i=1;i<=4;i++) { for(j=0;j<=4;j++) { fscanf(Lmatrix,"%f11.6",L[i][j]); } } fclose(Lmatrix); 希望得到的正確結果: 希望可以得到跟一開始一樣的矩陣 程式跑出來的錯誤結果: 跑出來的矩陣都是沒有任何數字 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) 補充說明: 我是很新的新手 希望可以和大家一起討論問題一起進步 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.218.30

11/29 21:30, , 1F
我跑的結果有印出來阿@@
11/29 21:30, 1F

11/29 21:35, , 2F
喔~你讀進來時就錯了 是%11.6f 然後後面的L...改成 &L
11/29 21:35, 2F

11/29 21:43, , 3F
我加上&了 但怎出來的變亂數了QQ
11/29 21:43, 3F

11/29 22:00, , 4F
你陣列的data type是? 另外我好像沒在fscanf用過11.6f
11/29 22:00, 4F

11/29 22:05, , 5F
我的data type純粹是我算出來的一個矩陣 用11.6f輸出
11/29 22:05, 5F

11/29 22:06, , 6F
而我也不大清楚fscanf是否可以用11.6f 但我用f的話
11/29 22:06, 6F

11/29 22:06, , 7F
= = 我是問data type是float還是double? double的話
11/29 22:06, 7F

11/29 22:07, , 8F
fscanf裡面改成 %lf
11/29 22:07, 8F

11/29 22:07, , 9F
但我現在用f 他還是亂數QQ
11/29 22:07, 9F

11/29 22:10, , 10F
是double
11/29 22:10, 10F

11/29 22:19, , 11F
我改成%1f了 但輸出的結果還是一樣
11/29 22:19, 11F

11/29 22:20, , 12F
其實我不大清楚所謂的data type是什麼 非常抱歉
11/29 22:20, 12F

11/29 22:26, , 13F
你的for i = 1 是打錯還是? 是i=0吧.......
11/29 22:26, 13F

11/29 22:30, , 14F
抱歉 那是我打錯 是從0開始
11/29 22:30, 14F

11/29 22:33, , 15F
那找不出你code有啥問題了...
11/29 22:33, 15F

11/29 22:37, , 16F
恩 感謝你的幫忙
11/29 22:37, 16F

11/29 22:37, , 17F
用fread跟fwrite不會比較好嗎?
11/29 22:37, 17F

11/29 22:39, , 18F
fscanf(Lmatrix,"%lf",&L[i][j]);
11/29 22:39, 18F

11/29 22:42, , 19F
fprintf 也要改lf
11/29 22:42, 19F

11/29 22:50, , 20F
我不會用fread和fwrite......抱歉
11/29 22:50, 20F

11/29 22:50, , 21F
我都改成1f了 但出來還是依樣都亂數
11/29 22:50, 21F

11/29 22:52, , 22F
你要不用把code全貼一下...用置底文的網站 codepad推~
11/29 22:52, 22F

11/29 22:59, , 23F

11/29 23:02, , 24F
http://codepad.org/IwyGcRSu 這指令有些沒打完
11/29 23:02, 24F

11/29 23:02, , 25F
樓上的code跟我的只差在我code有給L初始化 XDDDDDDDDD
11/29 23:02, 25F

11/29 23:02, , 26F
是樓樓上
11/29 23:02, 26F

11/29 23:07, , 27F
看來是英文L和數字1搞錯……
11/29 23:07, 27F

11/29 23:07, , 28F
fscanf裡的lf是英文的LF...l是英文不是數字....
11/29 23:07, 28F

11/29 23:09, , 29F
感謝阿 原來是我耍白痴
11/29 23:09, 29F

11/29 23:10, , 30F
但我可以問一下 為什麼要用lf嗎?
11/29 23:10, 30F

11/29 23:17, , 31F
http://tinyurl.com/289shel 拉到最下面看"You may modify"
11/29 23:17, 31F

11/29 23:17, , 32F
那一段
11/29 23:17, 32F

11/29 23:17, , 33F
跟下一段
11/29 23:17, 33F

11/29 23:26, , 34F
感謝wawi大 我要開始努力研讀了
11/29 23:26, 34F

11/29 23:28, , 35F
用fread跟fwrite沒有比較簡單嗎...............
11/29 23:28, 35F

11/30 00:13, , 36F
看到後面.突然想起之前問的 cl.exe/c1.exe 的故事...
11/30 00:13, 36F
文章代碼(AID): #1CywYErq (C_and_CPP)
文章代碼(AID): #1CywYErq (C_and_CPP)