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
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...
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
Ahem, 123456 ist für einen 16-Bit int nicht darstellbar. Wahrscheinlich ist dass das Problem.
> 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.
Wie wäre es, für Zahlen die vordefinierten Variablen-Defines zu benutzen ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.