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 *__restrict __dest, const void *__restrict __src, 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''.
 
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:
 
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché bisognerà dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta:
  Private <FONT color=#B22222>Extern memcpy</font>(dest As Pointer, src As Pointer, count As Integer) As Pointer In "<FONT color=#B22222>libc:6</font>"
+
  Private <FONT color=#B22222>Extern memcpy</font>(__dest As Pointer, __src As Pointer, __n As Long) In "<FONT color=#B22222>libc:6</font>"
  
  
  
 
===Semplice esempio di uso in Gambas con un valore numerico di tipo ''Intero''===
 
===Semplice esempio di uso in Gambas con un valore numerico di tipo ''Intero''===
  <FONT color=Gray>' ''void *'''memcpy'''(void *str1, const void *str2, size_t n)''
+
Library "libc:6"
 +
 +
  <FONT color=Gray>' ''void *'''memcpy'''(void *__restrict __dest, const void *__restrict __src, size_t __n)''
 
  ' ''Copy N bytes of SRC to DEST.''</font>
 
  ' ''Copy N bytes of SRC to DEST.''</font>
  Private Extern <FONT color=#B22222>memcpy</font>(dest As Pointer, src As Pointer, count As Long) In "<FONT color=#B22222>libc:6</font>"
+
  Private Extern <FONT color=#B22222>memcpy</font>(__dest As Pointer, __src As Pointer, __n As Long)
 
   
 
   
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
Riga 36: Riga 38:
  
 
===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)''
+
Library "libc:6"
 +
 +
  <FONT color=Gray>' ''void *'''memcpy'''(void *__restrict __dest, const void *__restrict __src, size_t __n)''
 
  ' ''Copy N bytes of SRC to DEST.''</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>"
+
  Private Extern <FONT color=#B22222>memcpy</font>(__dest As Pointer, __src As Pointer, __n As Long)
 
   
 
   
 
   
 
   

Versione delle 19:33, 20 lug 2016

La funzione della libreria di C

void *memcpy(void *__restrict __dest, const void *__restrict __src, 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, __n As Long) In "libc:6"


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

Library "libc:6"

' void *memcpy(void *__restrict __dest, const void *__restrict __src, size_t __n)
' Copy N bytes of SRC to DEST.
Private Extern memcpy(__dest As Pointer, __src As Pointer, __n As Long)

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

Library "libc:6"

' void *memcpy(void *__restrict __dest, const void *__restrict __src, size_t __n)
' Copy N bytes of SRC to DEST.
Private Extern memcpy(__dest As Pointer, __src As Pointer, __n As Long)


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



Riferimenti