2013-03-21 59 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

相關問題