Differenze tra le versioni di "Strcat ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione della libreria di C ''char *strcat(char *dest, const char *src)'' concatena due stringhe; in particolare aggiunge la stringa ''src'' al termine della stringa ''de...")
 
 
Riga 6: Riga 6:
 
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta:
 
Volendola utilizzare in Gambas, bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta:
 
  Private <FONT color=#B22222>Extern strcat</font>(dest As Pointer, src As Pointer) As Pointer In "<FONT color=#B22222>libc:6</font>"
 
  Private <FONT color=#B22222>Extern strcat</font>(dest As Pointer, src As Pointer) As Pointer In "<FONT color=#B22222>libc:6</font>"
 
 
 
 
Semplice esempio di uso in Gambas:
 
Semplice esempio di uso in Gambas:
 
  <FONT color=Gray>' ''char *strcat(char *dest, const char *src)''</font>
 
  <FONT color=Gray>' ''char *strcat(char *dest, const char *src)''</font>
  '''Private''' <FONT color=#B22222>Extern strcat</font>(dest As Pointer, src As Pointer) As Pointer In "<FONT color=#B22222>libc:6</font>"
+
  Private <FONT color=#B22222>Extern strcat</font>(dest As Pointer, src As Pointer) As Pointer In "<FONT color=#B22222>libc:6</font>"
 +
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim a, b As Pointer
 
   Dim a, b As Pointer
 
   Dim s1, s2 As String
 
   Dim s1, s2 As String
 +
 
 +
  s1 = "super"
 +
  a = VarPtr(s1)
 
   
 
   
+
  s2 = "pippo"
    s1 = "super"
+
  b = VarPtr(s2)
    a = VarPtr(s1)
 
 
    s2 = "pippo"
 
    b = VarPtr(s2)
 
 
    
 
    
    <FONT color=#B22222>strcat</font>(a, b)
+
  <FONT color=#B22222>strcat</font>(a, b)
 
    
 
    
    Print String@(a)
+
  Print String@(a)
 
   
 
   
  '''End'''
+
  End
  
  
===Uso della funzione ''strcat'' all'interno di una libreria esterna creata dall'utente===
+
===Uso della funzione "strcat()" all'interno di una libreria esterna creata dall'utente===
 
Se il programmatore vuole utilizzare la funzione ''strcat'' all'interno di una libreria esterna specifica da lui creata, allora si potrà adottare il seguente codice.
 
Se il programmatore vuole utilizzare la funzione ''strcat'' all'interno di una libreria esterna specifica da lui creata, allora si potrà adottare il seguente codice.
  
Riga 55: Riga 52:
  
 
Il codice Gambas potrà essere:
 
Il codice Gambas potrà essere:
  '''Private''' Extern concatena(sC As Pointer) As String In "/tmp/libconc"
+
  Private Extern concatena(sC As Pointer) As String In "/tmp/libconc"
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim s As String
 
   Dim s As String
 
   Dim po As Pointer
 
   Dim po As Pointer
 
   
 
   
  Shell "gcc -o /tmp/libconc.so " & Application.Path &/ "libconc.c -shared -fPIC" Wait
+
  Shell "gcc -o /tmp/libconc.so " & Application.Path &/ "libconc.c -shared -fPIC" Wait
 
 
   
 
   
  po = Alloc("super")
+
  po = Alloc("super")
 
   
 
   
  s = concatena(po)
+
  s = concatena(po)
 
      
 
      
  Print "---> "; s
+
  Print "---> "; s
 
   
 
   
  Free(po)
+
  Free(po)
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 15:48, 16 giu 2024

La funzione della libreria di C

char *strcat(char *dest, const char *src)

concatena due stringhe; in particolare aggiunge la stringa src al termine della stringa dest.


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

Private Extern strcat(dest As Pointer, src As Pointer) As Pointer In "libc:6"

Semplice esempio di uso in Gambas:

' char *strcat(char *dest, const char *src)
Private Extern strcat(dest As Pointer, src As Pointer) As Pointer In "libc:6"


Public Sub Main()

 Dim a, b As Pointer
 Dim s1, s2 As String
 
 s1 = "super"
 a = VarPtr(s1)

 s2 = "pippo"
 b = VarPtr(s2)
 
 strcat(a, b)
  
 Print String@(a)

End


Uso della funzione "strcat()" all'interno di una libreria esterna creata dall'utente

Se il programmatore vuole utilizzare la funzione strcat all'interno di una libreria esterna specifica da lui creata, allora si potrà adottare il seguente codice.

La libreria esterna specifica, il cui file di codice sorgente sarà chiamato ad esempio libconc.c, può essere:

#include <string.h>


   char *r;
   char t[2] = "po";

char * concatena(char * s) {

  r = "pip";

  strcat(s,r);
  strcat(s,t);
  
  return s;

}

e verrà posta ad esempio nella cartella "Dati" dell'applicativo.

Il codice Gambas potrà essere:

Private Extern concatena(sC As Pointer) As String In "/tmp/libconc"


Public Sub Main()

 Dim s As String
 Dim po As Pointer

 Shell "gcc -o /tmp/libconc.so " & Application.Path &/ "libconc.c -shared -fPIC" Wait

 po = Alloc("super")

 s = concatena(po)
   
 Print "---> "; s

 Free(po)

End