Differenze tra le versioni di "Memcpy ()"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
La funzione della libreria di C
 
La funzione della libreria di C
 
  ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''
 
  ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''
copia ''n'' caratteri da un'area di memoria ''str2'' ad un'altra area di memoria ''str1''.
+
copia ''n'' caratteri da un'area di memoria ''str2'' ad un'altra area di memoria ''str1'', entrambe puntate da due variabili di tipo ''Puntatore''.
  
  

Versione delle 17:49, 10 mar 2014

La funzione della libreria di C

void *memcpy(void *str1, const void *str2, size_t n)

copia n caratteri da un'area di memoria str2 ad un'altra area di memoria str1, entrambe puntate da due variabili di tipo Puntatore.


Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:

Private Extern memcpy(dest As Pointer, src As Pointer, count As Integer) As Pointer In "libc:6"


Semplice esempio di uso in Gambas con un valore numerico di tipo Intero

' void *memcpy(void *str1, const void *str2, size_t n)
Private Extern memcpy(dest As Pointer, src As Pointer, count As Integer) In "libc:6"

Public Sub Main()

 Dim a, b As Pointer
 Dim num As Integer
 
 
  num = 999

  a = VarPtr(num)
  b = Alloc(SizeOf(gb.Integer))
 
 
   memcpy(b, a, SizeOf(gb.Integer))
  
  Print Int@(b)

  Free(b)

End


Semplice esempio di uso in Gambas con un valore di tipo Stringa

' void *memcpy(void *str1, const void *str2, size_t n)
Private Extern memcpy(dest As Pointer, src As Pointer, count As Integer) In "libc:6"


Public Sub Main()

 Dim src, dest As Pointer
 Dim s As String = "Questa è una prova con la funzione 'memcpy()'."


  src = Alloc(s)
  dest = Alloc(Len(s))
   
   memcpy(dest, src, Len(s))
   
  Print "Dopo memcpy, " & Quote("dest") & ":\n"; String@(dest)

  Free(src)
  Free(dest)

End