Differenze tra le versioni di "Memcmp ()"

Da Gambas-it.org - Wikipedia.
 
Riga 10: 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 20: 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 = <FONT color=#B22222>memcmp</font>(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 14: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