c 语言 文本处理范例

c 语言 文本处理范例

 

从一个文件列表中读入各个文件名,然后依次打开各个文件进行处理。

  1  void  load_ann_res_files( char   * dir_ann,  char   * dir_res, char   * fn_list, char   * score_pos)
  2  {
  3 
  4      FILE  * F_A;
  5       char  fname_a[ 1024 ];
  6       float  ratio = 0 ;
  7      FILE  *  LogFile;
  8 
  9       char  strFileName[ 1024 ];
 10 
 11       // F_A =fopen("D:\\vc2008\\people_detect\\people_detect\\AnnotationData\\file_a.lst", "rt");
 12      F_A  = fopen(fn_list,  " rt " );
 13      LogFile  = fopen( " D:\\vc2008\\people_detect\\people_detect\\Log.txt " , " wb+ " );
 14       if (F_A == NULL)
 15           return ;
 16      FILE  * SCORE_POS  = fopen(score_pos, " wb+ " );
 17       float  tmp_score  = 0.5 ;
 18       while ( ! feof(F_A))
 19      {
 20           int  i = 0 ;
 21           int  j = 0 ;
 22          fscanf(F_A, " %s\n " , & fname_a);
 23          fprintf(LogFile, " %s\n " ,fname_a);
 24          
 25           char  str_a[ 1024 ];
 26           // sprintf(str_a, "D:\\vc2008\\people_detect\\people_detect\\AnnotationData\\");
 27           // strcat(str_a,fname_a);
 28          strcpy(str_a,dir_ann);
 29          strcat(str_a,fname_a);
 30           char  str_r[ 1024 ];
 31           // sprintf(str_r, "D:\\vc2008\\people_detect\\people_detect\\ResultData\\");
 32           // strcat(str_r,fname_a);
 33          strcpy(str_r,dir_res);
 34          strcat(str_r,fname_a);
 35 
 36          FILE  * ANN;
 37          ANN  = fopen(str_a,  " rt " );        
 38           if (ANN == NULL)
 39               continue ;
 40 
 41          FILE  * RES;
 42          RES  = fopen(str_r,  " rt " );        
 43           if (RES == NULL)
 44               continue ;
 45 
 46           // char picname[1024];
 47           // fscanf(ANN,"%s\n",&picname);
 48 
 49           // Load annotation data
 50          fprintf(LogFile, " ****************annotation data***************\n " );
 51           int  num_a;
 52          fscanf(ANN, " %d\n " , & num_a);
 53          fprintf(LogFile, " %d\n " ,num_a);
 54 
 55           struct  points  * P_A;
 56          P_A  = ( struct  points  * )malloc( sizeof ( struct  points) * num_a);
 57 
 58 
 59           for (i = 0 ;i < num_a;i ++ )
 60          {
 61              fscanf(ANN, " %d %d %d %d\n " , & ((P_A + i) -> lt_x),  & ((P_A + i) -> lt_y),  & ((P_A + i) -> rb_x),  & ((P_A + i) -> rb_y));
 62              fprintf(LogFile, " %d %d %d %d\n " ,(P_A + i) -> lt_x, (P_A + i) -> lt_y, (P_A + i) -> rb_x, (P_A + i) -> rb_y);
 63          }
 64          
 65 
 66           //  Load result data
 67          fprintf(LogFile, " ****************result data*******************\n " );
 68           int  num_r;
 69          fscanf(RES, " %d\n " , & num_r);
 70          fprintf(LogFile, " %d\n " ,num_r);
 71 
 72           struct  points  * P_R;
 73          P_R  = ( struct  points  * )malloc( sizeof ( struct  points) * num_r);
 74 
 75 
 76           for (i = 0 ;i < num_r;i ++ )
 77          {
 78              fscanf(RES, " %d %d %d %d\n " , & ((P_R + i) -> lt_x),  & ((P_R + i) -> lt_y),  & ((P_R + i) -> rb_x),  & ((P_R + i) -> rb_y));
 79              fprintf(LogFile, " %d %d %d %d\n " ,(P_R + i) -> lt_x, (P_R + i) -> lt_y, (P_R + i) -> rb_x, (P_R + i) -> rb_y);
 80          }
 81 
 82 
 83           // Compare result with annotation data
 84           // float calculate_area(int x_lf,int y_lf,int x_rb,int y_rb, int x_lf_a, int y_lf_a, int x_rb_a, int y_rb_a)
 85          fprintf(LogFile, " ****************compare result*******************\n " );
 86           for (i = 0 ;i < num_r;i ++ )
 87          {
 88               for (j = 0 ;j < num_a;j ++ )
 89              {
 90                  ratio  = calculate_area((P_R + i) -> lt_x, (P_R + i) -> lt_y, (P_R + i) -> rb_x, (P_R + i) -> rb_y,
 91                                          (P_A + j) -> lt_x, (P_A + j) -> lt_y, (P_A + j) -> rb_x, (P_A + j) -> rb_y);
 92                   if (ratio > 0.5 )
 93                  {                
 94                      fprintf(LogFile, " overlapping area ratio between %dth result data and %dth annotation is: %f\n " ,i,j,ratio);
 95                      fprintf(SCORE_POS, " %f  " ,tmp_score);
 96                  }
 97              }
 98          }
 99          fprintf(LogFile, " \n \n " );
100          free(P_A);
101          free(P_R);
102          fclose(ANN);
103          fclose(RES);
104      }
105      fclose(F_A);
106      fclose(SCORE_POS);
107  }

 

 

 

转载于:https://www.cnblogs.com/zhangzhi/archive/2010/12/30/1922394.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值