PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] memcpy()



Trillian
13-09-2002, 15:08
Hi,
sorry, mir ist kein aussagekräftigeres Topic eingefallen.

Folgendes Problem:
-Ich habe einen X Byte langen String (aka char Array ;) ), den ich N mal in einen zweiten Buffer schreiben will.

Beispiel: String "unix" 5 mal kopieren -> "unixunixunixunixunix".

Nun könnte ich einfach N mal memcpy() aufrufen, und jedes mal "unix" kopieren, was aber bei hohen N ziemlich uneffektiv wird.

Also möchte ich lieber erst 2 mal "unix" kopieren (-> im Ziel-Buffer steht "unixunix"),und dann den kompletten Ziel-Buffer wieder hintendran kopieren (-> "unixunixunixunix"), und immer so weiter.

Leider kann ich nicht immer den Inhalt des Ziel-Buffers "verdoppeln", und mein N ist auch nicht immer gleich...

=> Hat jemand eine Idee, wie ich das am effektivsten löse?

Danke,
Trillian

xmarvel
13-09-2002, 15:37
am besten mit einer for Schleife denke ich mal
nicht getesteter Code:



char var;
var = "unix"

for (int i; i<4; i++)
{
sprintf(buf,"%s",var);
}

printf ("%s",buf);


Sorry hab den Code gerade mal getestet scheint doch nicht zu funktionieren. War wohl etwas zu schnell. Aber wenn man die for Schleife etwas umbaut denke ich mal das es funktionieren würde


MFG
xmarvel

Trillian
13-09-2002, 17:02
Nah, so simpel ist das nicht:

beim ersten Durchgang soll "unix" kopiert werden, dann "unixunix", dann "unixunixunix" etc.

Aber das geht nicht immer so schön auf...

anda_skoa
13-09-2002, 17:23
Wenn du die Quadratwurzel aus N nimmst, dann hast du (abgerundet auf den nächsten int) die Anzahl der Verdopplungen.
Den Rest mußt du halt dann einzeln machen

Ciao,
_

Trillian
13-09-2002, 20:51
Wurzel(x) ist es nicht... Aber ich mache es mittlerweile sowieso anders ;)