Differenze tra le versioni di "Printf ()"
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 6: | Riga 6: | ||
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta. | Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: ''libc.so.6'', nella quale la funzione è contenuta. | ||
− | Vanno considerati almeno due casi: uso della funzione | + | Vanno considerati almeno due casi: uso della funzione "printf()" con le stringhe di caratteri, ed uso con valori numerici. |
+ | ===Uso di "printf()" con le stringhe di caratteri=== | ||
+ | Nel caso si debba utilizzare la funzione "printf()" con le stringhe di caratteri, ai fini della sua dichiarazione con ''Extern'' in Gambas vanno inoltre considerati due sotto-casi: | ||
− | + | '''1''') senza uso del parametro di formattazione. | |
− | + | <BR>In questo caso l'argomento all'interno della funzione ovviamente sarà la sola stringa di caratteri da scrivere in console. | |
− | |||
− | |||
<BR>La dichiarazione, dunque, sarà: | <BR>La dichiarazione, dunque, sarà: | ||
− | Private <FONT color=#B22222>Extern printf</font>( | + | Private <FONT color=#B22222>Extern printf</font>(__format As String) As Integer |
Riga 23: | Riga 23: | ||
− | + | Public Sub Main() | |
Dim testo As String | Dim testo As String | ||
− | + | testo = "Testo qualsiasi" | |
− | + | printf(testo) | |
− | + | printf("\nTesto qualsiasi") | |
− | + | End | |
− | 2) uso del parametro di formattazione. In questo altro caso la funzione ''fprint()'' avrà almeno due argomenti, entrambi di tipo stringa, il primo rappresentato dalla stringa di formattazione, ed il secondo dalla variabile contenente la stringa di caratteri da mostrare in console. | + | '''2''') uso del parametro di formattazione. |
+ | <BR>In questo altro caso la funzione ''fprint()'' avrà almeno due argomenti, entrambi di tipo stringa, il primo rappresentato dalla stringa di formattazione, ed il secondo dalla variabile contenente la stringa di caratteri da mostrare in console. | ||
<BR>La dichiarazione, dunque, potrà essere: | <BR>La dichiarazione, dunque, potrà essere: | ||
Private <FONT color=#B22222>Extern printf</font>(__format as string, param As String) As Integer | Private <FONT color=#B22222>Extern printf</font>(__format as string, param As String) As Integer | ||
Riga 47: | Riga 48: | ||
− | + | Public Sub Main() | |
Dim testo As String | Dim testo As String | ||
− | + | testo = "Testo qualsiasi" | |
<FONT Color=gray>' ''Con variabile di tipo stringa contenente il testo:''</font> | <FONT Color=gray>' ''Con variabile di tipo stringa contenente il testo:''</font> | ||
− | + | printf("%s\n", testo) | |
<FONT Color=gray>' ''Con testo direttamente espresso:''</font> | <FONT Color=gray>' ''Con testo direttamente espresso:''</font> | ||
− | + | printf("%s\n", "Testo qualsiasi") | |
− | + | End | |
− | + | ===Uso di "printf()" con valori numerici=== | |
− | ===Uso di | ||
La funzione avrà due argomenti: uno relativo alla stringa di formattazione, l'altro relativo al valore numerico o alla variabile contenente detto valore. Tale valore, passato con il secondo argomento della funzione, va dichiarato con il tipo dato di appartenenza (Byte, Short, Integer, etc.). | La funzione avrà due argomenti: uno relativo alla stringa di formattazione, l'altro relativo al valore numerico o alla variabile contenente detto valore. Tale valore, passato con il secondo argomento della funzione, va dichiarato con il tipo dato di appartenenza (Byte, Short, Integer, etc.). | ||
− | <BR>Per la scrittura del risultato in console (o Terminale) è sufficiente la sola funzione | + | <BR>Per la scrittura del risultato in console (o Terminale) è sufficiente la sola funzione "printf()". |
La dichiarazione dunque, se ad esempio si vuol ritornare un valore di tipo ''Integer'', sarà: | La dichiarazione dunque, se ad esempio si vuol ritornare un valore di tipo ''Integer'', sarà: | ||
Private <FONT color=#B22222>Extern printf</font>(__format As String, param As <FONT color=#B22222>Integer</font>) As Integer | Private <FONT color=#B22222>Extern printf</font>(__format As String, param As <FONT color=#B22222>Integer</font>) As Integer | ||
− | |||
− | |||
Esempio pratico: | Esempio pratico: | ||
<FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | <FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | ||
Riga 76: | Riga 74: | ||
Private Extern printf(__format As String, param As Integer) As Integer In "libc:6" | Private Extern printf(__format As String, param As Integer) As Integer In "libc:6" | ||
− | + | ||
+ | Public Sub Main() | ||
− | + | printf("%d\n", 4444 + 5555) | |
− | + | End | |
− | |||
Se si vuole utilizzare la formattazione esadecimale: | Se si vuole utilizzare la formattazione esadecimale: | ||
<FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | <FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | ||
Riga 87: | Riga 85: | ||
Private Extern printf($format As String, numero As Integer) As Integer In "libc:6" | Private Extern printf($format As String, numero As Integer) As Integer In "libc:6" | ||
− | + | ||
+ | Public Sub Main() | ||
Dim i As Integer | Dim i As Integer | ||
− | + | i = 1000000 | |
− | + | printf("%04X\n", i) | |
− | + | End | |
− | |||
− | |||
In quest'altro esempio viene utilizzato un ''Float'' con scrittura nello standard ''output'' della parte intera e dei soli primi tre decimali: | In quest'altro esempio viene utilizzato un ''Float'' con scrittura nello standard ''output'' della parte intera e dei soli primi tre decimali: | ||
<FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | <FONT Color=gray>' ''int printf (const char *__restrict __format, ...)'' | ||
Riga 103: | Riga 100: | ||
Private Extern printf(__format As String, param As <FONT color=#B22222>Float</font>) As Integer In "libc:6" | Private Extern printf(__format As String, param As <FONT color=#B22222>Float</font>) As Integer In "libc:6" | ||
− | + | ||
+ | Public Sub Main() | ||
− | + | printf("%.3lf\n", 11 / 2) | |
− | + | End | |
Riga 114: | Riga 112: | ||
Ponendo un numero prima del simbolo della formattazione, il valore verrà stampato in Terminale/console ad n caratteri dalla prima posizione disponibile a sinistra, occupando così n posizioni vuote alla sua sinistra. | Ponendo un numero prima del simbolo della formattazione, il valore verrà stampato in Terminale/console ad n caratteri dalla prima posizione disponibile a sinistra, occupando così n posizioni vuote alla sua sinistra. | ||
<BR>Ponendo un segno meno dinnanzi a detto numero, il valore verrà stampato ad n caratteri dalla prima posizione disponibile a destra, occupando così n posizioni vuote alla sua destra. | <BR>Ponendo un segno meno dinnanzi a detto numero, il valore verrà stampato ad n caratteri dalla prima posizione disponibile a destra, occupando così n posizioni vuote alla sua destra. | ||
− | |||
Mostriamo un esempio: | Mostriamo un esempio: | ||
Riga 122: | Riga 119: | ||
− | + | Public Sub Main() | |
printf("%-8s%1s%6d%7d%7d\n", "Primo", ":", 1000, 10, 1) | printf("%-8s%1s%6d%7d%7d\n", "Primo", ":", 1000, 10, 1) | ||
Riga 128: | Riga 125: | ||
printf("%-8s%1s%6d%7d%7d", "Terzo", ":", 300, 3, 30) | printf("%-8s%1s%6d%7d%7d", "Terzo", ":", 300, 3, 30) | ||
− | + | End |
Versione attuale delle 14:55, 15 giu 2024
La funzione della libreria di C
int printf (const char *__restrict __format, ...)
scrive su stdout gli argomenti stringa passati.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta.
Vanno considerati almeno due casi: uso della funzione "printf()" con le stringhe di caratteri, ed uso con valori numerici.
Uso di "printf()" con le stringhe di caratteri
Nel caso si debba utilizzare la funzione "printf()" con le stringhe di caratteri, ai fini della sua dichiarazione con Extern in Gambas vanno inoltre considerati due sotto-casi:
1) senza uso del parametro di formattazione.
In questo caso l'argomento all'interno della funzione ovviamente sarà la sola stringa di caratteri da scrivere in console.
La dichiarazione, dunque, sarà:
Private Extern printf(__format As String) As Integer
Un esempio pratico:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf(__format As String) As Integer In "libc:6" Public Sub Main() Dim testo As String testo = "Testo qualsiasi" printf(testo) printf("\nTesto qualsiasi") End
2) uso del parametro di formattazione.
In questo altro caso la funzione fprint() avrà almeno due argomenti, entrambi di tipo stringa, il primo rappresentato dalla stringa di formattazione, ed il secondo dalla variabile contenente la stringa di caratteri da mostrare in console.
La dichiarazione, dunque, potrà essere:
Private Extern printf(__format as string, param As String) As Integer
Un esempio pratico:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf(__format As String, param As String) As Integer In "libc:6" Public Sub Main() Dim testo As String testo = "Testo qualsiasi" ' Con variabile di tipo stringa contenente il testo: printf("%s\n", testo) ' Con testo direttamente espresso: printf("%s\n", "Testo qualsiasi") End
Uso di "printf()" con valori numerici
La funzione avrà due argomenti: uno relativo alla stringa di formattazione, l'altro relativo al valore numerico o alla variabile contenente detto valore. Tale valore, passato con il secondo argomento della funzione, va dichiarato con il tipo dato di appartenenza (Byte, Short, Integer, etc.).
Per la scrittura del risultato in console (o Terminale) è sufficiente la sola funzione "printf()".
La dichiarazione dunque, se ad esempio si vuol ritornare un valore di tipo Integer, sarà:
Private Extern printf(__format As String, param As Integer) As Integer
Esempio pratico:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf(__format As String, param As Integer) As Integer In "libc:6" Public Sub Main() printf("%d\n", 4444 + 5555) End
Se si vuole utilizzare la formattazione esadecimale:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf($format As String, numero As Integer) As Integer In "libc:6" Public Sub Main() Dim i As Integer i = 1000000 printf("%04X\n", i) End
In quest'altro esempio viene utilizzato un Float con scrittura nello standard output della parte intera e dei soli primi tre decimali:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf(__format As String, param As Float) As Integer In "libc:6" Public Sub Main() printf("%.3lf\n", 11 / 2) End
Formattazione con campo riservato di caratteri
Ponendo un numero prima del simbolo della formattazione, il valore verrà stampato in Terminale/console ad n caratteri dalla prima posizione disponibile a sinistra, occupando così n posizioni vuote alla sua sinistra.
Ponendo un segno meno dinnanzi a detto numero, il valore verrà stampato ad n caratteri dalla prima posizione disponibile a destra, occupando così n posizioni vuote alla sua destra.
Mostriamo un esempio:
' int printf (const char *__restrict __format, ...) ' Write formatted output to stdout. Private Extern printf(__format As String, testo As String, duepunti As String, num1 As Integer, num2 As Integer, num3 As Integer) As Integer In "libc:6" Public Sub Main() printf("%-8s%1s%6d%7d%7d\n", "Primo", ":", 1000, 10, 1) printf("%-8s%1s%6d%7d%7d\n", "Secondo", ":", 20, 2000, 200) printf("%-8s%1s%6d%7d%7d", "Terzo", ":", 300, 3, 30) End