C/strncpy
< C
Deklaracja
edytuj- char *strncpy (char* strTo, const char* strFrom, size_t size);
Plik nagłówkowy
edytujArgumenty
edytuj- strTo
- wskaźnik do docelowej tablicy znaków.
- strFrom
- wskaźnik do źródłowej tablicy znaków.
- size
- liczba znakow do skopiowania.
Opis
edytuj- 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ść zwracana
edytuj- Funkcja zwraca wskaźnik na strTo.
Niebezpieczeństwa
edytuj- 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ład
edytuj#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: