Differenze tra le versioni di "Scanf()"
Riga 1: | Riga 1: | ||
La funzione della libreria di C | La funzione della libreria di C | ||
− | ''int scanf(char *format, args ...)'' | + | ''int scanf(const char *format, args ...)'' |
− | legge l'input da ''stdin''. Essa consente di inserire dati nello standard | + | legge l'input da ''stdin''. Essa consente di inserire dati nello standard input. Il dato inserito e contenuto nel/nei parametro/i ''args'' 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 <FONT color=#B22222>Extern scanf</font>(format$ As String, argsP As Pointer) As Integer In "<FONT color=#B22222>libc:6</font>" | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | 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 | + | Private <FONT color=#B22222>Extern scanf</font>(format$ As String, argsP As Pointer) As Integer In "<FONT color=#B22222>libc:6</font>" |
− | + | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
− | Dim | + | 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''' | '''End''' | ||
− | |||
− | |||
− | |||
− | + | In questo altro esempio si potranno immettere dallo ''standard Input'' due dati separati da uno spazio. | |
− | # | + | Private <FONT color=#B22222>Extern scanf</font>(format$ As String, args1_P As Pointer, args2_P As Pointer) As Integer In "<FONT color=#B22222>libc:6</font>" |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | '''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''' | '''End''' |
Versione delle 08:19, 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/nei parametro/i args 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