C/strncpy
< C
DeklaracjaEdytuj
- char *strncpy (char* strTo, const char* strFrom, size_t size);
Plik nagłówkowyEdytuj
ArgumentyEdytuj
- strTo
- wskaźnik do docelowej tablicy znaków.
- strFrom
- wskaźnik do źródłowej tablicy znaków.
- size
- liczba znakow do skopiowania.
OpisEdytuj
- Funkcja kopiuje co najwyżej size znaków z tekstu w tablicy strFrom do tablicy strTo. Funkcja kopiuje znak po znaku od początku, aż skopiuje size znaków lub napotka znak '\0', wtedy za resztę znaków do skopiowania wstawia '\0'.
Wartość zwracanaEdytuj
- Funkcja zwraca wskaźnik na strTo.
NiebezpieczeństwaEdytuj
- Tablica strTo powinna być większa od wartości size, ponieważ, w przeciwnym wypadku, może dojść do przepełnienia bufora.[1]
- przekazywanie nielegalnych wskaźników dla argumentów źródłowego lub docelowego[2]
PrzykładEdytuj
#include <stdio.h>
#include <string.h>
int main()
{
char strTo[30];
const char *strFrom = "Ala ma kota"; // tekst krótszy niż 30 znaków
strncpy (strTo, strFrom, 12); // kopiuje 12 znakow (11 + znak \0)
puts(strTo);
return 0;
}
Uwaga: strncpy nie dostawia znaku '\0', dlatego: