Функция strcpy и strncpy - копиране на символи от стринг

Чрез двете библиотечни функции strcpy и strncpy се осъществява копиране на знаци от стринг. Копиране на съдържанието на целия стринг: функция strcpy (niz1, niz2) - копира всички знаци от niz2 в nizl. Ако дължината на niz2 е по-голяма от декларирана дължина на nizl са възможни трудно откриващи се грешки, включително и „забиване” на програмата. Копиране на първите N знака от стринг: функция strncpy (niz1, niz2, N) - копира първите N знака на niz2 в niz1. В края на niz1 не се добавя автоматично \0. Ако N по-голямо от дължината на niz2, то всички знаци на niz2 (включително и завършващия знак "\0') се копират в niz1.

strcpy и strncpy - копиране на знаци от стринг

Да разгледаме следната задача: От клавиатурата се въвежда непрекъсната последователност от символи. Броят символи е в интервала [10..50]. Програмата да изведе два нови редици от същите символи: а) първата редица е палиндром, т.е. да се използват всички вече въведени символи, и се добавят вдясно но вече подредени в обратна последователност. Последният въведен символ става център на новата последователност. б) да се добавят след последния въведен символ всички символи в същата последователност. Пример: 12345 Изход: 123454321 1234512345

Следващата програма съдържа пример за копиране на знаци от стринг чрез strcpy и strncpy:
#include <iostream>
using namespace std;

int const br=155;//dopustim broj znaci za wywevdane
int main()
{  int i;
     char niz1[br], niz2[br],niz3[br],niz4[br],ose;
     cout<<"Da se systawi programa, chrez koqto se wywevda neprekysnata redica\n";
     cout<<"ot znaci - bukwi i/ili cifri. Programata da izwede 2 nowi niza\n";
     cout<<"pyrwiqt e palindrom - ogledalno simetrichen sprqmo sredata si;\n";
     cout<<"wtoriqt e simetrichen sprqmo sredata si, t.e. se powtarq.\n";
     cout<<"Primer: 12345 Izhod 123454321 1234512345\n";
 
    do {
     cout<<"Wywedete string  ";cin>>niz1;
     strcpy ( niz3,niz1);//kopira niz1 w niz3
     strcpy ( niz4,niz1);//kopira niz1 w niz4
     i= strlen (niz1);//opredelq dylvinata na niza
     strncpy ( niz2,niz1,i-1); //  strncpy kopira chast ot sydyrvanieto na string 1 w string 2
     niz2[i-1]='\0';//postawq kraj na nowiq string 
     strrev (niz2);//obrysha ogledalno naredbata na znaci w string 
     cout<<"Wywedohte: "<<niz1<<endl;
     cout<<"Ogledalno obyrnata redica bez posledniq znak: "<<niz2<<endl;
     strcat (niz1,niz2);
     cout<<"Formiraniqt palindrom e: "<<niz1<<endl;
     strcat (niz4,niz3);
     cout<<"Formiraniqt simetrichen string e: "<<niz4<<endl;
     cout<<"She wywevdate li drugi danni: ";cin>>ose;
     } while (ose=='y');
   system("pause");
   return 0;
}//kraj na programa strcpy i strncpy 

Обяснени и решени задачи с подобни алгоритми, функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени задачи, примери.

Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: