Strncpy (): differenze tra le versioni
(Creata pagina con " Library "libc:6" <FONT Color=gray>' ''char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n)'' ' ''Copy no more than N characters of SRC to...") |
Nessun oggetto della modifica |
||
| Riga 1: | Riga 1: | ||
La funzione '''''strncpy( )''''', dichiarata nel file header di sistema "''/usr/include/string.h''" | |||
char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n) | |||
copia un numero ''__n'' di byte (cominciando comunque dal primo byte) dell'area di memoria puntata dal puntatore ''__src''' nell'area di memoria puntata dal Puntatore ''__dest''. | |||
Se la funzione ''strncpy( )' incontra in ''__src'' un carattere nullo (0x00, ossia in Gambas &h00), la funzione aggiungerà a ''_dest'' un numero di caratteri nulli fino fino a che ''n'' caratteri non sono stati scritti. | |||
La funzione ''strncpy( )'' può risultare non molto utile per la copia di una stringa in un'altra stringa, se l'area di memoria puntata dal Puntatore ''__src'' è più breve di n caratteri, la stringa di destinazione verrà troncata. | |||
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 strncpy</font>(__dest As Pointer, __src As Pointer, __n As Long) In "<FONT color=#B22222>libc:6</font>" | |||
Mostriamo un semplice esempio: | |||
Library "libc:6" | Library "libc:6" | ||
| Riga 19: | Riga 30: | ||
<FONT Color=#B22222>strncpy</font>(p2, p1, 4) | <FONT Color=#B22222>strncpy</font>(p2, p1, 4) | ||
Print String@(p2) | Print Left(String@(p2), 4) | ||
Free(p2) | Free(p2) | ||
| Riga 29: | Riga 40: | ||
=Riferimenti= | |||
* http://linux.die.net/man/3/strncpy | |||
* https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html | |||
* http://digilander.libero.it/uzappi/C/librerie/funzioni/strcpy.html | |||
* http://stackoverflow.com/questions/1453876/why-does-strncpy-not-null-terminate | |||
* http://www.techonthenet.com/c_language/standard_library_functions/string_h/strncpy.php | |||
Versione delle 07:26, 21 lug 2016
La funzione strncpy( ), dichiarata nel file header di sistema "/usr/include/string.h"
char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n)
copia un numero __n di byte (cominciando comunque dal primo byte) dell'area di memoria puntata dal puntatore __src' nell'area di memoria puntata dal Puntatore __dest.
Se la funzione strncpy( )' incontra in __src un carattere nullo (0x00, ossia in Gambas &h00), la funzione aggiungerà a _dest un numero di caratteri nulli fino fino a che n caratteri non sono stati scritti.
La funzione strncpy( ) può risultare non molto utile per la copia di una stringa in un'altra stringa, se l'area di memoria puntata dal Puntatore __src è più breve di n caratteri, la stringa di destinazione verrà troncata.
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 strncpy(__dest As Pointer, __src As Pointer, __n As Long) In "libc:6"
Mostriamo un semplice esempio:
Library "libc:6"
' char *strncpy (char *__restrict __dest, const char *__restrict __src, size_t __n)
' Copy no more than N characters of SRC to DEST.
Private Extern strncpy(__dest As Pointer, __src As Pointer, __n As Long)
Public Sub Main()
Dim p1, p2 As Pointer
p1 = Alloc("abcdefghil")
p2 = Alloc(4)
' Copia nell'area di memoria, puntata dal Puntatore del 1° argomento, i soli primi 4 byte dell'area di memoria puntata dal Puntatore del 2° argomento.
strncpy(p2, p1, 4)
Print Left(String@(p2), 4)
Free(p2)
Free(p1)
End
Riferimenti
- http://linux.die.net/man/3/strncpy
- https://www.gnu.org/software/libc/manual/html_node/Truncating-Strings.html
- http://digilander.libero.it/uzappi/C/librerie/funzioni/strcpy.html
- http://stackoverflow.com/questions/1453876/why-does-strncpy-not-null-terminate
- http://www.techonthenet.com/c_language/standard_library_functions/string_h/strncpy.php