Mozhi[N]是一个个数为N的数列。我想要把结果输出到"D:\\FFTDATA.txt中。
main()
{
……
SAVE(N, MOZHI);
}
void SAVE(int N,float *Mozhi)
{
FILE *fp;
int i;
if((fp=fopen("D:\\FFTDATA.txt","a"))==NULL)
{
printf("can't open file");
return;
}
for(i=0;i<N;i++)
fprintf(fp,"%f\n",Mozhi[i]);
fclose(fp);
}
运行结果是输出了文件,但是确实0字节。求解答
C语言关于数据文件的保存
答案:3 悬赏:40
解决时间 2021-02-18 22:17
- 提问者网友:风华是一指流沙
- 2021-02-18 17:36
最佳答案
- 二级知识专家网友:一池湖水
- 2021-02-18 17:51
我运行过的,是有数据的,你可以运行一下我改写的
#include<stdio.h>
void SAVE(int N,float *Mozhi)
{
FILE *fp;
int i;
if((fp=fopen("D:\\FFTDATA.txt","a"))==NULL)
{
printf("can't open file");
return;
}
for(i=0;i<N;i++)
fprintf(fp,"%f\n",Mozhi[i]);
fclose(fp);
}
void main()
{
float S[3]={9,3,5};
SAVE(2, S);
}
#include<stdio.h>
void SAVE(int N,float *Mozhi)
{
FILE *fp;
int i;
if((fp=fopen("D:\\FFTDATA.txt","a"))==NULL)
{
printf("can't open file");
return;
}
for(i=0;i<N;i++)
fprintf(fp,"%f\n",Mozhi[i]);
fclose(fp);
}
void main()
{
float S[3]={9,3,5};
SAVE(2, S);
}
全部回答
- 1楼网友:随心随缘不随便
- 2021-02-18 19:43
看你是什2么g意思了t。执行完程序关闭后下g次启动程序仍7要那个i值的话,你就要用文8件了e,因为0程序执行的数都是在内5存中0,程序结束,内2存中1存储的数据跟着就释放了s,要想保存你要的num,只有把他存储到外部介0质中2,存储为0文0件就是把你的num存储到外部介7质硬盘中3。具体怎么c存储,lz还是看书3吧,虽然只是个rfopen+fwrite的事,但也n不f是一g两句就能讲清楚的。另外你要是说在一f个x程序中7,让一h个a数在各个k分0函数中5都能使用,那就如 chengdu262 老兄说的,使用全局变量好了g。
v┃‘am辶v┃‘w≡哀asnp█b≌┃
- 2楼网友:单身小柠`猫♡
- 2021-02-18 18:56
#include
#include
#define debug //条件编译开关,为了程序的保险起见,如果程序无误则删除该条语句就ok
int data[300]; //存放文件中的300个整数
int cnt = 0; //素数个数
float pjz1, pjz2;
void readdata(char* filename,int data[]);
void writedata(char* filename);
void jsvalue();
void main()
{
char filename[] = "d:\\in.dat"; //可以根据具体情况自己写路径
writedata(filename);
readdata(filename,data);
jsvalue();
}
void readdata(char* filename,int data[])
{
file *fpr;
int i;
fpr = fopen(filename,"r");
for(i = 0; i < 300; i++)
{
fscanf(fpr,"%d",&data[i]); //格式化读文件
}
fclose(fpr);
}
void writedata(char* filename) //写入300个四位数(1000-1299)到in.dat文件中
{
file *fpw;
int i;
fpw = fopen(filename,"w");
for(i = 1000; i <= 1299; i++)
{
fprintf(fpw,"%d\n",i); //格式化写文件
}
fclose(fpw);
}
void jsvalue()
{
long sumall = 0, sumprim = 0;
int k, m, i, j;
for(i = 0; i < 300; i++) //判断是否为素数:如果整数k在2~sqrt(k)之间没有因子,则k一定是素数
{
k = data[i];
m = (int)sqrt(k);
sumall += k;
for(j = 2; j <= m; j++)
{
if(k % j == 0) //不是素数
break;
}
if(j > m) //是素数
{
#ifdef debug //如果debug被宏定义,则编译下面语句,下同(检查素数判断是否正确)
printf("%d\n",k);
#else
#endif //如果debug没被宏定义,则不编译
sumprim += k;
cnt++;
}
}
pjz1 = (float)sumprim / cnt;
pjz2 = (float)(sumall - sumprim) / (300 - cnt) ;
#ifdef debug
printf("cnt = %d\nsumall = %ld\nsumprim = %ld\npjz1 = %f\npjz2 = %f\n",cnt, sumall, sumprim, pjz1, pjz2); //检查计算是否正确
#else
#endif
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯