本帖最后由 VisualEleven 于 2011-05-16 22:38:20 编辑

解决方案 »

  1.   

    fp=fopen("C:\server.txt","r");
    -->
    fp=fopen("C:\\server.txt","r");
      

  2.   

    void output();这句是何意?早明? 调用?
      

  3.   

    打错字,不好意思
    void output();这句是何意?申明? 调用?
      

  4.   

    我想在 main中调用 output()这个函数
      

  5.   

    $GPGGA,071202.287,3202.3480,N,11848.8956,E,0,00,,,M,,,,0000*0F
    $GPRMC,071202.287,V,3202.3480,N,11848.8956,E,,,040511,,*14
    $GPVTG,,T,,M,,N,,K*4E
    $GPGGA,071203.287,3202.3480,N,11848.8956,E,0,00,,,M,,,,0000*0E
    $GPGSA,A,1,,,,,,,,,,,,,,,*1E
    $GPGSV,3,1,11,14,65,090,,31,57,321,,25,43,045,,30,39,216,*79
    $GPGSV,3,2,11,32,29,307,,22,27,183,,29,25,096,,16,17,214,*7C
    $GPGSV,3,3,11,20,07,320,,12,05,039,,18,01,163,*4D
    $GPRMC,071203.287,V,3202.3480,N,11848.8956,E,,,040511,,*15
    $GPVTG,,T,,M,,N,,K*4E
    主要是想对GPS的这个数据进行分类解析
      

  6.   


    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    #define  DATA_MAX_LEN  114  int i;
      
      int    data_len = 0;
      char   data_buf[DATA_MAX_LEN];
      bool   get_data = true;
      bool   data_ready = false;
      char   c;void output()
    {
       printf("-------------------------Output--------------------------\r\n\r\n");        
       printf("%s",data_buf);   data_buf[0] = '\0';
    }int main()
    {
      FILE *fp;
      char b;
      fp=fopen("C:\server.txt","r");
      printf("/*--------------------Source--------------------*/\r\n\r\n");
      void output();
     while(!feof(fp))
     {
         int result = 0;
         c =fgetc(fp);
        //    printf("%c",c);
          if(get_data)
          {
            if(data_ready)
            {
                data_buf[data_len++] = c;  //将接收的数据存入data_buf[]中    
            }
             result=memcmp(data_buf,"GPGSA",5);
            switch(c)
             { 
                case 0x24:  //开始符'$'
                  data_len = 0;
                  data_ready = true;
             
                     break;
                case 0x0a:  //结束符,回车
                    if(result == 0)
                    {
                    get_data = false;
                    
                    printf("%s",data_buf);
                    printf("/*---------------------data_buf-----------------*/\r\n");
                  //  data_buf[0] = '\0';
                    void output();
                    }
                   break;
                default:
                    break;
            }
            
           if (data_len>DATA_MAX_LEN)
           {
                data_len = 0;
                get_data = true;
                data_ready = false;
           }
          }
     }
       system("pause");
       fclose(fp);
    }楼猪你懂的...
      

  7.   

    编译器为 VC++6.0主函数中为什么不能调用output()函数
      

  8.   


    #include<stdlib.h>
    #include<string.h>
    #include<stdio.h>
    #define  DATA_MAX_LEN  114  int i;
      
      int    data_len = 0;
      char   data_buf[DATA_MAX_LEN];
      bool   get_data = true;
      bool   data_ready = false;
      char   c;void output()
    {
       printf("-------------------------Output--------------------------\r\n\r\n");        
       printf("%s",data_buf);   data_buf[0] = '\0';
    }int main()
    {
      FILE *fp;
      char b;
      fp=fopen("C:\server.txt","r");
      printf("/*--------------------Source--------------------*/\r\n\r\n");
      output();
     while(!feof(fp))
     {
         int result = 0;
         c =fgetc(fp);
        //    printf("%c",c);
          if(get_data)
          {
            if(data_ready)
            {
                data_buf[data_len++] = c;  //将接收的数据存入data_buf[]中    
            }
             result=memcmp(data_buf,"GPGSA",5);
            switch(c)
             { 
                case 0x24:  //开始符'$'
                  data_len = 0;
                  data_ready = true;
             
                     break;
                case 0x0a:  //结束符,回车
                    if(result == 0)
                    {
                    get_data = false;
                    
                    printf("%s",data_buf);
                    printf("/*---------------------data_buf-----------------*/\r\n");
                  //  data_buf[0] = '\0';
                    output();
                    }
                   break;
                default:
                    break;
            }
            
           if (data_len>DATA_MAX_LEN)
           {
                data_len = 0;
                get_data = true;
                data_ready = false;
           }
          }
     }
       system("pause");
       fclose(fp);
    }嗯 这次全了...
      

  9.   

    6楼的还是不行啊  不能调用output()啊还有错误的输出啊
      

  10.   

    void output();是声明,不是调用,要去掉void
      

  11.   

    我的分类呢
    $GPGGA      $GPGSV     $GPRMC来区分呢  有更好的优化代码写出来么   谢谢啦!!
      

  12.   

    在main函数前预定义函数原型,这是C++的形式;要不把整个output函数移动到main函数之前就可以了!ok!