Неверное преобразование из char в const char *

Заранее извините за то, что я чувствую, что это будет действительно простая проблема, но я застрял на ней в течение нескольких часов, и я не смог придумать, как это исправить, основываясь на материалах, которые я нашел здесь или в гугле

У меня есть arduino, подключенный к GPS и радио, и я пытаюсь передать сигнал GPS на свое радио. Сейчас я пытаюсь получить предложение NMEA из GPS в переменную ‘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);
}
}

0

Решение

Вы можете прочитать ссылку на sprintf. Тогда вы увидите, что второй аргумент строка.

Так что следующее будет хорошо:

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

Чтобы быть на безопасной стороне, вы можете использовать snprintf вместо этого, чтобы уменьшить риск переполнения буфера.

Конечно, для одного персонажа вы могли бы сделать, например,

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

Другие решения

sprintf(text, char*(c));

Если вы хотите напечатать символ

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

если вы хотите скопировать это в текст

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