2013-03-21 62 views
0

这是我到目前为止。唯一的建筑问题是第95行,最后一行代码。我试图计算文件中的行数,然后从数据中构建数组,并显示用户输入的最大值和最小值数组。从不兼容的指针类型传递参数'fprintf'时出错。 C

#include "stdio.h" 
#include "stdlib.h" 



struct earthquake_t 
{ 
    float lat; 
    float lng; 
    float dep; 
    float mag; 
}; 

FILE* fid; 

int main(void) 
{ 
    double lat,lng, dep,mag; 
    double userminlat,userminlng,usermaxlat,usermaxlng,minlat,minlng,maxlat,maxlng,      ch,line,count 
    struct earthquake_t *earthquake; 
    int i; 


    fid=fopen("day.txt","r"); 

    while (!feof(fid)) 
    { 

     line = fscanf(fid,"%lf, %lf, %lf, %lf\n",&lng,&lat,&dep,&mag); 
     count = fscanf(fid," %lf %lf %lf %lf\n",&lng,&lat,&dep,&mag); 


     if (count ==4) 
     { 
      line ++; 
     } 
    } 

    fseek(fid,1,SEEK_SET); 
    printf("%d\n",sizeof(struct earthquake_t));   
    earthquake = (struct earthquake_t *)malloc(sizeof(struct earthquake_t)*line); 

    for (i=0;i<line;i++) 
    {   
     sscanf("fid", "%lf %lf %lf %lf\n",&lng,&lat,&dep,&mag, 
     earthquake[i].lat, 
     earthquake[i].lng, 
     earthquake[i].dep, 
     earthquake[i].mag); 

     if(earthquake[i].lng >maxlng) 
     {  
      maxlng = earthquake[i].lng; 
     } 
     if(earthquake[i].lng >minlng) 
     {  
      minlng = earthquake[i].lng; 
     } 
     if(earthquake[i].lat >maxlat) 
     { 
      maxlat = earthquake[i].lat; 
     } 
     if(earthquake[i].lat >minlat) 
     { 

     minlat = earthquake[i].lat; 
     } 

    } 



    printf("Longitude is between %f and %f\n",minlng,maxlng); 
    printf("Latitude is between %f and %f\n\n",minlat,maxlat); 
    printf("Give a value for min longitude: "); 
    scanf("%d",userminlng); 
    printf("Give a value for max longitude: "); 
    scanf("%d",usermaxlng); 
    printf("Give a value for min latitude: "); 
    scanf("%d",userminlat); 
    printf("Give a value for max latitude: "); 
    scanf("%d",usermaxlat); 


    FILE *fid2; 
    fid2=fopen("subset.txt","w"); 

    for (i=0;i<line;i++) 
    {  
     if((earthquake[i].lng > userminlng) && (earthquake[i].lng < usermaxlng)) 
     {  
      if((earthquake[i].lat > userminlat) && (earthquake[i].lat < userminlat)) 
      { 
       fprintf("subset.txt" ,"%f,%f,%f,%f \n", earthquake[i].lat,    earthquake[i].lng, earthquake[i].dep, earthquake[i].mag); //error 

      } 
     } 
    } 
} 
+2

int fprintf(** FILE * stream **,const char * format,...); – 2013-03-21 15:52:48

回答

8

fprintf需要FILE *指针作为第一个参数。在这种情况下,你可能想通过fid2

+0

你是怎么做的。 – user2192284 2013-03-21 16:18:22

+0

只需将其添加为第一个参数而不是文件的名称,如'fprintf(fid2,“%f,%f,%f,%f \ n”,...)'。 – rra 2013-03-21 19:30:42

相关问题