Differenze tra le versioni di "Strstr ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione '''strstr()''', dichiarata nel file header "''/usr/include/string.h''" come segue: char *strstr (const char *__haystack, const char *__needle) cerca la prima occo...")
 
Riga 32: Riga 32:
 
    
 
    
 
   While IsNull(token) = False
 
   While IsNull(token) = False
     If strstr(token, ndl) <> Null Then Inc i
+
     If <FONT color=#B22222>strstr</font>(token, ndl) <> Null Then Inc i
 
     token = strtok(Null, sp)
 
     token = strtok(Null, sp)
 
   Wend
 
   Wend
Riga 39: Riga 39:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
 +
=Riferimenti=
 +
* https://linux.die.net/man/3/strstr

Versione delle 11:49, 6 gen 2017

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 String

' char *strtok (char *__restrict __s, const char *__restrict __delim)
' Divide S into tokens separated by characters in DELIM.
Private Extern strtok(__s As String, __delim As String) As String


Public Sub Main()
 
 Dim hay, ndl, sp, token As String
 Dim i As Integer
 
  hay = "bere mangiare dormire saltare fare vedere"
  ndl = "are"
  sp = Chr(32)
  
  token = strtok(hay, sp)
  
  While IsNull(token) = False
    If strstr(token, ndl) <> Null Then Inc i
    token = strtok(Null, sp)
  Wend
  
  Print "Parole che contengono i caratteri 'are': "; i
  
End



Riferimenti