در اين مبحث تعدادی از توابع پردازش رشته را که در فايل کتابخانه
ای
string.h
قرار دارند مورد بررسی قرار می دهيم .
char *strcpy (char *s1, const char *s2);
تابع فوق رشته
s2
را در رشته
s1
کپی می کند و مقدار
s1
به عنوان خروجی تابع برگردانده می شود .
char *strncpy (char *s1, const char *s2, size_t n);
تابع فوق تعداد
n
حرف را از رشته
s2
در رشته
s1
کپی می کند و
s1
را به عنوان خروجی برمی گرداند . به برنامه زير توجه کنيد :
#include <iostream.h>
#include <string.h>
void main()
{
char x[] = "Happy Birthday to You";
char y[ 25 ];
char z[ 15 ];
strcpy( y, x ); // copy contents of x into y
cout << "The string in array x is: " << x
<< "\nThe string in array y is: " << y << '\n';
// copy first 14 characters of x into z
strncpy( z, x, 14 ); // does not copy null character
z[ 14 ] = '\0'; // append '\0' to z's contents
cout << "The string in array z is: " << z << endl;
}
خروجی برنامه فوق به صورت زير می باشد :
The string in array x is: Happy Birthday to You
The string in array y is: Happy Birthday to You
The string in array z is: Happy Birthday
char *strcat (char *s1, const char *s2);
تابع فوق رشته
s2
را به انتهای رشته
s1
اضافه می کند و
s1
را به عنوان خروجی بر می گرداند .
char *strncat (char *s1, const char *s2, size_t n);
تابع فوق
n
حرف از رشته
s2
را به رشته
s1
اضافه می کند و
s1
را به عنوان خروجی تابع بر می گرداند. به برنامه زير توجه کنيد :
#include <iostream.h>
#include <string.h>
void main()
{
char s1[ 20 ] = "Happy ";
char s2[] = "New Year ";
char s3[ 40 ] = "";
cout << "s1 = " << s1 << "\ns2 = " << s2;
strcat( s1, s2 ); // concatenate s2 to s1
cout << "\n\nAfter strcat(s1, s2):\ns1 = " << s1
<< "\ns2 = " << s2;
// concatenate first 6 characters of s1 to s3
// and places '\0' after last character
strncat( s3, s1, 6 );
cout << "\n\nAfter strncat(s3, s1, 6):\ns1 = " << s1
<< "\ns3 = " << s3;
strcat( s3, s1 ); // concatenate s1 to s3
cout << "\n\nAfter strcat(s3, s1):\ns1 = " << s1
<< "\ns3 = " << s3 << endl;
}
خروجی برنامه به صورت زير می باشد :
s1 = Happy
s2 = New Year
After strcat(s1, s2):
s1 = Happy New Year
s2 = New Year
After strncat(s3, s1, 6):
s1 = Happy New Year
s3 = Happy
After strcat(s3, s1):
s1 = Happy New Year
s3 = Happy Happy New Year
int strcmp (const char *s1, const char *s2);
تابع فوق رشته
s1
را با رشته
s2
مقايسه می کند . اگر دو رشته برابر بودند مقدار صفر برگردانده می
شود ، اگر رشته
s1
کوچکتر از
s2
باشد عددی منفی و اگر رشته
s1
بزرگتر از
s2
باشد عددی مثبت خروجی تابع خواهند بود .
int strncmp (const char *s1, const char *s2, size_t n);
تابع فوق
n
حرف اول رشته
s1
را با رشته
s2
مقايسه می کند و خروجی تابع همانند خروجی
strcmp
خواهد بود . به برنامه زير توجه کنيد :
#include <iostream.h>
#include <string.h>
void main()
{
char *s1 = "Happy New Year";
char *s2 = "Happy New Year";
char *s3 = "Happy Holidays";
cout << "s1 = " << s1 << "\ns2 = " << s2
<< "\ns3 = " << s3 << "\n\nstrcmp(s1, s2) = "
<< " " << strcmp( s1, s2 )
<< "\nstrcmp(s1, s3) = " << " "
<< strcmp( s1, s3 ) << "\nstrcmp(s3, s1) = "
<< " " << strcmp( s3, s1 );
cout << "\n\nstrncmp(s1, s3, 6) = " << " "
<< strncmp(s1,s3,6) << "\nstrncmp(s1,s3,7) = "
<< " " << strncmp( s1, s3, 7 )
<< "\nstrncmp(s3, s1, 7) = "
<< " " << strncmp( s3, s1, 7 ) << endl;
}
خروجی برنامه فوق به صورت زير می باشد :
s1 = Happy New Year
s2 = Happy New Year
s3 = Happy Holidays
strcmp(s1, s2) = 0
strcmp(s1, s3) = 6
strcmp(s3, s1) = -6
strncmp(s1, s3, 6) = 0
strncmp(s1, s3, 7) = 6
strncmp(s3, s1, 7) = -6
char *strtok (char *s1, const char *s2);
تابع فوق رشته
s1
را توسط
s2
جدا جدا می کند . به برنامه زير توجه کنيد :
#include <iostream.h>
#include <string.h>
void main()
{
char sentence[] ="This is a sentence with 7 tokens";
char *tokenPtr;
cout << "The string to be tokenized is:\n"<<sentence
<< "\n\nThe tokens are:\n\n";
tokenPtr = strtok( sentence, " " );
while ( tokenPtr != NULL ) {
cout << tokenPtr << '\n';
tokenPtr = strtok( NULL, " " ); // get next token
}
cout <<"\nAfter strtok, sentence ="<<sentence<<endl;
}
خروجی برنامه فوق به صورت زير می باشد :
The string to be tokenized is:
This is a sentence with 7 tokens
The tokens are:
This
is
a
sentence
with
7
tokens
After strtok, sentence = This
size_t strlen (const char *s);
تابع فوق طول رشته
s
را به عنوان خروجی بر می گرداند . به برنامه زير توجه کنيد :
#include <iostream.h>
#include <string.h>
void main()
{
char *string1 = "abcdefghijklmnopqrstuvwxyz";
char *string2 = "four";
char *string3 = "Boston";
cout << "The length of \"" << string1
<< "\" is " << strlen( string1 )
<< "\nThe length of \"" << string2
<< "\" is " << strlen( string2 )
<< "\nThe length of \"" << string3
<< "\" is " << strlen( string3 ) << endl;
}
خروجی برنامه فوق به صورت زير می باشد :
The length of "abcdefghijklmnopqrstuvwxyz" is 26
The length of "four" is 4
The length of "Boston" is 6
|