DLL Funktion Rückgabewert Zahl statt String

ayk

Ensign
Registriert
Apr. 2004
Beiträge
163
Hi,

habe ein Problem mit einer DLL die ich erstellt habe. Wenn ich Funktion name() aufrufe, bekomme ich als Rückgabewert Zahlen wie: 19303060 oder 19300600. Sind das die Adressen zu dem String? Gibt es keine Möglichkeit den String als solches zurückzugeben?

Code:
[SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=4]* n[] = {[/SIZE][SIZE=4][COLOR=#a31515]"Pablo "[/COLOR][/SIZE][SIZE=4], [/SIZE][SIZE=4][COLOR=#a31515]"Paige "[/COLOR][/SIZE][SIZE=4], [/SIZE][SIZE=4][COLOR=#a31515]"Pam "[/COLOR][/SIZE][SIZE=4], [/SIZE][SIZE=4][COLOR=#a31515]"Pamela "[/COLOR][/SIZE][SIZE=4], [/SIZE][SIZE=4][COLOR=#a31515]"Pandora "}[/COLOR][/SIZE]
 
[SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=4] random([/SIZE][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=4] MinZahl,[/SIZE][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=4] MaxZahl)[/SIZE]
[SIZE=4]{[/SIZE]
[SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=4] temp=0;[/SIZE]
[SIZE=4]srand(([/SIZE][SIZE=4][COLOR=#0000ff]int[/COLOR][/SIZE][SIZE=4])time(NULL)+clock());[/SIZE]
[SIZE=4][COLOR=#0000ff]do[/COLOR][/SIZE]
[SIZE=4]{[/SIZE]
[SIZE=4]temp=rand();[/SIZE]
[SIZE=4]}[/SIZE]
[SIZE=4][COLOR=#0000ff]while[/COLOR][/SIZE][SIZE=4](temp<MinZahl || temp>MaxZahl);[/SIZE]
[SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=4](temp);[/SIZE]
[SIZE=4]}[/SIZE]
 
[SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=4]* name([/SIZE][SIZE=4][COLOR=#0000ff]void[/COLOR][/SIZE][SIZE=4]){[/SIZE]
[SIZE=4][COLOR=#0000ff]return[/COLOR][/SIZE][SIZE=4] n[random(1,[/SIZE][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][SIZE=4](n)/[/SIZE][SIZE=4][COLOR=#0000ff]sizeof[/COLOR][/SIZE][SIZE=4]([/SIZE][SIZE=4][COLOR=#0000ff]char[/COLOR][/SIZE][SIZE=4]*))-1];[/SIZE]
[SIZE=4]}[/SIZE]
 
Zuletzt bearbeitet:
Hi,

also in der ersten Zeile fehlt die abschließende Klammer.
Außerdem musst du mir mal erklären was der "srand()"-Aufruf bewirken soll. Der steht da einfach nur da und der Wert wird nicht weiter gespeichert.
Ansonsten: Müsste die Prüfung im while-Teil nicht "while(temp>minZahl && temp<maxZahl);" heißen?
 
Danke dass du helfen willst, aber es geht 1. gar nicht darum, wie meine random Funktion arbeitet und zweitens soll die Rand Funktion nur nochmal durchlaufen werden, wenn die Rand Zahl nicht im angegebenen Wertebereich liegt, also wie ich es definiert habe. Es geht einfach um den Rückgabetypen...
 
Der Rückgabewert deiner Funktion ist ja ein Zeiger... Außerdem was willst du mit sizeof(char*) bezwecken? Da sollte immer 32bit/64bit rauskommen.
 
Naja, in der name()-Funktion wird random() aufgerufen. Ich hätte zuerst mal auf ungültigen Indexzugriff außerhalb des Wertebereichts getippt.
 
Götterwind, ich will die Anzahl der Elemente des Arrays, um im richtigen Bereich meine Zufallszahl zu generieren... sizeof(array) gibt mir die anzahl an Bytes zurück und nicht die Anzahl der Elemente.... darum durch die Größe pro Element...

@moagnus: Selbst wenn ich die Funktion so ändere, dass er Index 1 zurückgibt, bekomme ich sowas...
 
Du sagst du bekommst als Rückgabewert Zahlen. Was meinst du damit? char*, die diese Zahl in textueller Darstellung enthalten?
 
Zurück
Oben