Differenze tra le versioni di "Memset ()"
Da Gambas-it.org - Wikipedia.
Riga 5: | Riga 5: | ||
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: | ||
− | Private <FONT color=#B22222>Extern memset</font>( | + | Private <FONT color=#B22222>Extern memset</font>(buffer As [Pointer], c As Byte, count As Long) In "<FONT color=#B22222>libc:6</font>" |
+ | Il primo valore potrà essere a seconda delle circostanze semplicemente un Puntatore, oppure un Vettore, o una Stringa. | ||
− | Semplice esempio uso in Gambas: | + | Semplice esempio di uso in Gambas, nel quale si azzereranno i valori di un vbettore di tipo ''Integer[ ]'': |
− | <FONT color=Gray>' ''void * memset( void *buffer, int c, size_t count )''</font> | + | <FONT color=Gray>' ''void * memset(void *buffer, int c, size_t count)'' |
− | + | ' ''Copies the character c (an unsigned char) to the first count characters of the string pointed to, by the argument buffer.''</font> | |
+ | Private <FONT color=#B22222>Extern memset</font>(dest As integer[], c As Integer, count As Long) In "<FONT color=#B22222>libc:6</font>" | ||
− | '''Public''' Sub | + | '''Public''' Sub Main() |
Dim cc As Integer[] = [1, 2, 3, 4, 5] | Dim cc As Integer[] = [1, 2, 3, 4, 5] | ||
Riga 21: | Riga 23: | ||
<FONT color=gray>' ''Se il vettore è di tipo "Integer", allora il valore del 3° parametro della funzione'' | <FONT color=gray>' ''Se il vettore è di tipo "Integer", allora il valore del 3° parametro della funzione'' | ||
' ''va moltiplicato per 4, poiché il valore di tipo "Intero" occupa nella memoria 4 byte:''</font> | ' ''va moltiplicato per 4, poiché il valore di tipo "Intero" occupa nella memoria 4 byte:''</font> | ||
− | + | <FONT color=#B22222>memset</font>(cc, 0, cc.Count * SizeOf(gb.Integer)) | |
For j = 0 To cc.Max | For j = 0 To cc.Max | ||
Print cc[j] | Print cc[j] | ||
Next | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | In quest'altro esempio si modificheranno i primi 4 caratteri di una stringa: | ||
+ | <FONT color=Gray>' ''void * memset(void *buffer, int c, size_t count)'' | ||
+ | ' ''Copies the character c (an unsigned char) to the first count characters of the string pointed to, by the argument buffer.''</font> | ||
+ | Private <FONT color=#B22222>Extern memset</font>(buffer As String, c As Byte, count As Long) In "<FONT color=#B22222>libc:6</font>" | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Dim s As String | ||
+ | |||
+ | s = "Testo qualsiasi" | ||
+ | |||
+ | <FONT color=#B22222>memset</font>(s, Asc("a"), 4) | ||
+ | |||
+ | Print s | ||
'''End''' | '''End''' |
Versione delle 12:15, 6 set 2015
La funzione della libreria di C
void * memset( void *buffer, int c, size_t count )
imposta tutti i valori di un vettore (array) a zero.
Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:
Private Extern memset(buffer As [Pointer], c As Byte, count As Long) In "libc:6"
Il primo valore potrà essere a seconda delle circostanze semplicemente un Puntatore, oppure un Vettore, o una Stringa.
Semplice esempio di uso in Gambas, nel quale si azzereranno i valori di un vbettore di tipo Integer[ ]:
' void * memset(void *buffer, int c, size_t count) ' Copies the character c (an unsigned char) to the first count characters of the string pointed to, by the argument buffer. Private Extern memset(dest As integer[], c As Integer, count As Long) In "libc:6" Public Sub Main() Dim cc As Integer[] = [1, 2, 3, 4, 5] Dim j As Byte ' Se il vettore è di tipo "Integer", allora il valore del 3° parametro della funzione ' va moltiplicato per 4, poiché il valore di tipo "Intero" occupa nella memoria 4 byte: memset(cc, 0, cc.Count * SizeOf(gb.Integer)) For j = 0 To cc.Max Print cc[j] Next End
In quest'altro esempio si modificheranno i primi 4 caratteri di una stringa:
' void * memset(void *buffer, int c, size_t count) ' Copies the character c (an unsigned char) to the first count characters of the string pointed to, by the argument buffer. Private Extern memset(buffer As String, c As Byte, count As Long) In "libc:6" Public Sub Main() Dim s As String s = "Testo qualsiasi" memset(s, Asc("a"), 4) Print s End