看板 C_and_CPP 關於我們 聯絡資訊
我剛才用你推文裡補充的 code 跑了一下,是可以的 @@ // 因為我不是用 Windows,所以只改了路徑 然後不要再說推文裡那個 code 其實是打錯的 XDD 執行結果: 1.000000 2.000000 3.000000 4.000000 5.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.000000 unload 1.csv 內容: 1 2 3 4 5 2.csv 內容: 5 6 7 8 9 10 fop.c 內容: #include <stdio.h> 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,"/tmp/%d.csv",i); 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 (阿滴)》之銘言: : 遇到的問題: (題意請描述清楚) : 我想要連續讀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: 125.227.84.52
tinlans:我比較好奇的是 csv 幾時接受空格當分隔字元了。 06/12 20:46
tinlans:不是 comma-separated values 嗎? 06/12 20:46
nosmraw:大大能否試試sprintf使用兩個參數 看看是否能夠執行@@? 06/12 21:38
nosmraw:有點懷疑是編譯器的問題了~"~ 06/12 21:38
nosmraw:現在是偶爾可以偶爾不行....很詭異- -" 06/12 21:39
Dannvix:我將檔名改成 1_1.csv 與 1_2.csv 是可以 work 的 06/12 23:21
Dannvix:既然你用的是 VC,VC 的 compiler 不會錯這麼腦殘的地方 06/12 23:21
nosmraw:我也覺得這地方很鳥..剛亂七八糟的亂弄 突然就過了- -" 06/12 23:41
nosmraw:總之不想再亂動啥咪了 莫名其妙卡好久 感謝幫忙測試阿>"< 06/12 23:42
sunneo:要不要考慮每次開檔完後關閉檔案啊...有上限的 06/13 00:43
sunneo:另外是s buf需要bzero一下 如果有個檔案編號較長就會出現 06/13 00:44
sunneo:...啊 不用bzero, sprintf應該會補0 06/13 00:46
nosmraw:瞭解~感謝阿~^^ 06/13 01:22