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


von Gast (Gast)


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???

von Karl H. (kbuchegg)


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_funktioniert_String-Verarbeitung_in_C.3F

von Gast (Gast)


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:
1
#include <avr/io.h>
2
#include <avr/pgmspace.h>
3
#include <string.h>
4
5
int main(void)
6
{
7
  RS232_Init();
8
  char strings[40][17];
9
  strcopy(strings[0], "Strom");
10
  strcopy(strings[1], "Spannung");
11
  while(1)
12
  {
13
    printf ("%s",strings[0]);
14
  }
15
}

von Sven P. (Gast)


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.

von Gast (Gast)


Lesenswert?

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

Danke schonmal.

von Johannes M. (johnny-m)


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!

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.