Forum: Mikrocontroller und Digitale Elektronik Variable Zuordnung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Dirk S. (thetuner)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
-1 lesenswert
nicht 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. (stefanus)


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

von Arduino Fanboy D. (ufuf)


Bewertung
0 lesenswert
nicht lesenswert
Array mit Initialisierungsliste.
Nix in Schleife erstellen.

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

: Bearbeitet durch User
von Rolf M. (rmagnus)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Danke für die konstruktiven Kommentare.

Ich werde eure Kommentare beherzigen und versuchen sie umzusetzen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.