Strncpy (): differenze tra le versioni

Da Gambas-it.org - Wikipedia.
Vai alla navigazione Vai alla ricerca
(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:




<FONT Color=red size=4><B>Pagina in costruzione !</b></font>
=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