Forum: Mikrocontroller und Digitale Elektronik Variable Zuordnung


von Dirk S. (thetuner)


Lesenswert?

Hallo Zusammen,

ich möchte in einer Schleife mehrere IO-Expander de­kla­rie­ren

int i;

for(i=0; i<5; i++) {

char* Ex = "Expander";
strcat(Ex,i);
char* Ad = "Adresse";
strcat(Ad,i);

MCP23S17 Ex = MCP23S17(spi, p20 , Ad );

}

So sollte es Aussehen.

Funktionieren wird es natürlich nicht, jetzt kommt Ihr ins spiel ich 
benötige einen Schupser zur Lösung.

besten Dank im voraus
Dirk

von Stefan F. (Gast)


Lesenswert?

strcat hängt eine Zeichenkette an eine andere an. Du machst hier zwei 
Fehler:

1) Deine Ziel-Variable hat gerade genug Platz für die initiale 
Zeichenkette ("Expander", "Adresse"). Du musst sie so deklarieren, dass 
mehr Speicherplatz reserviert wird, um Platz für die anzuhängende 
Zeichenkette zu reservieren.

2) i its keine Zeichenkette sondern ein Integer.

Danach deklarierst du eine neue Variable mit dem gleichen Namen 
(MCP23S17 Ex), das ist nicht zulässig. Variablen brauchen eindeutige 
Namen.

Ich würde Dir empfehlen, alle Compiler Warnungen zu aktivieren (Compiler 
Option -Wall) und diese auch zu zeigen, wenn du dazu Fragen hast. Denn 
so Sätze wie "geht nicht" sind keine gültige Fehlermeldung. Das kannst 
du in der Autowerkstatt auch nicht bringen.

Beitrag #5766134 wurde von einem Moderator gelöscht.
von Stefan F. (Gast)


Lesenswert?

Was du eigentlich machen willst, ist übrigens weder an deinem Text noch 
am Quellcode erkennbar.

von Einer K. (Gast)


Lesenswert?

Array mit Initialisierungsliste.
Nix in Schleife erstellen.

Alternativ:
Pointer Array und Objekte mit new in Schleife erzeugen.

von Rolf M. (rmagnus)


Lesenswert?

Dirk S. schrieb:
> Funktionieren wird es natürlich nicht, jetzt kommt Ihr ins spiel ich
> benötige einen Schupser zur Lösung.
1
char Ex[GROSS_GENUG];
2
sprintf(Ex, "Expander%d", i);

von Jim M. (turboj)


Lesenswert?

Dirk S. schrieb:
> benötige einen Schupser zur Lösung.

Besorge Dir ein gutes Buch über die Programmiersprache C oder besser 
noch C++. C ist nicht grade als für Einsteiger freundlich bekannt.

von Stefan F. (Gast)


Lesenswert?

Jim M. schrieb:
> Dirk S. schrieb:
>> benötige einen Schupser zur Lösung.
>
> Besorge Dir ein gutes Buch über die Programmiersprache C oder besser
> noch C++. C ist nicht grade als für Einsteiger freundlich bekannt.

Einsteigern kann ich für das erste Wochenende die Anleitung von Arduino 
empfehlen. Da ist das allerwichtigste so kurz und knapp beschrieben, wie 
nur möglich.

Man sollte nur bedenken, dass es danach noch mehr zu lernen gibt. Also 
nicht an dieser Stelle aufhören und als "Experienced Senior Embedded 
Developer" ahnungslose Firmen beraten.

von Dirk S. (thetuner)


Lesenswert?

Danke für die konstruktiven Kommentare.

Ich werde eure Kommentare beherzigen und versuchen sie umzusetzen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.