پردازش رشته ها

    در اين مبحث تعدادی از توابع پردازش رشته را که در فايل کتابخانه ای 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
 

 

   معرفی کامپيوتروبرنامه نويسی

   ساختارهای کنترلی

   توابع

   آرايه ها

   اشاره گر ها و رشته ها

   کلاسها

   گرانبار کردن عملگر ها

 
 
 
   
 
 
 

حق کپی رایت محفوظ می باشد