Strcat ()

Da Gambas-it.org - Wikipedia.

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