Gabungan Rentetan C

C String Concatenation



Gabungan adalah proses untuk menambahkan rentetan kedua hingga akhir rentetan pertama. Dalam artikel ini kita akan membincangkan bagaimana menggabungkan rentetan dalam C dengan menggunakan kaedah yang berbeza.

Fungsi perpustakaan C standard yang digunakan untuk menggabungkan tali adalah strcat ().







Prototaip Fungsi:

$char * strcat (str1,str2);

di mana str1 adalah rentetan pertama dan str2 adalah rentetan kedua. Nilai kembali fungsi adalah penunjuk ke rentetan gabungan.



Sekarang, dengan bantuan contoh kita akan melihat bagaimana penggabungan dilakukan.



Contoh1:

$ strcat (str1,str2);
di mana str1 adalah Bella
str2 ialah Whitmann

setelah gabungan tali,tali pertama akan

str1 Bella Whitmann
str2 Whitmann

sementara string2 akan tetap sama.





Contoh2:

$ strcat (str2,str1);
di mana str1 adalah Bella
str2 ialah Whitmann

setelah gabungan tali,rentetan berpasangan akan

str1 Bella
str2 Bella Whitmann

sementara string1 akan tetap sama.

Pengisytiharan dalam Fail Header C

Fungsi pengendalian tali dinyatakan di bawah headerfile. Sekiranya seseorang ingin menggunakan fungsi standard untuk menggabungkan, fail tajuk ini perlu disertakan.



Oleh itu, kita dapat mencapai gabungan tali dengan dua cara. Salah satunya adalah dengan menggunakan fungsi perpustakaan Standard C dan yang lain adalah tanpa menggunakan fungsi perpustakaan C. Berikut adalah contoh program untuk menunjukkan kedua-dua cara. Gabungan tali tanpa menggunakan fungsi perpustakaan C dapat dilaksanakan dengan pelbagai cara.

Kami akan membincangkannya juga dalam beberapa bahagian yang akan datang dengan contoh.

Gabungan Dua Rentetan dengan Menggunakan Fungsi Perpustakaan C

#sertakan

#sertakan

#tentukan BUF_SIZE 256
intutama()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Dua penyangga rentetan * /

printf ('Masukkan rentetan pertama n'); ] / * Cetak mesej ke konsol agar pengguna memasukkan rentetan pertama * /
fgets (S1,BUF_SIZE,stdin); / * simpan rentetan input pengguna dalam penyangga S1 * /
S1[ strlen (S1)-1] = ' 0';

printf ('Masukkan rentetan kedua n');/ * Cetak mesej kepada pengguna untuk memasukkan rentetan ke-2 * /
fgets (S2,BUF_SIZE,stdin); / * simpan rentetan input pengguna dalam penyangga S2 * /
S2[ strlen (S2)-1] = ' 0';

strcat (S1,S2); / * Panggil fungsi standard dengan rentetan S1 dan S2 * /

printf (' nRentetan gabungan ialah% s n n',S1); / * Keluaran: S1 ditambahkan dengan S2 * /

kembali 0;
}

Ringkasan program dan output:

Huraian Teks dihasilkan secara automatik

Huraian Teks dihasilkan secara automatik dengan keyakinan sederhana

Gabungan Dua Rentetan Tanpa Menggunakan Fungsi Perpustakaan

Menggunakan gelung untuk menyalin rentetan kedua di hujung rentetan pertama.

#sertakan

#sertakan

#tentukan BUF_SIZE 256
intutama()
{
charS1[BUF_SIZE],S2[BUF_SIZE]; / * Menyatakan penyangga S1, S2 untuk kedua-dua rentetan * /
intpanjang= 0,i,j; / * Pemboleh ubah yang diperlukan untuk melintasi gelung * /

printf ('Masukkan rentetan pertama'); / * Cetak mesej pengguna untuk memasukkan rentetan pertama * /
fgets (S1,BUF_SIZE,stdin); / * String input pengguna akan disimpan di S1 ​​* /
S1[ strlen (S1)-1] = ' 0';

printf ('Masukkan rentetan kedua'); / * Cetak mesej pengguna untuk memasukkan rentetan Kedua * /
fgets (S2,BUF_SIZE,stdin); / * String input pengguna akan disimpan di S2 * /
S2[ strlen (S2)-1] = ' 0';
/ * Melintasi rentetan pertama untuk mencari panjang S1 * /
untuk(i=0;S1[i]! =' 0';i++)
{
panjang=panjang+1;
}

/ * panjang akan mempunyai akhir S1, bermula dari panjang dan salin keseluruhan S2 ke S1 * /
untuk(i=panjang,j=0;S2[j]! =' 0';i++,j++)
{
S1[i]=S2[j];
S1[i]=' 0';
}

/ * Cetak S1, hasil gabungan * /
printf (' nRentetan gabungan ialah% s n n',S1);
kembali 0;
}

Ringkasan program dan output:

Huraian Teks dihasilkan secara automatik

Huraian Teks dihasilkan secara automatik

Cara Lain Tanpa Fungsi Perpustakaan

Gabungan menggunakan rekursi:

Fungsi stringconcatenate () akan digunakan untuk mendapatkan panjang tali1. Sekiranya S2 kosong, maka watak null akan diberikan kepada S2.

Sekiranya watak null tidak diberikan kepada S2 daripada menambahkan elemen S2 pada akhir S1 iaitu S1 [i + j] = S2 [j], ini akan meningkatkan nilai i dalam rentetan.

Fungsi akan dipanggil sendiri dengan melewati rentetan yang direformasi (S1, S2) sebagai argumen. Ia akan dipanggil berulang kali sehingga S2 kosong.

S1 yang digabungkan akan dicetak oleh utama () sebagai

#sertakan

#sertakan

#tentukan BUF_SIZE 256

/ * fungsi rekursif untuk menerapkan penggabungan tali sesuai keterangan di atas * /
batalrentetan kekalahan(char *S1,char *S2)
{
statik inti=0;
statik intj;
j= strlen (S1);
sekiranya(!S2[i])
{
S2[i]=' 0';
}
yang lain
{
S1[j] =S2[i];
S1[j+1] = ' 0';
i++;
rentetan kekalahan(S1,S2);
}
}
intutama()
{
charS1[BUF_SIZE],S2[BUF_SIZE];

printf ('Masukkan nilai rentetan pertama:'); / * mesej pengguna untuk memasukkan tali pertama * /
fgets (S1,BUF_SIZE,stdin); / * input pengguna rentetan pertama, simpan di S1 ​​* /
S1[ strlen (S1)-1] = ' 0';

printf ('Masukkan nilai rentetan kedua:'); / * mesej pengguna untuk memasukkan rentetan ke-2 * /
fgets (S2,BUF_SIZE,stdin); / * input pengguna rentetan pertama, simpan di S2 * /
S2[ strlen (S2)-1] = ' 0';

rentetan kekalahan(S1,S2); / * Panggil fungsi dengan S1, S2 sebagai parameter * /

printf ('gabungan rentetan ='% s ' n',S1);
kembali 0;
}

Ringkasan program dan output:

Huraian Teks dihasilkan secara automatik

Huraian Teks dihasilkan secara automatik

Gabungan dengan Menggunakan Fungsi

Fungsi strconcatenate () dipanggil oleh utama () untuk menggabungkan dua rentetan.

Fungsi mendapat panjang string1 dengan menggunakan stringlen (string1).

Gabungkan unsur-unsur string2 [i] dalam string1 [i + j]. Langkah ini akan diulang sehingga rentetan kosong. Di sini, kita menghubungkan string2 ke string1 di akhir string1.

Rentetan gabungan (tali 1) akan diterima pada akhir apabila semua lelaran untuk gelung akan dilakukan.

Utama () mencetak rentetan gabungan S1

#sertakan

#sertakan

#tentukan BUF_SIZE 256

/ * berfungsi untuk menerapkan penggabungan tali seperti keterangan di atas * /
batalbertali arus(char *tali1, char*tali2)
{
inti;
intj= strlen (tali1);
untuk(i=0;tali2[i];i++)
{
tali1[i+j]=tali2[i];
}
tali1[i+j]= ' 0';
}
intutama()
{
chartali1[BUF_SIZE],tali2[BUF_SIZE];
printf ('Masukkan rentetan pertama:'); / * Mesej pengguna untuk tali pertama * /
fgets (tali1,BUF_SIZE,stdin); / * Pengguna memasukkan rentetan kedua, disimpan ke dalam string1 * /
tali1[ strlen (tali1)-1] = ' 0';

printf ('Masukkan rentetan kedua:'); / * Mesej pengguna untuk rentetan ke-2 * /
fgets (tali2,BUF_SIZE,stdin); / * Pengguna memasukkan rentetan kedua, disimpan ke dalam string2 * /
tali2[ strlen (tali2)-1] = ' 0';

bertali arus(tali1,tali2); / * Panggil fungsi dengan string1 dan string2 sebagai argumen * /

printf ('Rentetan hasil =% s' n',tali1);
kembali 0;
}

Ringkasan program dan output:

Huraian Teks dihasilkan secara automatik

Huraian Teks dihasilkan secara automatik

Gabungan Rentetan dengan Menggunakan memcpy

Dengan menggunakan fungsi memcpy (), penggabungan tali dilakukan dengan menyalin kata demi kata dari satu penyangga rentetan ke akhir penyangga rentetan yang lain di mana ukuran kata adalah 4 bait mengingat kita berjalan pada mesin 32 bit sementara ketika kita melakukan penggabungan tali oleh menggunakan penggabungan tali dengan menggunakan fungsi strcat (), penggabungan dilakukan dengan menyalin bait demi bait dari satu penyangga rentetan ke penyangga rentetan yang lain.

Pendekatan ini cekap prestasi.

Satu-satunya pertimbangan semasa menggunakan memcpy adalah menjaga ‘ 0’.

Program C untuk mencapai strcat dengan memcpy:

#sertakan

#sertakan

#tentukan BUF_SIZE 256

Batal strcat_memcpy(char *S1, char *S2)
{
intpanjang1,panjang2;
panjang1= strlen (S1);
panjang2= strlen (S2);
memcpy (S1+panjang1,S2,panjang2);
}
intutama()
{

chartali1[BUF_SIZE],tali2[BUF_SIZE];
printf ('Masukkan rentetan pertama:'); / * Mesej pengguna untuk tali pertama * /
fgets (tali1,BUF_SIZE,stdin); / * Pengguna memasukkan rentetan kedua, disimpan ke dalam string1 * /
tali1[ strlen (tali1)-1] = ' 0';

printf ('Masukkan rentetan kedua:'); / * Mesej pengguna untuk rentetan ke-2 * /
fgets (tali2,BUF_SIZE,stdin); / * Pengguna memasukkan rentetan kedua, disimpan ke dalam string2 * /
tali2[ strlen (tali2)-1] = ' 0';

strcat_memcpy(tali1,tali2); / * Panggil fungsi dengan string1 dan string2 sebagai argumen * /

printf ('Rentetan hasil =% s' n',tali1);
kembali 0;


}

Ringkasan program dan output:

Huraian Teks dihasilkan secara automatik

Huraian Teks dihasilkan secara automatik

Kesimpulan:

Dengan semua perbincangan ini kita dapat menyimpulkan gabungan tali di C. Kita telah melihat banyak contoh dan contoh program untuk penggabungan rentetan. Kami akan mengingat item utama: Terdapat dua cara, satu dengan standard C dan yang lain adalah cara yang ditentukan pengguna. Pengguna yang ditentukan boleh terdiri daripada pelbagai jenis, bergantung pada bagaimana pengguna ingin melaksanakan penggabungan rentetan.