从char到const char的转换无效*

时间:2013-11-10 11:12:05

标签: c++ c arduino arduino-ide

提前抱歉我认为这将是一个非常简单的问题,但我已经坚持了好几个小时而且我无法根据我的东西找出解决方法在这里或谷歌上找到。

我有一个arduino连接到GPS和收音机,我正试图将GPS信号广播到我的收音机。我现在要做的是将GPS中的NMEA句子转换为变量'text',但我对此错误感到困惑,我认为这是由于数组引起的。

我的错误发生在这一行: sprintf(text, char(c));

我尝试了一些不同的东西,但这是我现在陷入困境的地方。任何帮助都会非常感激。

#define RADIOPIN 13
#include <string.h>
#include <util/crc16.h>
#include <Adafruit_GPS.h>
#include <SoftwareSerial.h>

SoftwareSerial mySerial(3, 2);

#define GPSECHO  true

Adafruit_GPS GPS(&mySerial);

char datastring[80];
char text[80];

void setup() {
  Serial.begin(115200);
  GPS.begin(9600);
  GPS.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCGGA);
  GPS.sendCommand(PMTK_SET_NMEA_UPDATE_5HZ);
  delay(3000);  
  pinMode(RADIOPIN,OUTPUT);
}

void loop(){
  gpscheck();
}

void gpscheck(){
    char c = GPS.read();
    if (c) {
//      Serial.print(c); 
    sprintf(text, char*(c));
    Serial.print(text);
    }
}

2 个答案:

答案 0 :(得分:1)

您可能想要阅读sprintf的引用。然后你会看到第二个参数是字符串

所以以下情况可以正常:

sprintf(text, "%c", c);

为了安全起见,您可能希望使用snprintf代替缓冲区溢出的风险。

当然,对于单个角色,您也可以这样做。

text[0] = c;
text[1] = '\0';  /* Terminate string */

答案 1 :(得分:1)

sprintf(text, char*(c));

如果要打印字符

simply use printf("%c",c);

如果你想将其复制到文本

sprintf(text,"%c", c);