Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从char到const char的转换无效*_C++_C_Arduino_Arduino Ide - Fatal编程技术网

C++ 从char到const char的转换无效*

C++ 从char到const char的转换无效*,c++,c,arduino,arduino-ide,C++,C,Arduino,Arduino Ide,我觉得这将是一个非常简单的问题,为此我提前表示歉意,但我已经在这个问题上纠缠了好几个小时,我还无法根据我在这里或谷歌上找到的东西来解决它 我有一个arduino连接到一个GPS和一个收音机上,我正试图把GPS信号广播到我的收音机上。我现在想做的是将NMEA语句从GPS输入变量“text”,但是我被这个错误弄糊涂了,我认为这是由于数组引起的 我的错误发生在这一行: sprintf(文本,字符(c)) 我尝试了一些不同的方法,但这就是我目前的困境。任何帮助都将不胜感激 #define RADIOPI

我觉得这将是一个非常简单的问题,为此我提前表示歉意,但我已经在这个问题上纠缠了好几个小时,我还无法根据我在这里或谷歌上找到的东西来解决它

我有一个arduino连接到一个GPS和一个收音机上,我正试图把GPS信号广播到我的收音机上。我现在想做的是将NMEA语句从GPS输入变量“text”,但是我被这个错误弄糊涂了,我认为这是由于数组引起的

我的错误发生在这一行:
sprintf(文本,字符(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);
    }
}
#定义RADIOPIN 13
#包括
#包括
#包括
#包括
软件序列mySerial(3,2);
#定义GPSECHO true
Adafruit_GPS(和mySerial);
char数据字符串[80];
字符文本[80];
无效设置(){
序列号开始(115200);
开始(9600);
发送命令(PMTK设置NMEA输出RMCGGA);
GPS.sendCommand(PMTK\U SET\U NMEA\U UPDATE\U 5HZ);
延迟(3000);
pinMode(RADIOPIN,输出);
}
void循环(){
gpscheck();
}
void gpscheck(){
char c=GPS.read();
如果(c){
//连续打印(c);
sprintf(文本,字符*(c));
连续打印(文本);
}
}

您可能需要阅读的参考资料。然后您将看到第二个参数是一个字符串

因此,以下几点就可以了:

sprintf(text, "%c", c);
为了安全起见,您可能希望使用
snprintf
来降低缓冲区溢出的风险

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

text[0] = c;
text[1] = '\0';  /* Terminate string */
如果要打印字符

simply use printf("%c",c);
如果你想把它复制成文本

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

GPS.read()
将只返回一个字符或字符串?
sprintf(text,char*(c))是错误的!了解它的用法。谢谢!我也曾尝试过:sprintf(文本,“%d”,c);这就是我从sprintf文档中得到的。我知道,我意识到它随着变量的类型而变化。
sprintf(text,"%c", c);