(09-02-2023, 21:56)MadMrQ napisał(a): No toś chłopie sobie życie skomplikował...
Na początek problem z char zero = "0"
Deklarujesz char, a przypisujesz mu stringa.
Albo robisz char *zero = "0" i wtedy masz tzw. C string, czyli po prostu tablicę, albo piszesz char zero = '0' i przypisujesz zmiennej typu char pojedynczy znak.
" " oznacza stringa (char array), a ' ' pojedynczy znak.
Cytat:Tak samo nie rozumiem, czemy nie da dary zapisać: dtostrf(zmienna, 2, 0, pole2[1]); ? Taki ze mnie słabiak...Zmienną o minimalnej szerokości 2 pól, o 0 pól po przecinku pakujesz do pole2[1], które jest pojedynczym znakiem. Czyli dwa pola pakujesz w jedno z uporem maniaka i kompilator robi fakap.
Cytat:warning: invalid conversion from 'char' to 'char*' [-fpermissive]Tu podobnie - używasz char (pojedynczego znaku), a funkcja przyjmuje char*, czyli tablicę znaków, a właściwie wskaźnik do pierwszego elementu tablicy. Funkcja, której użyłeś char *strcat (char* strTo, const char* strFrom) przyjmuje C stringi jako parametry.
Rozwiązanie Twojego problemu może okazać się dobrze użyte polecenie sprintf.
Jak tego dokonać? Przeanalizuj sobie kod poniżej i poczytaj o znakach formatu typu %d, %f, %s itd.
Kod:int main()
{
char array[11]; // tablica długości potrzebnej do zmieszczenia wszystkich znaków (plus 1 na '\0')
int godziny = 7;
int minuty = 12; // zmienne
sprintf(array, "%02d:%02d / %ch", godziny, minuty, '2'); // wpisanie ciągu znaków zgodnie z formatem w cudzysłowie
printf("%s", array); // wyświetlenie tablicy (dla Arduino może być Serial.println(array))
return 0;
}
Bardzo, bardzo dziekuję Jak dla mnie genialne Super.