Strcat ()

Da Gambas-it.org - Wikipedia.
Versione del 23 lug 2016 alle 10:10 di Vuott (Discussione | contributi) (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...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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