Funkcija strncat C programavimo kalboje

Skaitymo trukmė: 3 minutės

Funkcijos C programavimo kalboje sprendžia problemas. Konkreti strncat funkcija sprendžia problemą susijusią su simbolių masyvų sujungimu. Šiame straipsnyje pasižiūrėsime, ką tai iš tiesų reiškia. Jūsų patogumui, šis straipsnis yra padalintas į tris dalis.

Funkcijos strncat struktūra:

Funkcijos prototipas: char *strncat(char *dest, const char *src, size_t n);

Grąžinama reikšmė:
pointeris su pirmo parametro adresu (char *dest).

Parametrų sąrašas:
(char *dest) - simbolių masyvas, į kurį yra kopijuojami simboliai.
(char *src) - simbolių masyvas, iš kurio yra kopijuojami simboliai.
(size_t n) - kopijuotinų simbolių skaičius.

Antraščių failas: <string.h>.

1. Funkcija strncat. Kas tai?

Funkcija strncat sujungia du simbolių masyvus (angl. character array) ar simbolių masyvą ir stringinį literalą (angl. string literal). Ar tiksliau tariant, šioje funkcijoje yra kopijuojamos vieno simbolių masyvo ar stringinio literalo reikšmės į kitą simbolių masyvą. Verta prisiminti, jog pirmasis simbolių masyvas, kuris yra perduodamas šiai funkcijai, turi turėti pakankamai rezervuotos atminties, jog sutalpintų norimą kiekį simbolių iš antro perduoto simbolių masyvo ar stringinio literalo. Žemiau galite matyti, kaip galima naudoti strncat funkciją.

Pavyzdys 1: funkcijos strncat naudojimas C programavimo kalboje.

# include <stdio.h>
# include <string.h>
int main ()
{
    
char dest[20] = "Tobulumui r" ;
    
char dest2[20] = "Tobulumui r" ;
    
char *src = "ibu nera" ;
    
int kiekis = 3 ;
    
strncat (dest, src, kiekis);
kiekis = 8 ;
    
strncat (dest2, src, kiekis);
    
printf ( "Kai kiekis yra 3, rezultatas yra : %s\n" , dest);
    
printf ( "Kai kiekis yra 8, rezultatas yra : %s\n" , dest2);
    
return 0;
}
					

Galimas rezultatas:

Kai kiekis yra 3, rezultatas yra : Tobulumui ribu
Kai kiekis yra 8, rezultatas yra : Tobulumui ribu nera

Iš C kodo gabalėlio viršuje (pavyzdys 1) mes galime išvesti keletą išvadų apie strncat funkciją. Pirma, strncat funkcija keičia tik pirmą perduotą simbolių masyvą (dest). Antra, simbolių skaičius, kuris yra kopijuojamos iš antro masyvo į pirmą priklauso nuo trečiojo argumento (kiekis). Kai mes perdavėme kintamąjį kiekis su reikšme 3 (9-ta eilutė), tada mes nukopijavome ibu. Kai mes perdavėme tą patį kintamąjį su reikšme 8 (11-ta eilutė), tada mes nukopijavome ibu nera.

Turbūt jau spėjote suprasti, jog ši funkcija yra vertinga daugelyje situacijų. Visgi, ši funkcija nėra tobula ir, kaip dauguma funkcijų, turi keletą trūkumų. Pirma, strncat funkcijoje kyla problemų, jeigu pirmas perduotas masyvas neturi pakankamai rezervuotos atminties. Antras trūkumas išryškėja, jeigu pirmas ir antras perduoti masyvai dalinasi rezervuota vieta kompiuterio atmintyje.

2. Perrašyta ir patobulinta strncat funkcija.

Norėdami sėkmingai perrašyti strncat funkciją, turime savoje šios funkcijos versijoje atlikti žemiau išdėstytus veiksmus.

Pavyzdys 2: C kalba perrašyta strncat funkcija

# include <stdio.h>
# include <string.h>
char *nauja_strncat ( char *dest, const char *src, size_t n)
{
    
if (dest == 0 || src == 0)
    
{
        
return 0;
    
}
    
size_t i = strlen (dest);
    
int a = 0;
    
size_t b = i;
    
while (a < n && src[a] != '\0' )
    
{
        
dest[i++] = src[a++];
    
}
    
dest[i] = '\0' ;
    
return (dest);
}
					
int main ()
{
    
char dest[20] = "Tobulumui r" ;
    
char dest2[20] = "Tobulumui r" ;
    
char *src = "ibu nera" ;
    
int kiekis = 3 ;
    
nauja_strncat (dest, src, kiekis);
kiekis = 8 ;
    
nauja_strncat (dest2, src, kiekis);
    
printf ( "Kai kiekis yra 3, rezultatas yra : %s\n" , dest);
    
printf ( "Kai kiekis yra 8, rezultatas yra : %s\n" , dest2);
    
return 0;
}
					

Galimas rezultatas:

Kai kiekis yra 3, rezultatas yra : Tobulumui ribu
Kai kiekis yra 8, rezultatas yra : Tobulumui ribu nera

Su nauja_strncat funkcija jūs galite sėkmingai sujungti du simbolių masyvus! Tik pasirūpinkite, jog šiai funkcijai perduodate tinkamas ir validžias kintamųjų reikšmes.

3. Žinių patikrinimas

Funkcija strncat C programavimo kalboje

1Kokį duomenų tipą grąžina strncat funkcija?

2Kas sukelia neapibrėžta elgesį strncat funkcijoje?

3Kuo yra naudinga strncat funkcija?

Žinių patikrinimas baigtas!

Sveikiname!

Pasidalinkite savo geru rezultatu!