Memcmp (): differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(Creata pagina con "La funzione ''int '''memcmp'''(const void *__s1, const void *__s2, size_t __n)'' compara i primi ''n'' bytes dell'area di memoria ''__1'' e dell'area di memoria ''__s2''. La...")
 
Nessun oggetto della modifica
 
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 4: Riga 4:


La funzione ritornerà il valore zero, se i dati contenuti dalle due aree di memoria sono uguali; altrimenti restituirà un valore negativo.
La funzione ritornerà il valore zero, se i dati contenuti dalle due aree di memoria sono uguali; altrimenti restituirà un valore negativo.


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:
Riga 9: Riga 10:


Qualora le due aree di memoria contengono sono puntate da due variabili di tipo ''String'', allora i due parametri della funzione esterna potranno assumere il tipo di valore ''String'' .
Qualora le due aree di memoria contengono sono puntate da due variabili di tipo ''String'', allora i due parametri della funzione esterna potranno assumere il tipo di valore ''String'' .


Mostriamo di seguito un semplice esempio, nel quale si compareranno due variabili di tipo ''Stringa'':
Mostriamo di seguito un semplice esempio, nel quale si compareranno due variabili di tipo ''Stringa'':
Riga 19: Riga 19:
   
   
   
   
  '''Public''' Sub Main()
  Public Sub Main()
   
   
   Dim s1, s2 As String
   Dim s1, s2 As String
   Dim i As Integer
   Dim i As Integer
    
    
  s1 = "Gambas è un linguaggio di programmazione"
  s1 = "Gambas è un linguaggio di programmazione"
  s2 = "Gembas è un linguaggio di programmazione"
  s2 = "Gembas è un linguaggio di programmazione"
    
    
  <FONT Color=gray>' ''Verifichiamo la corrispondenza fra i primi 6 caratteri contenuti dalle due variabili di tipo "String":''</font>
  <FONT Color=gray>' ''Verifichiamo la corrispondenza fra i primi 6 caratteri contenuti dalle due variabili di tipo "String":''</font>
  i = bcmp(s1, s2, 6)
  i = <FONT color=#B22222>memcmp</font>(s1, s2, 6)
    
    
  If i = 0 Then
  If i = 0 Then
    Print "I primi sei caratteri contenuti dalle due variabili sono identici."
    Print "I primi sei caratteri contenuti dalle due variabili sono identici."
  Else
  Else
    Print "I primi sei caratteri contenuti dalle due variabili NON sono identici."
    Print "I primi sei caratteri contenuti dalle due variabili NON sono identici."
  Endif
  Endif
      
      
  '''End'''
  End
 





Versione attuale delle 15:11, 13 giu 2024

La funzione

int memcmp(const void *__s1, const void *__s2, size_t __n)

compara i primi n bytes dell'area di memoria __1 e dell'area di memoria __s2.

La funzione ritornerà il valore zero, se i dati contenuti dalle due aree di memoria sono uguali; altrimenti restituirà un valore negativo.


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 memcmp(__s1 As Pointer, __s2 As Pointer, __n As Long) As Integer In "libc:6"

Qualora le due aree di memoria contengono sono puntate da due variabili di tipo String, allora i due parametri della funzione esterna potranno assumere il tipo di valore String .

Mostriamo di seguito un semplice esempio, nel quale si compareranno due variabili di tipo Stringa:

Library "libc:6"

' int memcmp(const void *__s1, const void *__s2, size_t __n)
' Compare N bytes of S1 and S2.
Private Extern memcmp(__s1 As String, __s2 As String, __n As Long) As Integer


Public Sub Main()

 Dim s1, s2 As String
 Dim i As Integer
 
 s1 = "Gambas è un linguaggio di programmazione"
 s2 = "Gembas è un linguaggio di programmazione"
 
' Verifichiamo la corrispondenza fra i primi 6 caratteri contenuti dalle due variabili di tipo "String":
 i = memcmp(s1, s2, 6)
  
 If i = 0 Then
   Print "I primi sei caratteri contenuti dalle due variabili sono identici."
 Else
   Print "I primi sei caratteri contenuti dalle due variabili NON sono identici."
 Endif
   
End


Riferimenti