[問題] sprintf和fscanf無法共用?
遇到的問題: (題意請描述清楚)
我想要連續讀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
06/12 18:20, 1F
→
06/12 18:21, , 2F
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
06/12 18:38, 4F
→
06/12 18:40, , 5F
06/12 18:40, 5F
→
06/12 18:41, , 6F
06/12 18:41, 6F
→
06/12 18:41, , 7F
06/12 18:41, 7F
→
06/12 18:58, , 8F
06/12 18:58, 8F
→
06/12 19:00, , 9F
06/12 19:00, 9F
推
06/12 19:03, , 10F
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)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):