www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Strings und zusätzlich noch Arrays?


Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe 40 Strings, die ich gerne in einem Array speichern will. Also 
muss doch die dekleration so aussehen:

char strings[40][16];

Die Strings sind jeweils 16 Zeichen lang. Muss ich dann [16] oder [17] 
schreiben? [16] bedeutet doch 0-15 also sprich 16 Buchstaben könnte ich 
abspeichern, allerdings gibts ja die Nullbyteterminierung, also könnte 
ich nur 15 Buchstaben speichern oder?

So und jetzt gehts weiter, wie weiße ich der Variable dann eine 
Zeichenkette zu?

z.b.

strings[0] = "Strom";
strings[1] = "Spannung";
usw.

Aber so gehts ja nicht...
Kann mir da bitte jemand helfen, ich weiß es sollte in jede C-Buch 
stehen, aber da wird immer irgend eine Funktion zum Kopieren benutzt und 
da ich ja am µC diese Funktionen nicht habe, bin ich etwas ratlos... 
Oder muss ich mir so eine Funktion selbst schreiben???

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
>
> char strings[40][16];
>
> Die Strings sind jeweils 16 Zeichen lang. Muss ich dann [16] oder [17]
> schreiben?

17

> [16] bedeutet doch 0-15 also sprich 16 Buchstaben könnte ich
> abspeichern,

Nein

> allerdings gibts ja die Nullbyteterminierung,

Genau

> also könnte
> ich nur 15 Buchstaben speichern oder?

Ja


> strings[0] = "Strom";

   strcpy( strings[0], "Strom" );

> strings[1] = "Spannung";


  strcpy( strings[1], "Spannung" );

> Oder muss ich mir so eine Funktion selbst schreiben???
http://www.mikrocontroller.net/articles/FAQ#Wie_fu...

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
C:\Dokumente und Einstellungen\Administrator\Desktop\Mikrocontroller 
Programme\stringstest\default/../stringstest.c:9: undefined reference to 
`strcopy'


Ich hab oben aber stehen #include <string.h>

Hier der Code:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <string.h>

int main(void)
{
  RS232_Init();
  char strings[40][17];
  strcopy(strings[0], "Strom");
  strcopy(strings[1], "Spannung");
  while(1)
  {
    printf ("%s",strings[0]);
  }
}

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an, wenn die Strins allesamt genau 16 Bytes lang sind, 
machts u.U. Sinn, das Nullbyte wegzulassen und stattdessen die Länge 
anzugeben.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber was muss ich machen, damit ich die funktion strpcy() benutzen 
kann???? Es kommt immer dieser Fehler!

Danke schonmal.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gast wrote:
> Ja aber was muss ich machen, damit ich die funktion strpcy() benutzen
> kann???? Es kommt immer dieser Fehler!
Wenn Du strcpy richtig schreibst (also so, wie Karl heinz es Dir 
vorgegeben hat), dann sollte es auch keine Fehlermeldung geben. Eine 
Funktion strcopy gibt es aber nicht!

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.