Re: [問題] sprintf和fscanf無法共用?
我剛才用你推文裡補充的 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
→
06/12 20:46, , 1F
06/12 20:46, 1F
→
06/12 20:46, , 2F
06/12 20:46, 2F
推
06/12 21:38, , 3F
06/12 21:38, 3F
→
06/12 21:38, , 4F
06/12 21:38, 4F
→
06/12 21:39, , 5F
06/12 21:39, 5F
→
06/12 23:21, , 6F
06/12 23:21, 6F
→
06/12 23:21, , 7F
06/12 23:21, 7F
推
06/12 23:41, , 8F
06/12 23:41, 8F
→
06/12 23:42, , 9F
06/12 23:42, 9F
→
06/13 00:43, , 10F
06/13 00:43, 10F
→
06/13 00:44, , 11F
06/13 00:44, 11F
→
06/13 00:46, , 12F
06/13 00:46, 12F
推
06/13 01:22, , 13F
06/13 01:22, 13F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):