<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 303  文章 - 883  trackbacks - 0
    <2007年11月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    歡迎光臨! 
    閑聊 QQ:1074961813

    隨筆分類(357)

    我管理的群

    公共blog

    • n維空間
    • Email : java3d@126.com 群 : 12999758

    參與管理的論壇

    好友的blog

    我的其他blog

    朋友的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    用c語(yǔ)言實(shí)現(xiàn)函數(shù)strcasestr。函數(shù)原型:char*strcasestr(const char*haystack,const char*needle) 函數(shù)返回字符串指針,指向字符串haystack中第一次出現(xiàn)字符串needle的開始位置,字串匹配時(shí)忽略大小寫,如果沒(méi)有找到字符串,返回null,完成代碼后,給出5個(gè)以上的單元測(cè)試用例,以證明你的程序在各種條件下能夠正確運(yùn)行

    代碼一:

    本人的代碼(編譯環(huán)境VC6.0) 請(qǐng)多多指教! 
    #include<iostream>
    #include
    <string>
    using namespace std;

    char*strcasestr(const char*haystack,const char*needle);
    char*bigtolit(const char*str);

    main()
    {
        
    //五個(gè)的測(cè)試程序
        cout<<strcasestr("abcDEfghi","EF")<<endl;
        cout
    <<strcasestr("111223","11223")<<endl;
        cout
    <<strcasestr("tshihisih","ss")<<endl;
        cout
    <<strcasestr("tshihisih","si")<<endl;
        cout
    <<strcasestr("tshihfsfsah","fsa")<<endl;

      
    return 0;
    }


    char*strcasestr(const char*haystack,const char*needle)
    {
        
    string str = bigtolit(haystack);
        
    string str1 = bigtolit(needle);

        
    int pos = str.find(str1);

        
    if(0 != (pos+1))
        
    {
            
    char *= new char;
            itoa((pos
    +1),c,10);
            
    return c;
        }

        
    else
        
    {
            
    char *= "NULL";
            
    return c;
        }

    }


    char*bigtolit(const char*str)
    {
        
    char *hay = new char;
        memset(hay,
    0,sizeof(hay));

        
    for(int i=0;i<strlen(str);i++)
        
    {   
            hay[i] 
    = tolower(str[i]);     
        }

        
        
    return hay;
    }
     
    運(yùn)行結(jié)果:
    5
    2
    NULL
    7
    8



    代碼二:


    群里IT007朋友寫的

    #include <string.h>
    #include 
    <stdio.h>


    char* strcasestr(const char *haystack,const char *needle);

    main()
    {
        
    char  str1[100];
        
    char  str2[50];
        
    char* str;


        
    do{
            
            system(
    "cls");

            printf(
    "請(qǐng)分別輸入長(zhǎng)度不大于100和長(zhǎng)度不大于50的兩個(gè)字符串(用空格或者回車隔開):\n");
            
            scanf(
    "%s%s",str1,str2);

            
    if(strlen(str1)>100||strlen(str2)>50){
                printf(
    "\n對(duì)不起,你輸入的字符串過(guò)長(zhǎng),請(qǐng)重新輸入再來(lái)!");
                
    continue;
            }


          str
    =strcasestr((const char*)str1,(const char*)str2);

          
    if(!str){
                printf(
    "父串中查找不到與子串匹配的串!\n按Q鍵退出,其它任意鍵繼續(xù)!\n");
                
    continue;
            }


        printf(
    "父串中第一個(gè)與子串匹配串的位置為:%d\n",str-str1+1);

        printf(
    "按Q鍵退出,其它任意鍵繼續(xù)!\n");

        }
    while(getch()!='q');
    }




    //////////////指針版的查找子串在源串中的位置的函數(shù)/////////////////
    //加強(qiáng)錯(cuò)誤處理之后的函數(shù)
    //1。當(dāng)子串為空時(shí)進(jìn)行了處理
    //2。當(dāng)子串比源串要長(zhǎng)時(shí)
    //3。每次比較完之后,父串的指針只向前移動(dòng)一位
    //4。現(xiàn)在可以進(jìn)行勿略大小寫的判斷比較了(最新)
    //5。修正了一個(gè)BUG,即不能進(jìn)行字母A、a、Z、z的忽略大小寫的判斷
    //6。對(duì)忽略大小寫部分的判斷進(jìn)行了代碼,代碼明顯少了些(最新)
    ////////////////////////////////////////////////////////////////////


    /*
    ////////////////////////////

    函數(shù)原型:char *strcasestr(const char *haystack,const char *needle) 

    函數(shù)功能:指向字符串haystack中第一次出現(xiàn)字符串needle的開始位置,
              字串匹配時(shí)忽略大小寫,如果沒(méi)有找到字符串,返回null.

    ///////////////////////////
    */


    char* strcasestr(const char* haystack,const char* needle)
    {
        
    int i=0;
        
    while(*haystack&&*needle){            
              
    while(*haystack==*needle||\
                  
    *haystack==((*needle>='a'&&*needle<='z')?*needle-32:*needle)||\
                  
    *haystack==((*needle>='A'&&*needle<='Z')?*needle+32:*needle)){
                
    if(!*(++needle))return  (char*)haystack-i;
                
    if(!*(++haystack))return 0;
                i
    ++;
            }

            needle
    -=i;
            
    //haystack=haystack-i+1;
            haystack-=(i-1);
            i
    =0;
        }

        
    return 0;
    }


    運(yùn)行結(jié)果:
    請(qǐng)分別輸入長(zhǎng)度不大于100和長(zhǎng)度不大于50的兩個(gè)字符串(用空格或者回車隔開):
    FFadbcdddDD
    DDd
    父串中第一個(gè)與子串匹配串的位置為:
    7
    按Q鍵退出,其它任意鍵繼續(xù)
    !


    地震讓大伙知道:居安思危,才是生存之道。
    posted on 2007-11-16 13:37 小尋 閱讀(2855) 評(píng)論(2)  編輯  收藏 所屬分類: c/c++/C#/pasic/vb/php/asp(.net)/win-cgi/xml...

    FeedBack:
    # re: C字符串處理 2008-02-29 13:01 sPhinX
    “用c語(yǔ)言實(shí)現(xiàn)函數(shù)strcasestr。”

    #include<iostream>
    #include<string>
    using namespace std;

    這好像是題意都沒(méi)有讀懂吧。

    這樣的庫(kù)函數(shù)我是不敢用,你呢?  回復(fù)  更多評(píng)論
      
    # re: C字符串處理[未登錄](méi) 2008-02-29 15:52 尋覓
    呵呵^_^
    非常感謝您的指正
    有時(shí)間 我定改過(guò)來(lái)   回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 精品一区二区三区免费毛片| 亚洲自国产拍揄拍| 久久精品国产亚洲av麻豆色欲| 亚洲AV电影院在线观看| 亚洲欧洲另类春色校园小说| 亚洲天堂男人影院| 另类专区另类专区亚洲| 中文字幕在线免费看| 在线免费中文字幕| 免费的一级片网站| 久久亚洲AV无码西西人体| 亚洲bt加勒比一区二区| 亚洲精品无码成人| 男女一进一出抽搐免费视频| 99久热只有精品视频免费看| 女人18毛片水最多免费观看| jlzzjlzz亚洲乱熟在线播放| 久久精品国产亚洲av影院| 亚洲AV成人一区二区三区观看| jizz日本免费| 无码区日韩特区永久免费系列| 国产网站免费观看| 久久久久久亚洲精品中文字幕| 亚洲六月丁香婷婷综合| 亚洲免费日韩无码系列| 成年人网站免费视频| 免费大黄网站在线看| 亚洲黄色在线视频| 特级无码毛片免费视频| 24小时日本韩国高清免费| 国产一区二区三区免费看| 亚洲电影中文字幕| 国产精品无码亚洲精品2021 | 波多野结衣免费在线观看| 免费午夜爽爽爽WWW视频十八禁 | 午夜亚洲AV日韩AV无码大全| 亚洲精品国产suv一区88| 久久青草免费91观看| 免费人成在线观看网站品爱网日本 | 最近免费中文字幕mv电影| 免费A级毛片无码A|