www.mikrocontroller.net

Forum: Compiler & IDEs C anfänger frage


Autor: Marcel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen,

wenn ich mir im sram ein array reserviere z.b:

char array[10];

und ich das ganze mit einem string füllen will
kenne ich nur eine komplizierte art dies zu tun:

array[0] = 'H';
array[1] = 'a';
array[2] = 'l';
array[3] = 'l';
array[4] = 'o';

gibt es keine variante dies einfacher ist?

Autor: Marko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char array[8]={'H','a','l','l','o'};



Gruß
Marko

Autor: Zoltan Gradwohl (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Von Anfänger zu Anfänger :>
char array[]="Hallo";
siehe: http://os.inf.tu-dresden.de/%7Ejn4/ckurs/c-kurs0.h...
Kapitel 3


Grad zu dem Thema hätte ich auch eine Frage:
Wenn ich ein Feld gleich mit Variablen initialisiere, dann schreibt
AVRstudio 4 bei der Simulation im Watch Fenster anstelle meiner
Variablen nur "irgendwelche" Zahlen in das Feld, siehe Anhang. Was
kann ich da falsch gemacht haben?


Danke und Gruß
Zoltan

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
char array[8]={'H','a','l','l','o'};

geht nur bei der Initialisierung der Variable (und ist kein String,
weil die abschließende 0 fehlt). Um zur Laufzeit einen String in das
Array zu kopieren gibt es die Funktionen strcpy und strncpy.

Beispiel:
  strcpy(array, "Hallo");

Bei strncpy kann man die Anzahl n der zu kopierenden Bytes angeben. Das
macht z.B. Sinn wenn man einen String unbekannter Länge hat, den man in
ein Array mit begrenzter Länge kopieren will. Allerdings wird der
String nicht automatisch terminiert, deshalb muss man "von Hand" eine
Null anfügen:
  strcpy(array, string, 7);  // 7 bytes von string nach array kopieren
  array[7] = '\0';           // das 8. Byte in array auf 0 setzen

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Initialisierte globale Variablen werden in AVRStudio nicht korrekt
angezeigt. Siehe WinAVR (AVR COFF) readme file, Abschnitt "known
issues".

Autor: Zoltan Gradwohl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, habs gefunden. Danke

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Andreas hat es zwar schon mehr oder weniger geschrieben aber so
eindeutig geht es daraus nicht hervor:

char array[8]={'H','a','l','l','o'};
ist nicht identisch mit
char array[8]="Hallo";
da im zweiten Fall noch das den String terminierende Zeichen '\0'
angefügt wird.

Matthias

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.