Pointer Standard Frage

Gast #945241
Lesenswert?

hallo Forum,

bin grad in meinem Programm an eine Stelle gekommen an der ich irgendwie 
festhakt - is eigentlich ne C-Standard Sache aber irgendwie hab ich grad 
nen Knoten. Ich habe:

die Struktur:

struct DataType
{
    char person[10];
    ...
} Data;

und die Variable:

char *ptr;

Mein pointer ptr zeigt auf einen Namen, den ich einfach nur in 
Data.person abgespeichert haben möchte.

Hab schon ne Menge Kombinationen mit strcpy, sprintf usw. versucht, aber 
irgendwie habe ich immer den falschen Inhalt (wahrscheinlich die Adresse 
des pointers oder so) zugewiesen.

mfg
Mirko
Gast #945245
Lesenswert?

Gerade eben hat man mich noch belehrt, so solltes gehn:
1
 struct DataType
2
 {
3
     char person[10];
4
     ...
5
 } Data;
6
 
7
 char *ptr;
8

9

10
strcpy(Data.person, ptr);

Abschließendes Nullbyte vorausgesetzt...
Gast #945531
Lesenswert?

danke vielmals - hätt schwören können, dass ich das gleich als Erstes 
ausprobiert hatte - naja egal, die Hauptsache ist jetzt gehts...

Allerdings klemmts jetzt an ner anderen Stelle mit was ähnlichem

also wie gehabt der Pointer:
1
char *ptr;
2
char Hilfsvariable[10];

und die Struktur:
1
struct DataType
2
{
3
    char person[10];
4
    int time;
5
    ...
6
} Data;

In ptr steht zu Beginn eine Zahl z.B. 123456.123 - jetzt mache ich damit 
folgendes:
1
*(ptr + 6) = '\0';              // Terminierung nach dem 6. Zeichen 
2
Data.time = atoi (ptr);            // Umrechnen in int wert

Zur Kontrolle ob die Zeit auch wirklich richtig in Data.time steht 
möchte ich sie mir im weiteren über den uart ausgeben. Dazu schreibe 
ich:
1
sprintf (Hilfsvariable,"%u",Data.time);
2
uart_puts (Hilfsvariable);

Da kommt dann allerdings eine ganz andere Zahl raus, die nichts mit der 
Zeit zu tun hat. Seht ihr vielleicht den Fehler den ich mache?

schönen Abend noch
Mirko
Gast #945857
Lesenswert?

> In ptr steht zu Beginn eine Zahl z.B. 123456.123

Worauf zeigt ptr? Auf ein char-Array? Ist dieses groß genug für die
o.g. Zahl plus die End-'\0'?

Das das Programm für einen Mikrocontroller zu sein scheint, sind aber
wahrscheinlich die von Gast angesprochenen 16-Bit das Problem.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren