Hi, 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.
==== minimal getestet ==== #include
#include #include #include #include int main(void) { char ** array = NULL; char * input = NULL; int i=0; int j=0;
while( (input = readline("enter string:")) != NULL) { printf("read string[%i]='%s'\n", i, input); array = (char**)realloc(array, sizeof(char*) * (i+1)); if(!array) { goto cleanup; } array[i] = (char*)calloc(strlen(input)+1, sizeof(char)); if(!array[i]) { goto cleanup; } strncpy(array[i], input, strlen(input)); i++; } errno = 0; /* readline setzt das auf 2, wg. irgendwas anderem */ printf("Read all strings\n");
for(j=0; j
cleanup: for(j=0; j
return errno; }
====
Hm, warum bin ich blos nicht auf die Idee gekommen einen realloc zu verwenden? Eine andere Frage: readline.h ist anscheinend nicht ANSI-C da sie bei mir auf meinem System nicht finden kann.
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. Ein Tipp von mir: Wenn du eine strn[cpy,cmp,...] verwendest terminiere die letzte stelle mit \0. Dadurch kannst du sicherstellen, dass kein Schrott mit ausgegeben werden. Du hast einen String mit 20 chars hast und du schreibst genau 20 Zeichen hinein, weiß der Kompiler nicht, wo der String aufhört und ließt einfach so lange im Speicher weiter bis er auf \0 trifft. 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 für deine Hilfe! LG Georg