Hallo, On Wed, 16 Apr 2003, Georg Wagner wrote:
Am Mittwoch, 16. April 2003 21:33 schrieb David Haller:
Hallo,
[...]
Nun ist die Frage, wie bekommst du den input? Falls du den kopieren willst, wuerde ich wohl sowas machen:
Input kommt von einer Oracle Datenbank.
Ahso. Je nachdem, wie du eben an die strings rankommst musst du das eben anpassen. Ich habe eben als "Platzhalter" die libreadline fuer den interaktiven Input verwendet. Du musst das eben anpassen/ersetzen und das Eingabeende und evtl. Fehler abfangen.
==== minimal getestet ==== [..] while( (input = readline("enter string:")) != NULL) { [..] ====
Hm, warum bin ich blos nicht auf die Idee gekommen einen realloc zu verwenden?
Hast du ja, aber flasch ;) Siehe Michael's Mail zu den Fehlern...
Eine andere Frage: readline.h ist anscheinend nicht ANSI-C da sie bei mir auf meinem System nicht finden kann.
Ja, das ist die GNU-libreadline. Wenn die Daten aber eh nicht interaktiv eingegeben werden ist das egal. "readline" ist also kein Platzhalter, sondern eben der Aufruf der Funktion aus der libreadline.
Achtung: ich bin selber noch C-Anfaenger und habe oben sicher noch ein paar Fehler eingebaut. Und nein, normal verwende ich keine gotos ;)
Das mit den goto's ist kein Problem.
Naja, das ist her fuer's aufraeumen recht praktisch ;)
Ein Tipp von mir: Wenn du eine strn[cpy,cmp,...] verwendest terminiere die letzte stelle mit \0.
man calloc ;) calloc() allocates memory for an array of nmemb elements of size bytes each and returns a pointer to the allocated memory. The memory is set to zero. ^^^^^^^^^^^^^^^^^^^^^^^^^^ *g* Falls es calloc nicht auf allen Zielplattformen gibt, kann man das calloc durch malloc+memset ersetzen. Kurz: ich bekomme einen genullten, kontinuierlichen Speicherbereich von strnlen+1 Laenge (oder einen Fehler). Falls "char * input" aber nicht null-terminiert ist, hast du aber sowieso ein Problem, da erstens strnlen "bricht" und zweitens das dann auch kein "C-String" mehr ist. Dann muesste man irgendwie auch noch die Laenge des char-Arrays mitfuehren und ueberpruefen usw. Das haengt also von deiner "getinput" Funktion ab.
Fehler habe ich allerdings keine gefunden. Soweit hat es funktioniert. Habe mir noch einmal alle Variablen angeschaut und da war das drinnen was ich mir vorgestellt habe.
Danke ;) Naja, "vollstaendige" Beispiele sind eben viel leichter nachzuvollziehen und zu ueberprufen... Daher hab ich eben auch 'input = readline("...")' verwendet statt ueber deine "getinput"-Funktion zu spekulieren... Und da dies eine SuSE-Liste ist, kann man die libreadline IMO voraussetzen ;) -dnh -- I'm sorry, I can't be a Jehovah's Witness, as I didn't see Jehovah's accident. -- Chris Suslowicz