[問題] sprintf和fscanf無法共用?

看板C_and_CPP作者 (阿滴)時間15年前 (2010/06/12 18:13), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/2 (看更多)
遇到的問題: (題意請描述清楚) 我想要連續讀csv檔來做處理 每個檔名差別在數字 所以我用sprintf來組合字串 再將檔案做fscanf處理 我的問題是 當我直接讀檔的話,fscanf有效用 ex:(省略宣告) fp=fopen("1_1.csv","r"); while(fscanf(fp,"%lf%*c",&x1)!=EOF) printf("%f",x); 若是改成連續讀檔的話,fscanf會失效 ex:(省略宣告) for(i=1;i<=10;i++) for(j=1;j<=5;j++) { sprintf(fp_srt,"%d_%d.csv",i,j); fp = fopen(fp_srt,"r"); while(fscanf(fp,"%lf%*c",&x)!=EOF) printf("%f ",x); } 此時while進入不了 想請問各位大大是否知道為什麼 還有如何解決這個問題~"~ 希望得到的正確結果: 若csv內容為 1,2,3,4,.... 則印出 1 2 3 4 5........ 程式跑出來的錯誤結果: (no value) 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) vc2008 有問題的code: (請善用置底文標色功能) 放在上面了 補充說明: 若我不使用sprintf的話 是可以印出的 所以我懷疑是sprintf的問題 ex: for(i=1;i<=10;i++) for(j=1;j<=5;j++) { fp = fopen("1_1.csv","r"); while(fscanf(fp,"%lf%*c",&x)!=EOF) printf("%f",x); fclose(fp); } 先感謝了>"< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.82

06/12 18:20, , 1F
因為你 sprintf() 的用法錯了呀...
06/12 18:20, 1F

06/12 18:21, , 2F
sprintf(buf, "%d", 123);
06/12 18:21, 2F

06/12 18:32, , 3F
喔喔 那是打錯的..程式上是有寫對 我修一下..感謝
06/12 18:32, 3F
※ 編輯: nosmraw 來自: 140.121.197.82 (06/12 18:33)

06/12 18:38, , 4F
*fp = fopen ... 如果是 FILE *fp 的話應該是錯的吧...?
06/12 18:38, 4F

06/12 18:40, , 5F
只要用 fp = fopen ... 就可以了
06/12 18:40, 5F

06/12 18:41, , 6F
當然除非你那一行其實是寫做 FILE *fp = fopen ... 那就 OK
06/12 18:41, 6F

06/12 18:41, , 7F
話說回來如果你覺得 sprintf 有問題何不把字串印出來檢查?
06/12 18:41, 7F

06/12 18:58, , 8F
字串有印出來檢查過 路徑沒有錯
06/12 18:58, 8F

06/12 19:00, , 9F
*fp 也是打錯..程式上寫fp = fopen..我再修一下..抱歉..
06/12 19:00, 9F

06/12 19:03, , 10F
同意LPH大 *fp = fopen 這個應該有錯 fscanf應該會找不到檔
06/12 19:03, 10F
^^^^^^^^^^^^恩恩 這個我瞭解 ※ 編輯: nosmraw 來自: 140.121.197.82 (06/12 19:12) 我po一個我的測試好了..避免還有手殘@ 感謝大大>"< int main() { FILE* fp; int i,j; double x; char * s=(char *)calloc(100,sizeof(char)); for(j=1;j<5;j++) for(i=1;i<5;i++) { sprintf(s,"C:\\Data\\%d_l%dc1.csv",i,j); fp = fopen(s,"r"); if(!fp){ printf("unload"); return 0;} while(fscanf(fp,"%lf%*c",&x)!=EOF) { printf("%f ",x); } } free(s); return 0; } ※ 編輯: nosmraw 來自: 140.121.197.82 (06/12 19:17)
文章代碼(AID): #1C4rszb1 (C_and_CPP)
文章代碼(AID): #1C4rszb1 (C_and_CPP)