Differenze tra le versioni di "Scanf()"
Riga 1: | Riga 1: | ||
La funzione della libreria di C | La funzione della libreria di C | ||
''int scanf(const char *format, args ...)'' | ''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 | + | 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. |
Versione delle 07:22, 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