Differenze tra le versioni di "Memcpy ()"

Da Gambas-it.org - Wikipedia.
Riga 36: Riga 36:
  
 
===Semplice esempio di uso in Gambas con un valore di tipo ''Stringa''===
 
===Semplice esempio di uso in Gambas con un valore di tipo ''Stringa''===
  <FONT color=Gray>' ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''</font>
+
  <FONT color=Gray>' ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''
  '''Private''' <FONT color=#B22222>Extern memcpy</font>(dest As Pointer, src As Pointer, count As Integer) In "<FONT color=#B22222>libc:6</font>"
+
' ''Copy N bytes of SRC to DEST.''</font>
 +
  Private Extern <FONT color=#B22222>memcpy</font>(dest As Pointer, src As Pointer, count As Integer) In "<FONT color=#B22222>libc:6</font>"
 
   
 
   
 
   
 
   

Versione delle 11:22, 18 mar 2016

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)
' Copy N bytes of SRC to DEST.
Private Extern memcpy(dest As Pointer, src As Pointer, count As Long) 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)
' Copy N bytes of SRC to DEST.
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