数据没有正确保存,for循环的第一个循环给了我们随机的字符,但是下面的循环给了我们正确的数字。
鼎力相助
int saveDroneSimResults(delivery_info deliveryinfo, int no_of_deliveries){
int numdel, i;
numdel = no_of_deliveries;
printf("NUM DEL: %d\n\n", numdel);
FILE file = fopen("results.txt", "w");
if(file == NULL){
printf("ERROR! The file failed to open!\n");
exit(-1);
}
for(i=0; i < numdel; i++){
fprintf(file, "%d %d %19s %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf %.2lf\n", deliveryinfo[i].deliveryID,
deliveryinfo[i].drone_ID, deliveryinfo[i].drone_name, deliveryinfo[i].max_distance , deliveryinfo[i].load_capacity ,
deliveryinfo[i].Delivery_Orig_loc_x , deliveryinfo[i].Delivery_Orig_loc_y , deliveryinfo[i].Delivery_Desti_loc_x ,
deliveryinfo[i].Delivery_Desti_loc_y , deliveryinfo[i].load_capacity, deliveryinfo[i].Delivery_distance);
}
fclose(file);
return 0;
我不知道你为什么没有收到错误信息,但你缺少了* (FILE *file = fopen(...))。
如果当i = 1时工作正常,那么你可以将你的for循环改为。
for(i =1; i< numdel; i++)
根据给定的代码,我不知道其他部分是否有问题 因为我对deliveryinfo一窍不通。如果你把一个长的fprintf分离成多个不同的fprintf语句,可能会帮助你调试代码。
我会改成。
fprintf(file,"%d %d ",deliveryinfo[i].deliveryID, deliveryinfo[i].drone_ID);
fprintf(file, "%19s %.2lf ",deliveryinfo[i].drone_name, deliveryinfo[i].max_distance);
fprintf(file, "%.2lf %.2lf ",deliveryinfo[i].load_capacity ,
deliveryinfo[i].Delivery_Orig_loc_x);
fprintf(file, "%.2lf %.2lf ", deliveryinfo[i].Delivery_Orig_loc_y , deliveryinfo[i].Delivery_Desti_loc_x );
fprintf(file, "%.2lf %.2lf "deliveryinfo[i].Delivery_Desti_loc_y , deliveryinfo[i].load_capacity);
fprintf(file, "%.2lf\n", deliveryinfo[i].Delivery_distance);
纯粹是为了让你和其他人更容易读懂这段代码。你也可以让每个fprintf有3个变量,但是超过3个变量就很难快速检查了。
为了进一步排除故障,我建议你看一下delivery info的内容,确保那里存储的内容是正确的,符合你的要求。
编辑:正如@Majkl指出的,你的文件打开也是错误的。应该是这样的。
FILE *file = fopen("results.txt", "w");