gpt4 book ai didi

c - 在 C 中写入多个文件并迭代其名称

转载 作者:行者123 更新时间:2023-11-30 20:05:56 24 4
gpt4 key购买 nike

我试图通过迭代、进行一些计算并将索引添加到文件名来编写一堆文件,这是我的代码的一部分(我强调了代码停止编译的位置):

float AltAzCalc(int d, float t, float Lon, float RA, float Dec, float Lat){

FILE *in;


-----> char filename[30] = ("hiparcos_horizontal_%lf_%lf.csv",Lon,Lat);
in = fopen(filename, "w");
float PI = 3.14159265;// pi
float G = 6.5949997;
float Alt , Az;
float GST = G + 0.0657098244*d + 1.00273791*t;
if (GST > 24){
GST = GST - 24;
}
float LST = GST*360/24 + Lon;

Alt = (180/PI)*(asin(sin(PI*Dec/180)*sin(PI*Lat/180) + cos(PI*Dec/180)*cos(PI*Lat/180)*cos(PI*(LST-RA*360/24)/180)));

if(sin(PI*(LST-RA*360/24)/180) <= 0){
Az = (180/PI)*(acos((sin(PI*Dec/180)-(sin(PI*Alt/180)*sin(PI*Lat/180)))/(cos(PI*Alt/180)*cos(PI*Lat/180))));
}else{
Az = 360 - (180/PI)*(acos((sin(PI*Dec/180)-(sin(PI*Alt/180)*sin(PI*Lat/180)))/(cos(PI*Alt/180)*cos(PI*Lat/180))));
}

fprintf(in," %lf %lf \n",Alt,Az);

}
int main{
for(int i = -180 ; i < 181 ; i++){
for(int j = -180 ; j < 181 ; j++){
for(int k = 0; k < 119616 ; k++){

AltAzCalc(97,9.2,i,AscensionRecta.array[k],Declinacion.array[k],j);



}

}
}
}

我之前使用过这样的语法,只是没有添加任何我想更改的额外数字,这是一个字符串文字,这就是它的要求,知道如何解决这个问题吗?

最佳答案

两件大事:

  1. char filename[30] 尺寸可能太小,无法容纳名称。
  2. 您需要使用sprintf()/snprintf()生成文件名。

值得一提的是,%f 就足够了,建议打印浮点值。

做类似(伪代码)的事情

char filename[128] = {0};                                   //allocate enough memory
sprintf(filename, "hiparcos_horizontal_%f_%f.csv",Lon,Lat)); //Added missing semi-colon // use %f, that's enough and recommended, too.

注意:在使用返回的文件指针之前,请务必检查 fopen() 的返回值是否成功。

关于c - 在 C 中写入多个文件并迭代其名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28622852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com