Strstr (): differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 26: | Riga 26: | ||
Dim i As Integer | Dim i As Integer | ||
hay = | hay = "bere mangiare dormire saltare fare vedere" | ||
ndl = "are" | ndl = "are" | ||
sp = Chr(32) | sp = Chr(32) | ||
token = strtok(hay, sp | token = strtok(VarPtr(hay), sp) | ||
While token > 0 | While token > 0 | ||
Versione delle 12:09, 30 mar 2018
La funzione strstr(), dichiarata nel file header "/usr/include/string.h" come segue:
char *strstr (const char *__haystack, const char *__needle)
cerca la prima occorrenza dela sottostringa __needle all'interno della stringa __haystack. Il carattere di fine stringa '\0' non viene preso in considerazione.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern strstr(__haystack As String, __needle As String) As String In "libc:6"
Mostriamo un esempio, nel quale data una stringa contenente alcune parole, si dovrà verificare quante parole terminano con i caratteri "are". Per ottenere il risultato, ci serviremo anche della funzione strtok( ):
Library "libc:6"
' char *strstr (const char *__haystack, const char *__needle)
' Find the first occurrence of NEEDLE in HAYSTACK.
Private Extern strstr(__haystack As String, __needle As String) As Pointer
' char *strtok (char *__restrict __s, const char *__restrict __delim)
' Divide S into tokens separated by characters in DELIM.
Private Extern strtok(__s As Pointer, __delim As String) As Pointer
Public Sub Main()
Dim ndl, sp As String
Dim hay, token As Pointer
Dim i As Integer
hay = "bere mangiare dormire saltare fare vedere"
ndl = "are"
sp = Chr(32)
token = strtok(VarPtr(hay), sp)
While token > 0
If strstr(String@(token), ndl) <> Null Then Inc i
token = strtok(0, sp)
Wend
Print "Parole che contengono il tema 'are': "; i
End