Pointer Standard Frage

Gast #945241
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
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
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
> 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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.