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>" | |
+ | |||
− | + | 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" | |
− | + | b = VarPtr(s2) | |
− | |||
− | |||
− | |||
− | |||
− | + | <FONT color=#B22222>strcat</font>(a, b) | |
− | + | Print String@(a) | |
− | + | End | |
− | ===Uso della funzione | + | ===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" | |
− | + | 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 | |
− | |||
− | + | po = Alloc("super") | |
− | + | s = concatena(po) | |
− | + | Print "---> "; s | |
− | + | Free(po) | |
− | + | End |
Versione attuale delle 14: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