如何过滤我的char的一部分

时间:2014-09-13 20:07:04

标签: c++ char arduino

我有一个char buffer[200];其内容是(Serial.println(buffer)&#39}的输出:

AT+CGPSINF=2

2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000
OK

我想在char fix[]只有这个

2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M,48.200287,M,,0000

我花了很多时间来解决这段代码,但没有成功

static int gps_read () {

  read_AT_string("AT+CGPSINF=2",3000);
  Serial.println(F("------- Show buffer------"));
  Serial.println(buffer);
  Serial.println(F("-------------------------\n"));

  char fix[BUFFERSIZE];

  int z = 0;
  int y = 0;
  int w = 0;

  for(y=0; y < BUFFERSIZE; y++)
  {
    if(buffer[y]==',') z++;

    if(z > 0){
      if(buffer[y] == '\n') break;

      fix[w] = buffer[y];
      w++;
    }

    //if(y==num)//if the command is right, run return
    //  y=strlen(buffer)+1;
  }
  Serial.println(F("------- Show Fix------"));
  Serial.println(fix);
  Serial.println(F("----------------------"));

如何使用如下所示的行填充char fix[]并调整其大小:

  

2,195941,4613.161699,N,608.476854,E,1,9,1.398636,435.450073,M 48.200287,M,0000

在上面的代码中,它打印出来:

------- Show Fix------
,202653,4613.164908,N,608.479232,E,1,9,1.183249,427.253052,M,48.200226,M,,0000
b

----------------------

我先失去了&#39; 2&#39; 新线和&#39; b&#39;和空间应该被删除。

1 个答案:

答案 0 :(得分:0)

我这样解决,但我不满意。

char* gps_read (void) {

  if(strstr(read_AT_string("AT+CGPSINF=2",3000),"OK") != NULL)
  {
    Serial.println(F("------- Show buffer------"));
    Serial.println(buffer);
    Serial.println(F("-------------------------\n"));

    char fix[BUFFERSIZE];

    int z = 0;
    int y = 0;
    int w = 0;

    for(y=0; y < BUFFERSIZE; y++)
    {
      if(buffer[y]==',') z++;

      if(z > 0){
        if(buffer[y] == '\n'){
          fix[w-1]='\0';
          break;
        }

        fix[w] = buffer[y+1];
        w++;
      }

    }
    Serial.println(F("------- Show Fix------"));
    Serial.println(fix);
    Serial.println(F("----------------------"));

    return fix;
  }
  else
  {
    return "Error : no fix";
  }
}

&#39; 2&#39;并不重要。没有显示。 你会怎样做得更好?