我有代碼應該從文件讀取文件名,打開它們並做一些計算。這些文件包含數據列。我已經聲明瞭數組讀取數據。當我在讀入之前初始化數組時,包含文件名的字符串以不穩定的方式運行。如果刪除了初始化,問題就解決了。一個字符串突然在函數內部丟失它的值
不穩定的行爲是:首先聲明的字符串不在內存中。在代碼中,如果我先聲明d[90]
,則以後的打印語句不會打印先前保存的值。可能是什麼原因?
下面是代碼:
#include<stdio.h>
#include<math.h>
main()
{
FILE *data,*model,*filenames;
int i,imax,j,k,l;
float fd[1000],fm[1000],td[1000],tm[1000];
float a;
char d[90],m[90];
k=1;
l=0;
filenames=fopen("filenames.dat","r");
while(fscanf(filenames,"%s %s",d,m)!=EOF)
{
printf("model: %s\ndata: %s\n",m,d);
for(i=1;i<=1000;i++)
{
fd[i]=0;
fm[i]=0;
td[i]=0;
tm[i]=0;
}
printf("datafile name: %s\n",d);
printf("modelfile name: %s\n",m);
data=fopen(d,"r");
for(i=1;i<=1000;i++)
if(fscanf(data,"%f %f %f %f",&td[i],&fd[i],&a,&a)!=EOF)
k++;
else
break;
fclose(data);
printf("modelfile name: %s\n",m);
model=fopen(m,"r");
for(i=1;i<=1000;i++)
if(fscanf(model,"%f %f %f %f %f %f",&tm[i],&fm[i],&a,&a,&a,&a)!=EOF)
l++;
else
break;
fclose(model);
}
}
'main()' - >'int main(void)' –
這沒有幫助。問題依然存在。 – Sup
這只是一個評論,而不是一個答案。 :) –