Differenze tra le versioni di "Scanf()"

Da Gambas-it.org - Wikipedia.
Riga 5: Riga 5:
  
 
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 scanf</font>(format$ As String, argsP As Pointer) As Integer In "<FONT color=#B22222>libc:6</font>"
+
  Private <FONT color=#B22222>Extern scanf</font>(format$ As String, argsP As Pointer, ......) As Integer In "<FONT color=#B22222>libc:6</font>"
  
  

Versione delle 07:27, 2 set 2015

La funzione della libreria di C

int scanf(const char *format, args ...)

legge l'input da stdin. Essa consente di inserire dati nello standard input. Il dato inserito e contenuto nel parametro args, o in ciascun parametro (se previsti più di uno), viene restituito formattato in base alla stringa di formattazione format. Per ottenere dunque più dati, distinti fra loro, formattati, bisognerà prevedere un numero di argomenti args pari al numeri dei dati predetti.


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

Private Extern scanf(format$ As String, argsP As Pointer, ......) As Integer In "libc:6"


In questo esempio si potrà immettere dallo standard Input un solo dato, e più in particolare non è possibile inserire due o più caratteri separati da due o più spazi.

Private Extern scanf(format$ As String, argsP As Pointer) As Integer In "libc:6"
 

Public Sub Main()

 Dim p As Pointer

  p = Alloc(8)

  scanf("%s", p)
  If IsNull(p) Then Error.Raise("Errore di lettura dell'input !")

  Print String@(p)

  Free(p)

End


In questo altro esempio si potranno immettere dallo standard Input due dati separati da uno spazio.

Private Extern scanf(format$ As String, args1_P As Pointer, args2_P As Pointer) As Integer In "libc:6"
 

Public Sub Main()

 Dim p1, p2 As Pointer

  p1 = Alloc(8)

  p2 = Alloc(8)

  scanf("%s %s", p1, p2)
  If IsNull(p1) Or IsNull(p2) Then Error.Raise("Errore di lettura dell'input !")

  Print String@(p1);; String@(p2)

  Free(p1)
  Free(p2)

End