Differenze tra le versioni di "Fputs ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione esterna '''fputs()''', dichiarata nel file header "''/usr/include/stdio.h''" come segue: int fputs (const char *__restrict __s, FILE *__restrict __stream) scrive...")
(Nessuna differenza)

Versione delle 20:26, 4 feb 2017

La funzione esterna fputs(), dichiarata nel file header "/usr/include/stdio.h" come segue:

int fputs (const char *__restrict __s, FILE *__restrict __stream)

scrive una stringa nello stream.
Poiché il secondo parametro della funzion esterna fputs( ) è di tipo FILE, però diverso dal tipo File nativo di Gambas, esso andrà gestito con una variabile di tipo Puntatore restituita da un'altra funzione esterna, ossia dalla funzione esterna fopen( ).

Volendola utilizzare direttamente in Gambas, bisognerà dichiararla con Extern, nonché dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:

Private Extern fputs(__s As String, __stream As Pointer) As Integer In "libc:6"


Mostriamo un esempio pratico, nel quale si scriverà un carattere in un file che sarà aperto in scrittura con la predetta funzione esterna fopen( ).

Library "libc:6"

' FILE *fopen (const char *__restrict __filename, const char *__restrict __modes)
' Open a file and create a new stream for it.
Private Extern fopen(__filename As String, __modes As String) As Pointer

' int fputs (const char *__restrict __s, FILE *__restrict __stream)
' Write a string to STREAM.
Private Extern fputs(__s As String, __stream As Pointer) As Integer

' int fclose (FILE *__stream)
' Close STREAM.
Private Extern fclose(__stream As Pointer) As Integer


Public Sub Main()
 
 Dim s As String
 Dim p As Pointer
 
 
  s = "testo qualsiasi"
 
  p = fopen("/tmp/prova", "w")
   
  fputs(s, p)
   
  fclose(p)
  
End



Riferimenti