Как да използвате функцията strncpy() в C++

Kak Da Izpolzvate Funkciata Strncpy V C



В C++ има много функции за копиране на низове или символи от едно място на друго, които са strcpy, strncpy и memcpy. Те се различават един от друг според техните функционалности. Този урок ще обсъди strncpy() функция в C++.

Какво представлява функцията strncpy() в C++

Функцията strncpy() е вградена C++ функция, която се използва за копиране на фиксирано количество знаци от един низ в друг. Функцията се нуждае от три параметъра: целевия низ, който ще съдържа знаците, изходният низ, който ще предостави знаците, и броя знаци за копиране. Ако изходният низ е по-малък от указания брой знаци, целевият низ ще бъде допълнен с нулеви знаци до оставащата дължина.

Прототипът на функция strncpy() е даден по-долу.







въглен * strncpy ( въглен * ръце конст въглен * src, размер_т броя ) ;

Какви са параметрите на C++ strncpy()

Всички параметри на strncpy() функция са обяснени по-долу.



  • ръка: Указател към целевия масив, към който е било съдържанието
  • src: Указател към изходния масив, от който е съдържанието
  • броя: Най-големият брой знаци, които могат да бъдат копирани от източника към местоназначението.

Как работи функцията strncpy() в C++

strncpy() функцията приема три аргумента: dest, src, и броя . Той проверява дали src низът е с нулев край и ако да, той копира указания брой знаци от src низ към започнете низ. Ако броят е по-малък от дължината на src низ, към който са прехвърлени първите символи за броене започнете низ и не завършват с нула. Ако броят надвишава дължината на src , всички знаци от src се копират в започнете и допълнителни завършващи нулеви знаци са включени, докато не бъдат записани всички знаци за броене.



Даденият пример илюстрира работата на C++ strncpy() функция.





#include
#include
използвайки пространство от имена std ;
вътр основен ( )
{
въглен src_str [ ] = „Пиша код за strncpy“ ;
въглен dest_str [ 60 ] ;
strncpy ( dest_str, src_str, strlen ( src_str ) ) ;
cout << dest_str << ' ' ;
връщане 0 ;
}

В тази програма използвахме <низ.h> заглавен файл, защото включва strncpy() функция. Дефинирахме два низа, единият е src_str а другото е dest_str. strncpy() функция, която взема данни от src_str низ и го копира в dest_str . Тук strlen(src_str) се използва за преброяване на общия брой знаци от src_str низ .

The изход на програмата може да се покаже по-долу.



Какви са проблемите с използването на strncpy() в C++

  • Ако няма нулев знак в целевия масив или низът не е завършен с нула, нашата програма или код може да срещне проблеми рано или късно. Низ с краен ненулев код в C++ се превърна в рисков код, който може да се счупи във всеки момент по време на изпълнение на програмата. Това може да доведе до грешка в сегментирането в програмата. Като резултат, strncpy() не гарантира, че целевият низ винаги е завършен с нула, което го прави рисков код за програмата, която пишем.
  • Тази функция не успява да провери за препълване, така че ако се опитаме да копираме изходния низ към дестинация, която е по-малка по размер от източника, получаваме грешка и недефинирано поведение.

Заключение

За да копираме данни от един низ в друг, използваме strncpy() в C++, което е вградена функция в <низ.h> заглавен файл. В тази статия обсъдихме синтаксиса и работата на C++ strncpy функция с пример. Също така подчертахме някои проблеми, поради които strncpy може да направи нашия код рискован.