Forum: Mikrocontroller und Digitale Elektronik long int to ASCII


von Norbert L. (Gast)


Lesenswert?

Guten Morgen und Hallo,

ich versuche eine unsigned long in ASCII zu wandeln.

Mein Compiler CodeVision, stdl.h ist included,

Die Declaration ist:
void ltoa(long int n, char *ptr);

ich habe initialisiert:
1. long int fx_result1;   // Inhalt von ulong
2. char result_trans1[12];  // Array zur ablage der ASCII-zahl
3. char *ptor=&result_trans1;   // Zeiger auf obiges Array


der Funktionsaufruf ist:
4. ltoa( fx_result, *ptor)

Die Fehlermeldungen des Compilers sind
für Zeile 3: illegal address

für Zeile 4: Functon parameter #2 incompatible with its declaration

Irgendwas übersehe ich hier? Habi Ihr eine Tipp?

Norbert L.

von Rufus T. Firefly (Gast)


Lesenswert?

Statt

  char *ptor = &result_trans1;   // Zeiger auf obiges Array

solltest Du besser

  char *ptor = result_trans1;   // Zeiger auf obiges Array

schreiben.

ltoa möchte einen Pointer vom Typ char* übergeben bekommen, nicht einen
vom Typ char**.

von Peter D. (peda)


Lesenswert?

char *ptor = result_trans1;   // Zeiger auf obiges Array

beliebter Fehler !

Entweder Leerzeichen lassen:

char * ptor = result_trans1;

oder Zuweisung separat machen:

char *ptor;
ptor = result_trans1;


Und dann natürlich:

ltoa( fx_result, ptor)

Der * hat 2 verschiedene Bedeutungen !!!

In der Deklaration: ein Pointer
In der Zuweisung: der Inhalt


Peter

von Norbert L. (Gast)


Lesenswert?

@Rufus T. Firefly,
@Peter Dannegger,

jetzt funktioniert es, mit der Zeile von Rufus T. Firefly, ohne
Leerzeichen, und dem zweitem Absatz von Peter Dannergger.

Aber, warum ich das so machen muß ist mir noch nicht klar.
Mein Lehrbuch 'C in 25 Tagen' habe ich wohl zu schnell gelesen.

Besten Dank!     Norbert L.

von Michael (Gast)


Lesenswert?

Vielleicht hast Du Lust, meine Routine aus der Codesammlung mit Deinem
Compiler zu testen - Codegröße und Geschwindigkeit - und das Ergebnis
mitzuteilen ?

http://www.mikrocontroller.net/forum/read-4-126283.html

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.