تبلیغات
برنامه نویسی C++ - آموزش و سورس برنامه ی سی پلاس پلاس - مطالب ابر strchr
برترین پیشنهاد

برنامه نویسی C++ - آموزش و سورس برنامه ی سی پلاس پلاس

بزرگترین پایگاه آموزش سی پلاس پلاس و سورس تمام برنامه های آن

برنامه ای که یادآوری: نحوه عملکرد توابع strchr و strrchr را نشان میدهد:

#include <iostream>
#include <string>
using namespace std;
void main(void)
{
   char ch='r';
   char string[] =
"The quick brown dog jumps over the lazy fox";
   char fmt1[] =
"         1         2         3         4         5";
   char fmt2[] =
"12345678901234567890123456789012345678901234567890";
   char* pdest;
   int result;
   cout<<"String to be searched: \n\t\t"<<string<<"\n";
    cout<<"\t\t"<<fmt1<<"\n\t\t"<<fmt2<<"\n\n";
     cout<<"Search char:\t"<<ch<<"\n";
/* Search forward. */
   pdest=strchr(string, ch);
    result=pdest - string + 1;
     if( pdest != NULL )
       cout<<"Result:\tfirst "<<ch
           <<" found at position "<<result<<"\n\n";
    else
       cout<<"Result:\t"<<ch<<" not found\n";
/* Search backward. */
   pdest=strrchr(string, ch);
    result=pdest - string + 1;
     if( pdest != NULL )
       cout<<"Result:\tfirst "<<ch
           <<" found at position "<<result<<"\n\n";
     else
       cout<<"Result:\t"<<ch<<" not found\n";
}

//end


پیاده سازی تابع strrchr

int strlen(const char *s)
{
    for(int i=0;s[i];++i);
    return i;
}
char *strrchr(const char *s,int c)
{
    long i;
    for(i=strlen(s)-1;i>=0 && s[i]!=(char)c;i--);
    if(i<0)
        return NULL;
    else
        return (char *)&s[i];
}

//end


پیاده سازی توابع strlen و strchr

int strlen(const char *s)
{
    for(int i=0;s[i];++i);
    return i;
}
char *strchr(const char *s,int c)
{
    unsigned i;
    for(i=0;i<strlen(s) && s[i]!=(char)c;++i);
    if(i==strlen(s))
        return NULL;
    else
        return (char *)&s[i];
}

//end


تابع strchr: این تابع اولین مکان یک کاراکتر را در یک رشته یافته و یک اشاره گر از نوع char* به مکان مورد نظر در رشته برمیگرداند. در صورتی که کاراکتر مورد نظر یافت نشود، مقدار NULL بازگردانده میشود. این به شکل کلی زیر به کار میرود:

;(کد اسکی کاراکتر مورد جستجو ,رشته مورد نظر)char* position=strchr


تابع strrchr: تنها تفاوت این تابع با strchr این است که آخرین مکان وقوع کاراکتر را در یک رشته برمیگرداند. به عبارت دیگر این تابع رشته را از انتها برای یافتن نخستین وقوع کاراکتر موردنظر جستجو میکند. به عنوان مثال دستور زیر رشته str را جهت یافتن آخرین وقوع کاراکتر 'b' مورد جستجو قرار میدهد:

char ch='b';
char* position=strrchr(str, ch);
//end