சி சரம் இணைத்தல்

C String Concatenation



இணைத்தல் என்பது முதல் சரத்தின் முடிவில் இரண்டாவது சரத்தை இணைக்கும் செயல்முறையாகும். இந்த கட்டுரையில் C இல் சரங்களை எவ்வாறு இணைப்பது என்பது பற்றி பல்வேறு முறைகளைப் பயன்படுத்தி விவாதிக்கப் போகிறோம்.

ஸ்ட்ராங்கை இணைப்பதற்குப் பயன்படுத்தப்படும் நிலையான சி நூலகச் செயல்பாடு strcat () ஆகும்.







செயல்பாட்டு முன்மாதிரி:

$கரி * strcat (str1,str2);

str1 முதல் stringand str2 என்பது இரண்டாவது string ஆகும். செயல்பாட்டின் திரும்பும் மதிப்பு இணைக்கப்பட்ட சரத்திற்கு சுட்டிக்காட்டி.



இப்போது, ​​உதாரணத்தின் உதவியுடன் எவ்வாறு ஒருங்கிணைப்பு செய்யப்படுகிறது என்று பார்ப்போம்.



எடுத்துக்காட்டு 1:

$ strcat (str1,str2);
எங்கே str1 பெல்லா
str2 என்பது விட்மேன்

சரத்தை இணைத்த பிறகு,முதல் சரம் இருக்கும்

str1 பெல்லா விட்மேன்
str2 விட்மேன்

சரம் 2 அதே நிலையில் இருக்கும்.





எடுத்துக்காட்டு 2:

$ strcat (str2,str1);
எங்கே str1 பெல்லா
str2 என்பது விட்மேன்

சரத்தை இணைத்த பிறகு,இணைந்த சரம் இருக்கும்

str1 பெல்லா
str2 பெல்லா விட்மேன்

string1 அதே நிலையில் இருக்கும்.

சி தலைப்பு கோப்பில் பிரகடனம்

சரம் கையாளுதல் செயல்பாடுகள் தலைப்பின் கீழ் அறிவிக்கப்படுகின்றன. ஒன்று இணைப்பதற்கு நிலையான செயல்பாட்டைப் பயன்படுத்த விரும்பினால், இந்த தலைப்பு கோப்பு சேர்க்கப்பட வேண்டும்.



எனவே, நாம் இரண்டு வழிகளில் சரம் இணைவை அடைய முடியும். ஒன்று நிலையான சி நூலகச் செயல்பாட்டைப் பயன்படுத்துவதாகும் மற்றொன்று சி நூலகச் செயல்பாட்டைப் பயன்படுத்தாமல் உள்ளது. இரண்டு வழிகளையும் நிரூபிக்க பின்வரும் திட்டங்கள் பின்வருமாறு. சி நூலக செயல்பாட்டைப் பயன்படுத்தாமல் சரம் இணைத்தல் பல வழிகளில் செயல்படுத்தப்படலாம்.

உதாரணத்துடன் வரும் பிரிவுகளில் அதையும் விவாதிப்போம்.

சி நூலகச் செயல்பாட்டைப் பயன்படுத்தி இரண்டு சரங்களை இணைத்தல்

#சேர்க்கிறது

#சேர்க்கிறது

BUF_SIZE 256 ஐ வரையறுக்கவும்
intமுக்கிய()
{
கரிஎஸ் 1[BUF_SIZE],எஸ் 2[BUF_SIZE]; / * இரண்டு சரம் இடையகங்கள் */

printf (முதல் சரத்தை உள்ளிடவும் n'); ] /* பயனர் முதல் சரத்தை உள்ளீடு செய்ய கன்சோலில் செய்தியை அச்சிடவும்*/
fgets (எஸ் 1,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீட்டு சரத்தை S1 இடையகத்தில் சேமிக்கவும் */
எஸ் 1[ strlen (எஸ் 1)-1] = ' 0';

printf (இரண்டாவது சரத்தை உள்ளிடவும் n');/* 2 வது சரத்தை உள்ளிட பயனருக்கு செய்தி அச்சிடவும்*/
fgets (எஸ் 2,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீட்டு சரத்தை S2 இடையகத்தில் சேமிக்கவும் */
எஸ் 2[ strlen (எஸ் 2)-1] = ' 0';

strcat (எஸ் 1,எஸ் 2); / *S1 மற்றும் S2 சரங்களுடன் நிலையான செயல்பாட்டை அழைக்கவும் */

printf (' nஇணைக்கப்பட்ட சரம் %s ஆகும் n n',எஸ் 1); / *வெளியீடு: S1 S2 */உடன் இணைக்கப்பட்டுள்ளது

திரும்ப 0;
}

நிரலின் ஸ்னாப்ஷாட்கள் மற்றும் வெளியீடு:

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

உரை விளக்கம் தானாகவே நடுத்தர நம்பிக்கையுடன் உருவாக்கப்பட்டது

நூலகச் செயல்பாட்டைப் பயன்படுத்தாமல் இரண்டு சரங்களை இணைத்தல்

முதல் சரத்தின் முடிவில் இரண்டாவது சரத்தை நகலெடுக்க லூப் பயன்படுத்துதல்.

#சேர்க்கிறது

#சேர்க்கிறது

BUF_SIZE 256 ஐ வரையறுக்கவும்
intமுக்கிய()
{
கரிஎஸ் 1[BUF_SIZE],எஸ் 2[BUF_SIZE]; /* இரண்டு சரங்களுக்கும் இடையகங்களை S1, S2 என அறிவிக்கவும்*/
intநீளம்= 0,நான்,ஜெ; /*லூப் பயணத்திற்கு தேவையான மாறிகள்*/

printf ('முதல் சரத்தை உள்ளிடவும்'); / * முதல் சரத்தை உள்ளிட பயனர் செய்தியை அச்சிடுங்கள் */
fgets (எஸ் 1,BUF_SIZE,ஸ்ட்டின்); /* பயனர் உள்ளீட்டு சரம் S1*/இல் சேமிக்கப்படும்
எஸ் 1[ strlen (எஸ் 1)-1] = ' 0';

printf ('இரண்டாவது சரத்தை உள்ளிடவும்'); / * இரண்டாவது சரத்தை உள்ளிட பயனர் செய்தியை அச்சிடுங்கள் */
fgets (எஸ் 2,BUF_SIZE,ஸ்ட்டின்); /* பயனர் உள்ளீட்டு சரம் S2*/இல் சேமிக்கப்படும்
எஸ் 2[ strlen (எஸ் 2)-1] = ' 0';
/* S1*/நீளத்தைக் கண்டுபிடிக்க முதல் சரத்தை பயணிக்கவும்
க்கான(நான்=0;எஸ் 1[நான்]! =' 0';நான்++)
{
நீளம்=நீளம்+1;
}

/*நீளம் S1 இன் முடிவைக் கொண்டிருக்கும், நீளத்திலிருந்து தொடங்கி முழு S2 ஐ S1*/க்கு நகலெடுக்கவும்
க்கான(நான்=நீளம்,ஜெ=0;எஸ் 2[ஜெ]! =' 0';நான்++,ஜெ++)
{
எஸ் 1[நான்]=எஸ் 2[ஜெ];
எஸ் 1[நான்]=' 0';
}

/ *எஸ் 1 ஐ அச்சிடுங்கள், ஒருங்கிணைந்த முடிவு */
printf (' nஇணைக்கப்பட்ட சரம் %s ஆகும் n n',எஸ் 1);
திரும்ப 0;
}

நிரலின் ஸ்னாப்ஷாட்கள் மற்றும் வெளியீடு:

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

நூலக செயல்பாடு இல்லாமல் மற்றொரு வழி

மறுசீரமைப்பைப் பயன்படுத்தி இணைத்தல்:

சரம் 1 நீளத்தைப் பெற stringconcatenate () செயல்பாடு பயன்படுத்தப்படும். S2 காலியாக இருந்தால், பூஜ்ய எழுத்து S2 க்கு ஒதுக்கப்படும்.

S1 இன் முடிவில் S2 இன் உறுப்பைச் சேர்ப்பதை விட S2 [i+j] = S2 [j] ஐ விட பூஜ்ய எழுத்து S2 க்கு ஒதுக்கப்படவில்லை என்றால், இது சரத்தில் i இன் மதிப்பை அதிகரிக்கிறது.

சீர்திருத்தப்பட்ட சரங்களை (S1, S2) ஒரு வாதமாக அனுப்புவதன் மூலம் ஒரு செயல்பாடு தன்னை அழைக்கப்படும். S2 காலியாகும் வரை அது மீண்டும் மீண்டும் அழைக்கப்படும்.

இணைக்கப்பட்ட எஸ் 1 பிரதான () ஆக அச்சிடப்படும்

#சேர்க்கிறது

#சேர்க்கிறது

BUF_SIZE 256 ஐ வரையறுக்கவும்

/ * மேலே உள்ள விளக்கத்தின்படி சரம் இணைப்பைச் செயல்படுத்த சுழற்சி செயல்பாடு */
வெற்றிடம்stringconcatenate(கரி *எஸ் 1,கரி *எஸ் 2)
{
நிலையான intநான்=0;
நிலையான intஜெ;
ஜெ= strlen (எஸ் 1);
என்றால்(!எஸ் 2[நான்])
{
எஸ் 2[நான்]=' 0';
}
வேறு
{
எஸ் 1[ஜெ] =எஸ் 2[நான்];
எஸ் 1[ஜெ+1] = ' 0';
நான்++;
stringconcatenate(எஸ் 1,எஸ் 2);
}
}
intமுக்கிய()
{
கரிஎஸ் 1[BUF_SIZE],எஸ் 2[BUF_SIZE];

printf ('முதல் சரத்தின் மதிப்பை உள்ளிடவும்:'); / * 1 வது சரத்தை உள்ளிட பயனர் செய்தி */
fgets (எஸ் 1,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு முதல் சரம், S1 */இல் சேமிக்கவும்
எஸ் 1[ strlen (எஸ் 1)-1] = ' 0';

printf ('இரண்டாவது சரத்தின் மதிப்பை உள்ளிடவும்:'); / * 2 வது சரத்தை உள்ளிட பயனர் செய்தி */
fgets (எஸ் 2,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு முதல் சரம், S2 */இல் சேமிக்கவும்
எஸ் 2[ strlen (எஸ் 2)-1] = ' 0';

stringconcatenate(எஸ் 1,எஸ் 2); / * S1, S2 உடன் அளவுருவாக செயல்பாட்டை அழைக்கவும் */

printf (சரங்களின் சேர்க்கை = '%s' n',எஸ் 1);
திரும்ப 0;
}

நிரலின் ஸ்னாப்ஷாட்கள் மற்றும் வெளியீடு:

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

செயல்பாடுகளைப் பயன்படுத்தி இணைத்தல்

செயல்பாடு strconcatenate () இரண்டு சரங்களை இணைக்க பிரதான () மூலம் அழைக்கப்படுகிறது.

ஸ்ட்ரிங்லென் (ஸ்ட்ரிங் 1) ஐப் பயன்படுத்தி செயல்பாடு சரம் 1 நீளத்தைப் பெறுகிறது.

String1 [i+j] இல் string2 [i] உறுப்புகளை இணைக்கவும். சரம் காலியாகும் வரை இந்த நடவடிக்கை மீண்டும் செய்யப்படும். இங்கே, சரம் 1 இன் முடிவில் சரம் 2 முதல் சரம் 1 வரை இணைக்கிறோம்.

வளையத்திற்கான அனைத்து மறு செய்கைகளும் செய்யப்படும்போது இணைக்கப்பட்ட சரம் (சரம் 1) முடிவிற்குள் பெறப்படும்.

முக்கிய () இணைக்கப்பட்ட சரம் S1 ஐ அச்சிடுகிறது

#சேர்க்கிறது

#சேர்க்கிறது

BUF_SIZE 256 ஐ வரையறுக்கவும்

/ * மேலே உள்ள விளக்கத்தின்படி சரம் இணைப்பை செயல்படுத்துவதற்கான செயல்பாடு */
வெற்றிடம்strconcatenate(கரி *சரம் 1, கரி*சரம் 2)
{
intநான்;
intஜெ= strlen (சரம் 1);
க்கான(நான்=0;லேசான கயிறு2[நான்];நான்++)
{
சரம் 1[நான்+ஜெ]=சரம் 2[நான்];
}
சரம் 1[நான்+ஜெ]= ' 0';
}
intமுக்கிய()
{
கரிசரம் 1[BUF_SIZE],சரம் 2[BUF_SIZE];
printf ('முதல் சரத்தை உள்ளிடவும்:'); / * 1 வது சரத்திற்கான பயனர் செய்தி */
fgets (சரம் 1,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு இரண்டாவது சரம், string1 */இல் சேமிக்கப்படுகிறது
சரம் 1[ strlen (சரம் 1)-1] = ' 0';

printf (இரண்டாவது சரத்தை உள்ளிடவும்: '); / * 2 வது சரத்திற்கான பயனர் செய்தி */
fgets (சரம் 2,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு இரண்டாவது சரம், string2 */இல் சேமிக்கப்படுகிறது
சரம் 2[ strlen (சரம் 2)-1] = ' 0';

strconcatenate(சரம் 1,சரம் 2); /* String1 மற்றும் string2 உடன் வாதங்களாக செயல்பாட்டை அழைக்கவும்*/

printf ('முடிவு சரம் = %s' n',சரம் 1);
திரும்ப 0;
}

நிரலின் ஸ்னாப்ஷாட்கள் மற்றும் வெளியீடு:

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

மெம்கிபி பயன்படுத்தி சரம் இணைத்தல்

மெம்கிபி () செயல்பாட்டைப் பயன்படுத்துவதன் மூலம், ஒரு சரம் இடையகத்திலிருந்து மற்றொரு சரம் இடையகத்தின் முடிவுக்கு வார்த்தையின் வார்த்தையை நகலெடுப்பதன் மூலம் சரம் ஒருங்கிணைத்தல் செய்யப்படுகிறது, அங்கு நாம் 4 பிட்கள் என்று கருதுகிறோம். strcat () செயல்பாட்டைப் பயன்படுத்தி சரம் இணைப்பைப் பயன்படுத்தி, ஒரு சரம் இடையகத்திலிருந்து மற்றொரு சரம் இடையகத்திற்கு பைட் மூலம் பைட்டை நகலெடுப்பதன் மூலம் இணைத்தல் செய்யப்படுகிறது.

இந்த அணுகுமுறை செயல்திறன் மிக்கது.

மெம்க்பியை பயன்படுத்தும் போது கருத்தில் கொள்ள வேண்டிய ஒரே விஷயம் ‘ 0’ ஐ கவனிப்பது.

Mmcpy உடன் strcat ஐ அடைய C திட்டம்:

#சேர்க்கிறது

#சேர்க்கிறது

BUF_SIZE 256 ஐ வரையறுக்கவும்

வெற்றிடமான strcat_memcpy(கரி *எஸ் 1, கரி *எஸ் 2)
{
intநீளம் 1,நீளம் 2;
நீளம் 1= strlen (எஸ் 1);
நீளம் 2= strlen (எஸ் 2);
மெம்கிபி (எஸ் 1+நீளம் 1,எஸ் 2,நீளம் 2);
}
intமுக்கிய()
{

கரிசரம் 1[BUF_SIZE],சரம் 2[BUF_SIZE];
printf ('முதல் சரத்தை உள்ளிடவும்:'); / * 1 வது சரத்திற்கான பயனர் செய்தி */
fgets (சரம் 1,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு இரண்டாவது சரம், string1 */இல் சேமிக்கப்படுகிறது
சரம் 1[ strlen (சரம் 1)-1] = ' 0';

printf (இரண்டாவது சரத்தை உள்ளிடவும்: '); / * 2 வது சரத்திற்கான பயனர் செய்தி */
fgets (சரம் 2,BUF_SIZE,ஸ்ட்டின்); / * பயனர் உள்ளீடு இரண்டாவது சரம், string2 */இல் சேமிக்கப்படுகிறது
சரம் 2[ strlen (சரம் 2)-1] = ' 0';

strcat_memcpy(சரம் 1,சரம் 2); /* String1 மற்றும் string2 உடன் வாதங்களாக செயல்பாட்டை அழைக்கவும்*/

printf ('முடிவு சரம் = %s' n',சரம் 1);
திரும்ப 0;


}

நிரலின் ஸ்னாப்ஷாட்கள் மற்றும் வெளியீடு:

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

உரை விளக்கம் தானாக உருவாக்கப்பட்டது

முடிவுரை:

இந்த அனைத்து கலந்துரையாடலிலும் நாம் C இல் சரம் இணைப்பை முடிக்க முடியும். சரம் இணைப்பதற்கான பல உதாரணங்கள் மற்றும் மாதிரி திட்டங்களை நாங்கள் பார்த்திருக்கிறோம். முக்கிய பொருட்களை நாங்கள் நினைவு கூர்வோம்: இரண்டு வழிகள் உள்ளன, ஒன்று சி தரநிலை மற்றும் மற்றொன்று பயனர் வரையறுக்கப்பட்ட வழி. வரையறுக்கப்பட்ட பயனர் மேலும் பல வகைகளாக இருக்கலாம், பயனர் சரம் இணைப்பை எவ்வாறு செயல்படுத்த விரும்புகிறார் என்பதைப் பொறுத்தது.