我有代码应该从文件读取文件名,打开它们并做一些计算。这些文件包含数据列。我已经声明了数组读取数据。当我在读入之前初始化数组时,包含文件名的字符串以不稳定的方式运行。如果删除了初始化,问题就解决了。一个字符串突然在函数内部丢失它的值
不稳定的行为是:首先声明的字符串不在内存中。在代码中,如果我先声明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
这只是一个评论,而不是一个答案。 :) –