quarta-feira, 12 de dezembro de 2012

memcpy

funkcio

memcpy

<cstring>
  void * memcpy (void * destino, const void * fonto, size_t num); 
 
Kopiu blokon de memoro
Kopias la valorojn de num bitokoj de la loko markis por fonto rekte al la memora bloko notitaj kiel destino.

La suba tipo de la celoj punktitaj de ambaŭ la fonto kaj destino puntero estas palaj por ĉi tiu funkcio; La rezulto estas duargumenta kopio de la datumoj.

La funkcio ne kontrolas por ajna finanta nula karaktero en vikitekston - ĝi ĉiam kopias ĝuste num bajtoj.

Evitu superfluon, la grandeco de la tabeloj punktita per ambaŭ la destino kaj fonto parametroj, estu almenaŭ num bajtoj, kaj devus ne koincidas (por solapandaj memoraj blokoj, memmove estas sekura aliro).

Parametroj

destino
Sagon al la destina tabelo kie la enhavo devas esti kopiitaj, tipo-distribuita la rolo al puntero de tipo void *.
fonto
Sagon al la fonto de datumoj por esti kopiitaj, tipo-distribuita la rolo al puntero de tipo const void *.
num
Nombro de bajtoj por kopii.
size_t estas sensigna integralo tipo.

Return Value

destino estas redonita.

Ekzemplo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* memcpy example */
#include <stdio.h>
#include <string.h>

struct {
  char name[40];
  int age;
} person, person_copy;

int main ()
{
  char myname[] = "Pierre de Fermat";

  /* using memcpy to copy string: */
  memcpy ( person.name, myname, strlen(myname)+1 );
  person.age = 46;

  /* using memcpy to copy structure: */
  memcpy ( &person_copy, &person, sizeof(person) );

  printf ("person_copy: %s, %d \n", person_copy.name, person_copy.age );

  return 0;
}


Output:

person_copy: Pierre de Fermat, 46 

Nenhum comentário:

Postar um comentário