Stringkonstante in ein char*[] convertieren

Programmierung und Hardwaredesign mit Arduino, AVR, PIC und Konsorten.

Moderatoren: MaxZ, ebastler, SeriousD

Antworten
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Stringkonstante in ein char*[] convertieren

Beitrag von L_B_S »

Hallo zusammen,

ich habe dieses Prog compiliert in der Arduino - IDE-1.8.7

Code: Alles auswählen

#include <TM1638.h>
/* Anschluss des TM1638 Modul's am UNO
 *  VCC  5V
 *  GND
 * STB pin 7 
 * DIO pin 8 
 * CLK pin 9
*/  
TM1638 module(8, 9, 7);

char* message[]={"        ","O       ","LO      ","LLO     ","ALLO    ","HALLO   "," HALLO  ", 
                 "  HALLO ","   HALLO","    HALL","     HAL","      HA","       H","        "};

void setup(){}
 
void loop()
{
     for(int i = 0; i < 14; i++)
     {
      module.setDisplayToString(message[i]);
      delay(100);
     } 
delay(500);

}
...wird compiliert , funktioniert auch. Es kommt allerdings eine Warnung :
warning: ISO C++ forbits converting a string constant to 'char*'
In der Arduino Referenz ist ein nahezu identisches Beispiel angegeben.
In dem unten angeführten Code-Beispiel bedeutet und bezeichnet der Stern hinter dem Datentyp char, dass es sich hierbei um einen String mit “Pointern” handelt. Da alle Arraynamen eigentlich Pointer sind, ist das notwendig, um ein Array von Arrays zu bilden (Zweidimensionales Array). Pointer sind ein Teil der eher „esoterischen“ Teile der C-Programmiersprache und schwer zu verstehen für Anfänger. Aber in diesem Codebeispiel ist es nicht notwendig, die Benutzung von Pointern zu verstehen, um sie effizient einzusetzen (ideal für Auswahl unterschiedlicher Anzeigetexte in LCD’s aufgrund von Entscheidungen im Programm [A.N.]).

Code: Alles auswählen

char* myStrings[]={"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5","This is string 6"};
void setup(){ // Setup wird einmal durchlaufen
Serial.begin(9600); // serielle Schnittstelle 9600Bd initialisieren
}
void loop(){ // Hauptprogramm wird in Schleife durchlaufen
for (int i = 0; i < 6; i++){ // 6 mal ausführen
Serial.println(myStrings[i]);
delay(500); // Pause 0,5 Sekunden
}
}
Es kommt die gleiche Warnung. Mache ich da irgent etwas falsch ? Wie sollte ich die Convertierung sonst machen ?

Gruss
Ludwig
Benutzeravatar

VDX
Beiträge: 1805
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Hat sich bedankt: 8 Mal
Danksagung erhalten: 195 Mal

Re: Stringkonstante in ein char*[] convertieren

Beitrag von VDX »

... schreib mal "const char* message[]={* .... "

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425
Benutzeravatar

Thread-Ersteller
L_B_S
Beiträge: 531
Registriert: Fr 24. Jul 2015, 10:13
Schule/Uni/Arbeit: KFZ-Elktr.
Hat sich bedankt: 19 Mal
Danksagung erhalten: 23 Mal

Re: Stringkonstante in ein char*[] convertieren

Beitrag von L_B_S »

jepp,
das war's, warum steht so etwas nicht in der Referenz :roll:

Danke
Benutzeravatar

VDX
Beiträge: 1805
Registriert: Fr 13. Jul 2018, 18:23
Spezialgebiet: Laser und Mikro-/Nanotechnik
Hat sich bedankt: 8 Mal
Danksagung erhalten: 195 Mal

Re: Stringkonstante in ein char*[] convertieren

Beitrag von VDX »

... 's scheint für die Leute, die die Referenz schreiben, wohl einfach "zu grundlegend" zu sein, um noch extra erwähnt zu werden ;)

Viktor
Aufruf zum Projekt "Müll-freie Meere" - https://reprap.org/forum/list.php?426 -- Facebook-Gruppe - https://www.facebook.com/groups/383822522290730
Call for the project "garbage-free seas" - https://reprap.org/forum/list.php?425
Antworten